Patch an authored component
RFC 7396 merge patch: send only the fields you are changing. Every field you omit keeps the value it already had. Identical in effect to PUT, which merges the same way. Every placed clip renders the exact version it pins. Send `projectId` (and optionally `compositionId`) to move that composition's placements to the new version in the same write; `repinned` reports them. Other placements keep rendering the previous version, and `placementsPinnedToPrevious` counts them across the org.
API key auth. Prefix cf_live_ for production orgs, cf_test_ for sandbox.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
PATCH /components/:id body, RFC 7396 merge: a field you omit is left exactly as it was. Org/user are server-resolved; never accepted from the body.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/v1/components/string" \ -H "Content-Type: application/json" \ -d '{}'{ "name": "string", "description": "string", "category": "text", "propSchema": { "property1": null, "property2": null }, "origin": "customer-owned", "ejectedFrom": "string", "tokens": { "property1": null, "property2": null }, "examples": [ { "property1": null, "property2": null } ], "durationInFrames": 1, "manifest": { "version": 2, "assets": { "property1": { "kind": "image", "required": true, "mimeTypes": [ "string" ], "mediaDemand": { "mode": "original" } }, "property2": { "kind": "image", "required": true, "mimeTypes": [ "string" ], "mediaDemand": { "mode": "original" } } }, "graphics": { "api": "canvas2d", "required": true, "accelerationPreference": "hardware-preferred" }, "alphaPolicy": "requires-transparency", "sceneShot": { "version": 2 } }, "id": "string", "source": "default", "kind": "component", "version": "string", "propDefaults": { "property1": null, "property2": null }, "textParam": "string", "subtextParam": "string", "format": { "aspectRatio": "16:9", "fps": 24, "resolution": "hd" }, "intent": "string", "useWhen": "string", "pairsWith": [ "string" ], "avoidWith": [ "string" ], "tags": [ "string" ], "mood": [ "string" ], "tier": "recommended", "useCase": [ "intro" ], "fixedCopy": [ "string" ], "brandBindings": [ { "param": "string", "brandToken": "string" } ], "placement": { "clipSourceKind": "overlay", "refField": "primitiveId" }, "warnings": [ "string" ], "repinned": { "compositionId": "string", "pins": 0, "etag": "string" }, "placementsPinnedToPrevious": 0}{ "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 } }}List component catalog (defaults + installed) GET
Discover the built-in primitive catalog (87 primitives + 7 scenes) plus your installed components. Narrow with facet filters (category, kind, tier, useCase, mood) or free-text (q / intent); when ANY filter is set, results are ordered recommended-tier-first. With NO `limit` the WHOLE (filtered) catalog returns in one page — pass `limit` only to page. Each entry carries a `placement` hint telling you exactly how to author it on the timeline.
Update an authored component PUT
Every placed clip renders the exact version it pins. Send `projectId` (and optionally `compositionId`) to move that composition's placements to the new version in the same write; `repinned` reports them. Other placements keep rendering the previous version, and `placementsPinnedToPrevious` counts them across the org.