ShortsCutter API
Submit long videos, poll for finished Shorts, and check your quota from your own tools. The API is included with every ShortsCutter subscription and draws on the same quota pool as the website — including team seats and rollover — so the two channels can never double-spend your allowance.
Authentication
Create an API key in My clips (Account panel → API keys). Keys look like sc_live_…, are shown once at creation, and only a hash is stored afterwards. Send the key as a Bearer token on every request:
Authorization: Bearer sc_live_…
Base URL: https://shortscutter-api.dylan-xm.workers.dev. Revoke a key in My clips at any time — revocation is immediate. Each key may make up to 60 requests per minute.
Endpoints
| Method & path | What it does |
|---|---|
POST /api/v1/jobs | Submit a long video for cutting. Returns 201 with the job id. |
GET /api/v1/jobs/:id | Job status (queued → running → done/failed) plus its clips with file URLs, scores and score reasons once done. |
GET /api/v1/usage | Current period usage: base allowance, rolled-in slots, used, remaining. |
Submit a job
curl -X POST https://shortscutter-api.dylan-xm.workers.dev/api/v1/jobs \
-H "Authorization: Bearer sc_live_…" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://www.youtube.com/watch?v=…",
"size": "9:16",
"prompt": "focus on the pricing discussion"
}'
video_url (required) is a public http(s) link, up to 500 characters. size (optional) is 9:16, 1:1, 4:5, 16:9, or a custom WxH between 100 and 4000 px per side. prompt (optional, up to 200 characters) steers which moments get picked. Response:
{ "ok": true, "id": 123, "kind": "paid", "status": "queued" }
Poll a job
curl https://shortscutter-api.dylan-xm.workers.dev/api/v1/jobs/123 \ -H "Authorization: Bearer sc_live_…"
{ "ok": true,
"job": { "id": 123, "status": "done", "size": "9:16", "kind": "paid", … },
"clips": [ { "id": 456, "idx": 1, "file_url": "https://…", "duration": 42.5,
"score": 87, "reasons": "[…]", "title": "…" } ] }
Check usage
curl https://shortscutter-api.dylan-xm.workers.dev/api/v1/usage \ -H "Authorization: Bearer sc_live_…"
{ "ok": true, "period": "2026-11", "base": 30, "rolled_in": 8,
"used": 12, "allowance": 38, "remaining": 26, "pool_size": 2 }
Quota & rollover rules
- Every subscription includes 30 long-video jobs per calendar month (UTC), up to 3 Shorts from each.
- Unused slots roll over for 1 month. Your balance can build up to 60 (30 monthly + up to 30 rolled over). Rolled-over slots are spent first and expire at the end of the month they land in; only unused base slots roll on, so credit never compounds.
- Team members (3 seats total, owner included) cut from the same pool. Jobs submitted through the API count exactly like jobs submitted on the website — one counter, no double-spend.
- When the pool is exhausted, submissions return
429with your current usage attached.
Errors
| Status | Meaning |
|---|---|
400 | invalid video url / invalid size / bad json — fix the request body. |
401 | invalid api key — the key is unknown or revoked. |
403 | The account behind the key has no active subscription, or its free sample is spent. |
404 | not found — no such job in your pool. |
429 | monthly quota reached (with a usage object) or rate_limited (over 60 requests/minute for this key). |
Keys are account credentials. Treat them like passwords: keep them in a secrets manager, never commit them, and revoke immediately if one leaks. Questions: [email protected].