Integrations

clipsdk works anywhere that can send HTTPS

There's no plugin and no SDK. One POST starts a job, and a held-open call or a signed webhook brings the clips back. Below are copy-paste setups for 11 tools, from n8n and Zapier to Workers and Lovable, all the same call at $0.03 per source minute.

Pick your tool

Setups you can copy and paste

Each one is the same API call, written the way that tool likes it.

Automation

n8n

HTTP Request node to start the job, Wait node to catch the webhook. Comes with a ready-made workflow.

Guide and workflow file
Automation

Make

The HTTP app's Make a request module, plus a Custom webhook scenario for the result.

Automation

Zapier

Webhooks by Zapier: a Custom Request action to start, a Catch Hook Zap for the result.

Automation

Pipedream

A Node.js code step that calls clipsdk, and an HTTP trigger workflow as the webhook.

Code

Python

requests and nothing else. Hold the call open for up to 300 seconds, then poll.

Code

Node.js

fetch to start the job and node:crypto to check the webhook signature.

Serverless

Cloudflare Workers

A Worker that takes the webhook and checks the signature with Web Crypto.

Serverless

Supabase Edge Functions

Pass a signed Storage URL as video_url and save the clips from a second function.

Serverless

Vercel Functions

A route handler that keeps your key on the server and starts jobs for your app.

AI builder

Lovable

Ask for a Supabase Edge Function that calls clipsdk. Paste this prompt.

AI builder

Bolt

Ask for two server routes: one starts a job, one checks on it. Paste this prompt.

HTTPS

Anything else

Go, Ruby, PHP, Rust, a shell script. If it can send a POST with a header, it works.

How it works

Every integration is three steps

  1. 01

    Send the video

    POST /v1/clips with a video_url. Files without a URL go through POST /v1/uploads first. MP4, MOV, WebM, MKV, up to 3 hours and 5 GB.

  2. 02

    Get the result

    Hold the call open, poll the job, or let clipsdk post the finished job to your webhook_url.

  3. 03

    Use the clips

    Each clip has a score, a title, a post caption, the MP4 and SRT and VTT files. The links are public for 7 days.

Three ways to get the result
WayGood for
Hold the call openPOST /v1/clips?wait=300Scripts and short videos. You get 200 and the clips if the job ends within 300 seconds, or 202 and a Location header to poll.
PollGET /v1/jobs/{id}?wait=60Cron jobs and tools without a public URL. Ask again until the status is succeeded or failed.
Webhook"webhook_url": "https://..."Long episodes and automations. clipsdk posts the finished job to your URL, signed, with up to 3 tries.

Without wait, POST /v1/clips holds for 60 seconds and GET /v1/jobs/{id} answers right away. You can send it as a Prefer: wait=N header too. In Node.js, fetch gives up at 300 seconds, so ask for 290 at most there. How waiting works

Webhooks

Signed, retried and easy to check

When a job ends, clipsdk posts it to your webhook_url. It tries 3 times: right away, 2 seconds later, then 8 seconds after that. Each try waits 15 seconds for a 2xx reply.

Clipsdk-Signature
Hex HMAC-SHA256 of "<t>.<raw body>", keyed with your whsec_ secret
Clipsdk-Attempt
Delivery attempt, 1 to 3
Clipsdk-Job-Id
The job this event is about
Idempotency-Key
Stays the same on every retry, so you can drop duplicates
POSTyour webhook_urlShortened, 1 of 6 clips
{
  "event": "job.succeeded",
  "job": {
    "id": "job_q8w2e4r6t1y3u5i7o9p0",
    "status": "succeeded",
    "result": {
      "source": {
        "duration_s": 3486.2,
        "language": "en",
        "speakers": null
      },
      "clips": [
        {
          "rank": 1,
          "score": 96,
          "title": "We were three weeks from shutting down",
          "video": "https://api.clipsdk.com/f/out/job_q8w2e4r6t1y3u5i7o9p0/clip-1.mp4",
          "srt": "https://api.clipsdk.com/f/out/job_q8w2e4r6t1y3u5i7o9p0/clip-1.srt",
          "vtt": "https://api.clipsdk.com/f/out/job_q8w2e4r6t1y3u5i7o9p0/clip-1.vtt"
        }
      ]
    }
  }
}

Code to check the signature in Node.js and Python is in the webhook docs.

FAQ

Questions, answered

Is there an official n8n node, Make app or Zapier app?

No. clipsdk is a plain HTTPS API, so you use each tool's HTTP step: the HTTP Request node in n8n, the HTTP app in Make and Webhooks by Zapier in Zapier.

Is there an SDK?

Not yet, and you don't need one. Any HTTP client works: requests in Python, fetch in Node.js, Deno, Workers and Bun, or curl in a shell script.

How do I get the clips back?

Three ways. Hold the create call open for up to 300 seconds with wait, poll GET /v1/jobs/{id}, or pass a webhook_url and clipsdk posts the finished job to it.

How do I check that a webhook came from clipsdk?

Each webhook has a Clipsdk-Signature header with t and v1. Compute HMAC-SHA256 of t, a dot and the raw body with your whsec_ secret, compare the hex to v1, and reject it if t is more than 300 seconds off.

What happens if my webhook endpoint is down?

clipsdk tries 3 times: right away, 2 seconds after the first failure and 8 seconds after the second. It waits 15 seconds for each reply. If every try fails, you can still fetch the job with GET /v1/jobs/{id}.

Can I call clipsdk straight from a browser app?

No. Your API key would be visible to anyone. Call it from a server function, like a Supabase Edge Function, a Worker or a server route, and keep the key in a secret.

Start free

Your back catalog is full of shorts

Your first $1 is free: 33 minutes of video, every clip included.

Two studio microphones on a desk in a dark room lit by a red glow