MakeMyContent Clips API
REST + MCP for rights-gated clipping. Machine-readable spec: /openapi.json (OpenAPI 3.1). Agent quickstart: /docs/agents.
Authentication
Send Authorization: Bearer cw_... (or X-Api-Key). Create a key from your account. No key or a bad key: 401. A key without the needed scope (read / write / billing): 403 insufficient_scope. Unknown job or clip: 404. Bad input: 400.
Endpoints
| Operation | What | Scope |
|---|---|---|
GET /health | Liveness | - |
GET /api/v1/programs | List opt-in clipper programmes | read |
POST /api/v1/rights/check | Ask the rights gate whether a source may be clipped (200 ALLOW, 403 REFUSE) | read |
GET /api/v1/grants | List your rights grants | read |
POST /api/v1/grants | Register a rights grant (customer keys: kind=owned, self_file) | write |
POST /api/v1/uploads | Multipart upload (field `file`) of a source video | write |
POST /api/v1/uploads/init | Start a chunked upload | write |
POST /api/v1/uploads/{upload_id}/chunk/{index} | Send one raw-bytes chunk (not rate-limited per call) | write |
POST /api/v1/uploads/{upload_id}/complete | Finish a chunked upload | write |
POST /api/v1/uploads/{upload_id}/abort | Abort a chunked upload (idempotent) | write |
GET /api/v1/uploads/{upload_id} | Chunked upload status | read |
POST /api/v1/clips | Create 9:16 captioned clips from an uploaded source (counts 1 source video) | write |
POST /api/v1/jobs | One-call path: attestation + uploaded file in, gated job out (counts 1 source video) | write |
GET /api/v1/clips/{jid} | Job status; each finished clip carries download_url and thumbnail_url | read |
GET /api/v1/clips/{jid}/files | Download a rendered clip or its thumbnail | read |
POST /api/v1/schedule | Record a publish intent for the Distributor (publishes nothing) | write |
GET /api/v1/tiktok/draft | TikTok creator_info draft (never posts) | read |
GET /api/v1/usage | Plan, monthly source-video usage, limit | read |
GET /v1/usage | Usage incl. metered call counts and the price list | read |
GET /v1/export | Export all your jobs, grants, schedule intents and usage events (json, or csv=jobs) | read |
DELETE /api/v1/account | DESTRUCTIVE: delete your jobs, clips, uploads and revoke this key | write |
POST /mcp | Remote MCP server (JSON-RPC 2.0: initialize, tools/list, tools/call). create_clips counts 1 source video. | read (tools/list) / write (write tools) |
Errors
Always JSON {"error": code, "detail": text}.
Rate limits
120 requests/minute per key, 20/minute per IP when unauthenticated. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (seconds). Over the limit: 429 with Retry-After.
Idempotency
POST /api/v1/clips, /jobs, /schedule, /grants accept Idempotency-Key; a retry with the same key and body returns the first response for 24 hours.
Prices
| Plan | Price | Included | Stripe lookup key |
|---|---|---|---|
| Free | $0 / month | 2 source videos / month | - |
| Solo | $9 / month | 10 source videos / month | f5312_clipwright_creator |
| Clipper | $19 / month | 40 source videos / month | f5312_clipwright_clipper |
| Agency | $49 / month | 150 source videos / month | f5312_clipwright_agency |
Unit: one source video (a job created via POST /api/v1/clips, /api/v1/jobs or MCP clipwright_create_clips). Clips per source, captions, thumbnails and all reads are unmetered. Past the quota the call returns 402 quota_exceeded; nothing is billed as overage.
Your data
GET /v1/export returns everything stored for your key as JSON (?format=csv for jobs). DELETE /api/v1/account with {"confirm":true} deletes jobs, clips and uploads and revokes the key.