Cut.ProDocs
Guides

API overview

Automate AI video clipping and rendering programmatically

The CutPro API automates the whole AI clipping flow: you send a video link, the AI finds the best moments, and you get the clips ready to render and publish, all over HTTP requests.

Base URL

Every route uses this prefix:

https://api.cut.pro/api/v1

Authentication is a key in the X-Api-Key header, and API access comes with the Gratuito, Básico, Plus, and Pro plans. See Authentication.

The typical flow

The API follows the same path as the studio, in steps you drive one request at a time:

Analyze (free). Preview the metadata and the credit cost of a public link, without being charged.

POST /clips/info

Submit for clipping. Send the video in. Credits are charged right away.

POST /clips

Poll the submission. Keep polling until status turns completed or failed.

GET /clips/{videoId}/submissions/{submissionId}

Fetch the generated clips. Take what the AI produced, with timestamps, score and URLs.

GET /clips/{videoId}/submissions/{submissionId}/clips

Apply a template (optional). Apply one of your templates to the clips in bulk.

POST /clips/{videoId}/submissions/{submissionId}/apply_template

Render each clip. Produce the final MP4 and poll until it is done.

POST .../clips/{clipId}/render and GET /renders/{renderId}

Download and publish. Download the rendered video and, if you want, publish it.

GET /renders/{renderId}/download and POST /posts

The Quickstart walks those seven steps with real requests and the response of each one.

Conventions

Learning one route is learning them all. The whole API follows the same six rules:

  1. Everything is snake_case, in every body, in and out.
  2. A resource's own id is always id. A pointer to another resource carries its name: video_id, edit_id, connection_id.
  3. Every date is ISO 8601, and every duration or offset is in seconds.
  4. Every listing answers the same way: { "<resource>": [...], "pagination": {...} }, with page and limit in the query.
  5. States are lowercase (queued, completed), errors are uppercase (VIDEO_TOO_LONG).
  6. Every error has the same shape: { "code": ..., "extra": {...} }, and never a ready-made sentence.

The exception is deliberate: the metadata of POST /posts keeps each network's own field names (privacyLevel, categoryId, privacyStatus), because they go to the platform exactly as you wrote them. Renaming them there would only hide what is actually sent.

Errors

Response 402
{
  "code": "INSUFFICIENT_CREDITS",
  "extra": { "credits_needed": 121, "current_balance": 40, "is_reclip": false, "scope": "workspace", "is_owner": true }
}
StatusWhen it happensExample codes
400Invalid body or an operation out of orderVALIDATION_ERROR, TIMEFRAME_OUT_OF_BOUNDS, INVALID_METADATA
401Key missing, revoked or invalidUNAUTHORIZED
402Not enough credits for the submissionINSUFFICIENT_CREDITS
403The video or the resource is not reachablePRIVATE_VIDEO, REGION_BLOCKED, DAILY_LIMIT_EXCEEDED
404The resource does not exist in this workspaceVIDEO_NOT_FOUND, RENDER_NOT_FOUND
409The resource is in a state that rejects the operationVIDEO_ALREADY_PROCESSING, DUPLICATE_POST
410The result existed and has expiredSUBMISSION_EXPIRED, RENDER_FILE_EXPIRED
422The link is valid but the video cannot be clippedLIVE_STREAM, PLAYLIST_URL, AUDIO_ONLY
429Rate limit reachedRATE_LIMIT_EXCEEDED

When the code is VALIDATION_ERROR, extra.errors names the field that failed. The Errors and limits page has the handling written out, with retry and backoff, and the codes of each route are in the reference, response by response.

Quality and rights

The AI picks moments by what is said, not by what is shown: a video with clean audio makes better clips. Only use content you have permission to edit. CutPro does not remove third-party watermarks.

Next steps

On this page