Authentication & concepts
Authentication
All endpoints require an API key. You must have an active Developer Plan to generate one (Dashboard → Account → Developer API — the key is shown once, at creation).
Pass your key in every request header:
x-api-key: capci_your_api_key_herePosts, diagrams, carousels and animations are unlimited on the Developer plan — no per-call charge. Logo creation is the one metered exception (see /logo in the Brand & assets reference): your first logo is free, every one after draws from your account's credit balance.
Core concepts
Brand resolution & unbranded
Every image carries a small identity badge (name + logo, top-right) unless you opt out. Resolution order:
- Your saved brand (
POST /brand, or a per-callbrandoverride) always wins. - If you've never set a brand, the badge defaults to Capci's own mark — never a blank placeholder.
- Pass
unbranded: trueon any generation call —/posts,/diagrams,/refine, and so on — to strip the badge entirely for that one generation. Brand colors are kept so output stays on-palette but anonymous. This never touches your saved profile. (The MCP server exposes the same flag on itscreate_post/create_diagram/refine_diagramtools — see MCP server.)
Note: the API surface never stamps a "Made with Capci" attribution watermark on your output, regardless of your dashboard watermark setting — that toggle only affects the Studio web app.
Diagram style defaults (separate from your brand — brand applies everywhere)
Set fallback theme / size / nodeStyle / transparent values once in Dashboard → Account → Developer. Any /api/v1/diagrams or /refine call that omits one of those fields falls back to your saved default, then to the system default (light / landscape / boxed / opaque) — pass the field explicitly on any call to override it just once. This style-default fallback is diagram-specific; /posts and /chart use the defaults listed in their own tables instead. Your brand (name, logo, colors) is a separate setting from this and always applies to every endpoint — see Brand resolution above.
Rate limits
60 requests / minute per API key on anything that creates or edits content (/posts, /diagrams, /chart, /carousel, /animate, /batch, /logo, etc.). Polling GET /jobs/{id} or GET /jobs/batch/{batchId} for an async job doesn't count against this — poll every 2-3 seconds freely.
Every response carries standard RateLimit-* headers; a 429 means back off and retry after RateLimit-Reset seconds.
Not available via the API
/posts, /chart, and /carousel generations aren't stored by Capci — save the response yourself if you need it later, since there's no endpoint to list past generations. Diagrams are the one exception: they persist permanently under their id so you can refine/export them later, but there's still no "list all my diagrams" call — track ids on your own end if you need that.
