Skip to main content
Before generating clips, you need a video_id. There are two ways to get one, and both converge on the same next step: calling POST /clips with that video_id (see the Quickstart).
The video must be at least 1 minute long. The maximum duration depends on your plan.

Option A: by public URL

The simplest way. Send the URL of a public video (YouTube, TikTok, Twitch, Kick, Vimeo, etc.) for analysis. Analyzing costs no credits.
The response includes video_id, credits_cost (what you will be charged when you submit), current_balance, and the video’s title/duration. Save the video_id and continue to POST /clips.

Option B: uploading your own file

For videos from your computer, the upload is done in three steps with a presigned URL, sending the bytes directly to storage.
Upload limits: maximum 2 GB and extensions .mp4, .mov, .webm, .mkv. The presigned URL expires in 1 hour.
1

Start the upload

Declare the file name and the content type. The response includes the video_id, the upload_url (where to send the bytes), and expires_in (seconds until it expires).
2

Send the bytes to the upload_url

Do a PUT of the file directly to the upload_url. Do not send your API key here (the URL is already signed), and use the same Content-Type you declared in the previous step.
The PUT must return 200 before you continue.
3

Complete the upload

Register the upload, providing the dimensions and duration of the file (measured on your side). The response includes the video metadata and credits_cost, just like analysis by URL.
Only call this step after the PUT returns 200. If the file is not in storage, the response is 404 FILE_NOT_FOUND. If the duration is outside the limits, it returns 400 VIDEO_TOO_SHORT or VIDEO_TOO_LONG (with max_duration).

Next step

With the video_id in hand (from either option), submit it for clipping:

Continue in the Quickstart from the “Send for clipping” step (POST /clips).
Last modified on June 2, 2026