List media items
Paginated library list. Filter with ?kind= (video|audio|image|gif|asset|source|stock), ?source= (upload|generated|import-url|stock), ?tag= (exact tag) so a real library isn't an undifferentiated soup.
API key auth. Prefix cf_live_ for production orgs, cf_test_ for sandbox.
In: header
Query Parameters
Page size (1..100), default 20. Out-of-range or unparseable clamps into the range.
1 <= value <= 100Opaque cursor from the previous page's pagination.nextCursor. Forward-only.
Filter to one media kind.
Value in
- "video"
- "audio"
- "image"
- "gif"
- "asset"
- "source"
- "stock"
Filter by how the item entered the library.
Value in
- "upload"
- "generated"
- "import-url"
- "stock"
Filter to items carrying this EXACT tag (not a prefix or substring match).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/media"{ "data": [ { "id": "string", "status": "string", "source": "upload", "name": "string", "mimeType": "string", "fileSize": 0, "duration": 0, "width": 0, "height": 0, "frameRate": 0, "progress": { "phase": "string", "percent": 0 }, "analysis": { "property1": null, "property2": null }, "listUsd": 0, "thumbnailUrl": "string", "kind": "string", "tags": [ "string" ], "attribution": { "provider": "pexels", "externalId": "string", "assetUrl": "string", "license": "string" }, "processingStatus": { "phase": "idle", "percent": 0, "message": "string", "error": "string" }, "createdAt": "string", "updatedAt": "string" } ], "pagination": { "hasMore": true, "nextCursor": "string", "prevCursor": "string" }}{ "error": { "code": "string", "message": "string", "contract": "string", "contractVersion": "string", "details": { "property1": null, "property2": null } }}{ "error": { "code": "string", "message": "string", "contract": "string", "contractVersion": "string", "details": { "property1": null, "property2": null } }}{ "x402Version": 2, "accepts": [ {} ], "error": "string"}{ "error": { "code": "string", "message": "string", "contract": "string", "contractVersion": "string", "details": { "property1": null, "property2": null } }}{ "error": { "code": "string", "message": "string", "contract": "string", "contractVersion": "string", "details": { "property1": null, "property2": null } }}{ "error": { "code": "string", "message": "string", "contract": "string", "contractVersion": "string", "details": { "property1": null, "property2": null } }}{ "error": { "code": "string", "message": "string", "contract": "string", "contractVersion": "string", "details": { "property1": null, "property2": null } }}{ "error": { "code": "string", "message": "string", "contract": "string", "contractVersion": "string", "details": { "property1": null, "property2": null } }}Import media from a URL (server-side fetch) POST
Import media into the project from a public https URL — the server fetches and mirrors the bytes (SSRF-filtered), then processes it (transcode + transcribe). Async: returns a media id that flips to ready when the mirror and processing finish; poll GET /media/:id or use a media.completed webhook.
List derived facts for a media item, with quotes for what is missing GET
The enhancement menu. `facts` is everything expensive we have already computed about this source — subject tracks, mattes — with its status, a small summary a caller can act on without fetching the artifact, and `charge` (what it was billed; absent when it cost nothing, e.g. a matte produced as a side effect of a compose you already paid for, or one delivered below the behind-subject presence floor). `offers` is what is NOT present yet, with a real server quote. A matte is offered ONLY when you pass `startSec`+`endSec` — the clip's SOURCE window — because a matte's price is a function of its duration and a whole-source quote for a three-second clip is not a price. Pass the window from the editor and you get a per-clip matte quote plus the status of that window's matte; omit it from the library and you get everything except the matte.