Cerul
Log in

Quickstart

Copy manually

Clipboard access was denied. Copy the selected text below.

Replace YOUR_API_KEY with a Key created in Console, then run this request to list your videos. No upload is needed to verify access.

Request
curl --fail-with-body "https://api.cerul.ai/videos?limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

The response stores videos in data, newest first. An empty list is normal in a new workspace. With a ready video, continue to Search; otherwise upload a video.

Request parameters

FieldType · RequiredDescription
Authorizationstring · RequiredBearer YOUR_API_KEY
limitinteger · Optional≥ 1; ≤ 500; default: 100
cursorstring · OptionalminLength: 1; maxLength: 512
qstring · OptionalminLength: 1; maxLength: 200
statusstring · Optionalpattern: ^(uploading/uploaded/processing/ready/failed)(,(uploading/uploaded/processing/ready/failed))*$

Required scopes: videos:read.

Reading the response

data[].id identifies the video. filename is its original name; status reports processing progress. ready means searchable; playable means the web-playable copy is ready, which can happen first. indexing reports speech, screen_text and visual separately (status indexed, absent or failed, with count and reason), so a ready video may still lack one type.

Lists return at most limit videos (default 100, maximum 500). While next_cursor is not null, pass it back as cursor to read the next page. q finds a video by filename or exact ID; status filters by comma-separated states.

Complete example

Download complete example

Run the snippets in the same Bash session with curl (7.76+), jq, Python 3 and ffprobe installed. Set talk.mp4 to your video. Processing and search consume credits; preserve the run ID when retrying unchanged requests.

Use https://api.cerul.ai without a /v1 prefix and send Authorization: Bearer <API_KEY>. Verify your account email before uploading, indexing, searching or exporting. Keys stay on your server; a Workspace shares one cloud wallet across Keys and authenticated app/CLI calls.

Retries and errors

Send an Idempotency-Key of 8–200 characters where required, including search. Keep the same key and input after an ambiguous response; use a new key for a different operation/input. Poll pending jobs according to Retry-After and set a deadline. A client timeout does not cancel a server job.

  • 401 · invalid_credentials: Check or replace the expired/revoked credential.
  • 403 · permission_denied / insufficient_entitlement: Check scopes, verified email, entitlements and wallet balance.
  • 429 · rate_limited: Back off using retry_after_seconds when present; check concurrency.