CueFrame
Api

Search stock media (Pexels / Pixabay / Freesound / Klipy)

Search licensed stock media by keyword. Pass `query` for one search, or `queries[]` (≤10) to run a batch in ONE call — the batch returns `results[]`, one entry per query in order, each with its own `candidates` (and an `error` string if that single query failed; one bad query never discards the rest). `kind` selects the corpus (video/photo → Pexels+Pixabay, sfx → Freesound CC0-only, gif → Klipy); defaults to video. Returns ranked candidates each carrying an opaque `candidateId` — pass it to import_resource to bring the asset into a project. Free + rate-limited; results are cached for 7 days, after which a candidateId must be refreshed by searching again. For sfx, bound the result by clip length with `durationSec` — impacts/ticks ≈ 0–2s, risers/whooshes ≈ 2–8s, ambients unbounded.

POST
/v1/resources/search

Authorization

AuthorizationBearer <token>

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

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

POST /resources/search body — one query, or a batch of queries[].

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/resources/search" \  -H "Content-Type: application/json" \  -d '{}'
{  "provider": "pexels",  "kind": "video",  "candidates": [    {      "candidateId": "string",      "provider": "pexels",      "kind": "video",      "thumbnail": "string",      "previewUrl": "string",      "downloadUrl": "string",      "duration": 0,      "width": 0,      "height": 0,      "author": "string",      "authorUrl": "string",      "assetUrl": "string",      "license": "string"    }  ],  "results": [    {      "query": "string",      "provider": "pexels",      "kind": "video",      "candidates": [        {          "candidateId": "string",          "provider": "pexels",          "kind": "video",          "thumbnail": "string",          "previewUrl": "string",          "downloadUrl": "string",          "duration": 0,          "width": 0,          "height": 0,          "author": "string",          "authorUrl": "string",          "assetUrl": "string",          "license": "string"        }      ],      "error": "string"    }  ]}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "x402Version": 2,  "accepts": [    {}  ],  "error": "string"}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}