# Camile Creative Intelligence (CCI) — API para agentes Produto: Camile Creative Intelligence (CCI) — camada criativa agent-native da Camile AI. Base URL: https://api.camileai.com/creative/v1 Auth: header `x-api-key` (API key única do ecossistema) ou `Authorization: Bearer`. Tenant: resolvido pela credencial; nunca envie tenant no body como prova de autorização. Contrato: cci.v1 · IR: cci.creative-ir/1 Site: https://camileai.com/creative ## Fluxo canônico 1. GET /capabilities e GET /billing/price-book 2. POST /briefs/analyze ou POST /planning/brief (planejamento assistido opcional) 3. POST /designs { "brief": {...}, "render": {"format":"png"} } ou IR própria 4. POST /designs/{id}/nodes para editar um elemento sem reenviar a IR 5. GET /artifacts/{artifact_id}/content ## Templates editorial_poster, social_announcement, infographic_report, carousel_slide, product_banner, story_vertical, quote_card, diagram_flow, presentation_slide, thumbnail, photo_poster, generative_art, procedural_art, event_poster, pricing_card, newsletter_header, podcast_cover. ## Formatos png, jpeg, webp, pdf, svg. Vídeo: mp4 (h264), via POST /videos + GET /jobs/{id}; motion de um design via POST /designs/{id}/animate. ## Creative IR e auto-layout A IR (`cci.creative-ir/1`) é o documento editável. Nós: rect, ellipse, line, path, text, image, chart, pattern, group e frame. `frame` resolve auto-layout declarativo: `layout.direction` (row|column), `gap`, `padding`, `align` (start|center|end|stretch), `justify` (start|center|end|space-between|space-around) e tamanhos `hug`/`fill`. POST /layouts/materialize resolve frames sem renderizar. ## Brand kit brief.brand.colors ajusta a paleta; brief.brand.logo_asset_id aplica o logo do tenant (position top_left|top_right|bottom_left|bottom_right, logo_size, logo_margin) como nó `brand-logo`. ## Edição por nó (agent-native) POST /designs/{id}/nodes {"node":{...},"parent_id":"card","index":0} · PATCH /designs/{id}/nodes/{node_id} {"patch":{"text":"novo"}} · DELETE /designs/{id}/nodes/{node_id}. Cada edição cria revisão, renderiza novo artefato, roda QA e consome 1 crédito. GET /designs/{id}/preview?width=480 renderiza em memória (sem artifact/crédito). GET /designs/{id}/bundle baixa ZIP com IR, QA, revisões e artefato. POST /designs/{id}/duplicate cria variação com a mesma IR. GET /designs/{id}/revisions/{a}/diff/{b} compara revisões; POST /designs/{id}/revisions/{rev}/restore restaura uma versão anterior como nova revisão. ## Edição de imagem POST /assets/{asset_id}/transform com operations: crop, resize, pad, rotate, flip, filter, overlay, mask, background. Saída png, jpeg, webp; não destrutiva; novo asset. ## Campanha completa POST /campaigns/full {brief, formats[1..6], video?} gera as peças e, se pedido, um job de vídeo usando os designs como cenas (use_designs=true default). ## Vídeo Cenas aceitam `brief`, `ir`, `design_id` ou `asset_id` (imagem do tenant, fit cover|contain). `motion`: none, zoom_in, zoom_out, pan_left/right/up/down. `transition`: none, fade, crossfade, slide_left/right/up/down, wipe_left/right, circle_open, dissolve (sobreposição exige todas as cenas iguais). `caption` + `caption_position` (top|bottom|center) + `caption_size`, ou `captions` temporizadas [{text,start,end,position}] (até 20 por cena). `beat_sync: true` + `audio.asset_id` estima BPM e encaixa cada cena em batidas inteiras. `formats: ["mp4","gif","webm"]` gera preview GIF e/ou WebM VP9 além do MP4; `gif: {width,fps,colors}` controla o tamanho do GIF. Jobs duráveis: GET /jobs/{id} expõe attempts, max_attempts, next_attempt_at e last_error. ## Áudio em vídeo POST /assets/audio (mp3/wav/m4a/aac/ogg/opus); POST /videos aceita audio.tracks[1..4] com amix/normalize; /designs/{id}/animate aceita audio_asset_id, audio_volume, audio_loop, audio_fade_in, audio_fade_out. ## Billing GET /billing/price-book · POST /billing/estimate (aceita campaign.full composto) · GET /billing/plan · GET /billing/ledger · GET /billing/reservations. Reserva → commit/release por job; créditos em CC. ## Providers e planejamento (opcionais) GET /providers · POST /generations (imagem via provider) · GET /llm/providers · POST /planning/brief (objetivo → brief sanitizado → plano determinístico). Desligados por padrão. ## Operação GET /metrics (designs, artefatos/bytes, jobs, fila, uso e reservas por tenant). ## URLs assinadas GET /artifacts/{id}/signed-url?ttl=600; endpoint público /public/artifacts/{id}/content. ## Callbacks callback_url em /videos e /designs/{id}/animate; HMAC X-CCI-Signature; hosts allowlistados. ## MCP POST https://api.camileai.com/creative/v1/mcp — JSON-RPC 2.0. Resources: cci://capabilities, cci://templates, cci://price-book. Prompts: cci.campaign, cci.video, cci.brand_piece. Tools: cci.capabilities.list, cci.templates.list, cci.brief.analyze, cci.layout.materialize, cci.workflow.run, cci.brand.get, cci.brand.set, cci.brief.from_image, cci.design.create, cci.design.get, cci.design.update, cci.design.render, cci.design.node.add, cci.design.node.update, cci.design.node.remove, cci.design.animate, cci.asset.transform, cci.campaign.create, cci.video.create, cci.job.get, cci.job.retry, cci.usage.get, cci.billing.estimate, cci.billing.plan, cci.planning.brief, cci.providers.list, cci.image.generate, cci.procedural.styles, cci.procedural.render. ## Limites beta 500 créditos/dia por tenant · 60 req/min por credencial · canvas ≤ 8192px · nodes ≤ 500 · vídeo ≤ 60s. ## Páginas - Visão geral: https://camileai.com/creative - Documentação: https://camileai.com/creative/docs - Preços: https://camileai.com/creative/pricing - Templates: https://camileai.com/creative/templates - Exemplos: https://camileai.com/creative/examples - Comparação de categoria: https://camileai.com/creative/compare - Changelog: https://camileai.com/creative/changelog - Studio: https://camileai.com/creative/studio ## Exemplo curl -sS https://api.camileai.com/creative/v1/designs -H "x-api-key: $CAMILE_API_KEY" -H "content-type: application/json" -d '{"brief":{"intent":"social_announcement","title":"A era da IA que cria.","subtitle":"Design para agentes.","tone":"bold"},"render":{"format":"png"}}'