Developer API

Two endpoints and a webhook.

Submit a video, poll for clips, or let us call you when they are ready. Every setting the dashboard exposes is a JSON key. API access comes with Pro and Business; create keys under Settings.

Authentication

Send your key as a bearer token. Keys start with cly_live_ and are shown once.

Authorization: Bearer cly_live_…

Rate limit: 60 requests a minute per key, 20 project submissions an hour per account.

Submit a video

POST /api/v1/projects — returns 202 with the project id. Credits are charged once the transcript is analysed.

curl -X POST https://clypt.pro/api/v1/projects \
  -H "Authorization: Bearer cly_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://youtube.com/watch?v=…",
    "title": "Episode 42",
    "settings": {
      "clipCount": 8,
      "aspect": "9:16",
      "captionStyle": "punch",
      "captionLanguage": "es",
      "prompt": "moments about pricing"
    }
  }'

# → { "id": "prj_01…", "status": "queued" }

Settings

KeyTypeNotes
clipCountnumber 1–20How many clips to return. Default 10.
minSeconds / maxSecondsnumberClip length window. Default 20–60. Capped by your plan.
aspect"9:16" | "1:1" | "4:5" | "16:9"Output frame. Ratios outside your plan fall back to 9:16.
resolution"720" | "1080" | "2160"4K is Pro and above. Default 1080.
captionStyle"punch" | "clean" | "neon" | "boxed" | "reveal" | "headline" | "subtle" | "typewriter"Caption look. Default "punch".
captionLanguageISO code, e.g. "es"Translate the burned-in captions. Empty = as spoken. Starter and above.
promptstringSteer moment finding: "only the pricing objections, skip the sponsor read".
keywordsstring[]Topics to prioritise.
rangeStart / rangeEndsecondsOnly clip inside this window of the source.
removeFillersbooleanDrop um / uh / like from captions. Default true.
removeSilencebooleanCut dead air from the video itself. Starter and above.
autoReframebooleanFace-tracked reframe. Default true.
splitScreenbooleanStack two tracked speakers. Pro and above.
autoZoombooleanPunch in on emphasis words. Default true.
hookTitlebooleanHook line as a title card. Default true.
keywordHighlightbooleanAccent-colour numbers and power words. Default true.
censorbooleanBleep and star out profanity. Starter and above.
enhanceSpeechbooleanDenoise and level the voice. Starter and above.
brandIdstringA brand kit id from the dashboard. Default: your default kit.

Poll for clips

GET /api/v1/projects/:id — status, progress and, once rendered, every clip with download links for the video and its captions.

{
  "id": "prj_01…",
  "status": "ready",              // queued | ingesting | transcribing | analyzing | rendering | ready | failed
  "progress": 1,
  "duration": 3612.4,
  "credits_spent": 61,
  "clips": [
    {
      "id": "clp_01…",
      "title": "Nobody tells you the first 90 days cost more than year one",
      "hook": "…", "summary": "…", "hashtags": ["#founders", "#pricing"],
      "start_s": 812.1, "end_s": 851.9,
      "score": 86,
      "score_parts": { "hook": 91, "standalone": 84, "payoff": 78, "emotion": 72, "flow": 88 },
      "aspect": "9:16", "layout": "single", "render_state": "ready",
      "download_url": "https://clypt.pro/api/media/renders/…?download",
      "captions": { "srt": "…/captions?format=srt", "vtt": "…", "txt": "…" },
      "post_copy": { "youtube": { "title": "…", "description": "…", "tags": [] }, "tiktok": { "caption": "…" }, … }
    }
  ]
}

GET /api/v1/projects lists your last 50 jobs. Download links use the same key.

Webhook

Set a URL under Settings and we POST project.ready or project.failed with the same payload as the poll endpoint. Requests carry X-Clypt-Event and X-Clypt-Signature, an HMAC-SHA256 of the raw body using the signing secret shown next to your URL.

import crypto from "node:crypto";

export function verify(rawBody, signatureHeader, secret) {
  const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
}

We retry once after 3 seconds on a non-2xx response, then give up. Zapier, Make and n8n webhook triggers all work without any code.

Errors

API reference · Clypt