Video APIv1 Home OpenAPI spec

Docs › Endpoints

Endpoints

All paths are relative to the base URL. Every field and response is in the API reference below, and in the spec: openapi.yaml · openapi.json.

EndpointDescriptionSuccess
GET/videosList your videos, newest first (limit 1–100, nextToken).200
POST/videosCreate a video: an upload (fileName, sizeBytes, maxHeight, camera, streaming, prestart) or an edit (edit).201
POST/videos/{id}/partsPre-signed upload URLs: partNumbers (or parts with sizes, for streaming), file: source | camera.200
POST/videos/{id}/completeFinish the upload and start processing, with options.202
GET/videos/{id}Status, progress, timing and download link.200
POST/videos/{id}/reprocessProcess again as a new video with new options (maxHeight, trim, redactions, deleteOriginal). Nothing is re-uploaded, and options aren't inherited. Returns the new videoId.201
POST/videos/{id}/cancelStop processing. The upload is kept, so you can reprocess later.200
DELETE/videos/{id}Remove a video permanently (irreversible). Cancels processing, removes outputs and work files. Stops billing storage. Returns {videoId, deleted: true, originalDeleted, freedBytes}.200
PATCH/videos/{id}Update metadata: {metadata: {key: value, …}}. Set keys or null to remove them.200
GET/videos/{id}/thumbnailsCandidate frames for the thumbnail (with links) and the current choice.200
POST/videos/{id}/thumbnailChoose the thumbnail: {candidate}, or your own image {image, contentType} (JPEG/PNG, up to 2 MB).200
POST/videos/{id}/abortDiscard an unfinished upload and its parts.200
POST/videos/{id}/heartbeatKeep a pre-started recording job waiting (while recording).200
GET/usageUsage for a calendar month: processing time and storage, for billing. Query param month=YYYY-MM (defaults to current month). Returns aggregated minutes, storage, and current storage in GB.200
POST/auth/startPublic (no auth). Email a sign-in code: {email}. Returns {sent: true, expiresInSeconds: 600}.200
POST/auth/verifyPublic (no auth). Verify a code: {email, code, acceptTerms}. Returns {sessionToken, expiresAt, account, created}.200
POST/auth/signoutEnd a session (session token only).200
GET/accountYour account: email, plan, limits and this month's usage.200
GET/account/keysYour API keys (never the keys themselves; shown once at creation).200
POST/account/keysCreate an API key: {label}. Signed-in sessions only. Returns {key, keyId, label, note}.201
DELETE/account/keys/{keyId}Revoke an API key. Signed-in sessions only.200
GET/webhookYour webhook configuration: endpoint URL, events, enabled status, secret and timestamps.200
PUT/webhookSet or update your webhook endpoint: {url, events?, enabled?}. Returns the full config.200
DELETE/webhookRemove your webhook endpoint.200
POST/webhook/rotateGenerate a new signing secret (keep the URL). Returns the full config.200
POST/webhook/testSend a test event now and report the result: {ok, status, ms, error, response, eventId}.200
GET/webhook/deliveriesRecent delivery attempts (last 30 days, newest first). Returns {deliveries} array of {eventId, type, attempt, ok, status, ms, error, at, final}.200