CueFrame
Api

Semantic search over the org's own footage

Find MOMENTS in your library by describing what they look like. The query uses the same visual-semantic index as the footage, so it matches on visual content — "wide shot of a speaker at a whiteboard", "hands on a keyboard", "city skyline at dusk" — including shots nobody talks about (which is where transcript search fails). Results are time-ranged: feed `mediaId` + `startSec`/`endSec` straight into apply_composition as a clip. `q` is required; `limit` defaults to 10 and caps at 25. `indexing` is COVERAGE, not emptiness: it is true whenever some of the org's footage is not in the visual index yet (media that predates it, or still processing), and it can be true ALONGSIDE results — then read them as "the best moments among what we have looked at so far". Empty `results` with `indexing: true` is a state, not a failure; re-run the item through processing to index it. The first search after an idle period can take up to ~90s; subsequent searches are typically faster.

GET
/v1/media/search

Authorization

AuthorizationBearer <token>

API key auth. Prefix cf_live_ for production orgs, cf_test_ for sandbox.

In: header

Query Parameters

q*string

What the moment should look like, in plain language. Describe the IMAGE, not the words spoken.

Length1 <= length
limit?integer

Maximum moments to return. Default 10, maximum 25.

Range1 <= value <= 25
Default10

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/media/search?q=string"
{  "results": [    {      "mediaId": "string",      "name": "string",      "score": 0,      "startSec": 0,      "endSec": 0,      "thumbUrl": "string"    }  ],  "indexing": true}
{  "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    }  }}