Skip to main content
All content API endpoints require an API key with full, upload, or admin scope. Pass it as a Bearer token:

Register content

Creates a new content entry or upserts if id already exists. Request body:
Response (201):

List content

Response (200):

Get content

Response (200):
Returns 404 if the content does not exist.

Update content

Request body (all fields optional):
Response (200): Updated content object.

Delete content

Soft-deletes the content (sets status to disabled). Disabled content returns 404 from the key server — viewers can no longer fetch keys for it. Response (200): Content object with "status": "disabled".

Presigned upload URLs

Generates presigned S3 PUT URLs for uploading encrypted segments. Keys are automatically prefixed with the content ID. Request body:
Each key can be a plain string (defaults to video/MP2T) or an object with explicit contentType. Allowed content types: video/MP2T, video/mp4, application/vnd.apple.mpegurl Response (200):
When a manifest file (.m3u8 or .mpd) is included in the presign request, the server automatically updates the content’s manifestKey field.

Error responses

All error responses follow the format:

Next steps