Update an authored component
Required permission: projects:write
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.
PUT /components/:id body. 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 PUT "https://example.com/v1/components/string" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "name": "string", "description": "string", "source": "default", "category": "text", "kind": "component", "version": "string", "propSchema": { "property1": null, "property2": null }, "propDefaults": { "property1": null, "property2": null }, "textParam": "string", "subtextParam": "string", "format": { "aspectRatio": "16:9", "fps": 24, "resolution": "hd" }, "durationInFrames": 0, "intent": "string", "useWhen": "string", "pairsWith": [ "string" ], "avoidWith": [ "string" ], "tags": [ "string" ], "mood": [ "string" ], "tier": "recommended", "useCase": [ "intro" ], "examples": [ { "name": "string", "mood": [ "string" ], "params": { "property1": null, "property2": null }, "description": "string" } ], "fixedCopy": [ "string" ], "brandBindings": [ { "param": "string", "brandToken": "string" } ], "placement": { "clipSourceKind": "overlay", "refField": "primitiveId" }, "warnings": [ "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 } }}{ "error": { "code": "string", "message": "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.
Create (or upsert) a brand kit POST
Create or upsert a brand kit. Gated on the `brand_kits` boolean entitlement, which the FREE plan grants — brand-first authoring is deliberately never paywalled — so this is available to every account and costs no credits. A plan without it returns 402 billing_required (`details.featureId: "brand_kits"`). Discover the gate WITHOUT a failed round-trip via GET /v1/me — its `entitlements.brand_kits.included` tells you up front.