Documentação · beta

CCI API v1

Contrato cci.v1. Base: https://api.camileai.com/creative/v1. Autenticação: x-api-key ou Authorization: Bearer. O tenant é resolvido pela credencial.

1. Autenticar

Use a API key única criada em app.camileai.com/api. Sem chave, a API responde 401; se o verificador cair, 503 (fail-closed).

2. Criar

POST /designs com brief ou ir. O retorno inclui design_id, IR, artefato e QA.

3. Consumir

Baixe em GET /artifacts/{id}/content. O artefato é isolado por tenant.

Endpoints

GET  /v1/health
GET  /v1/me
GET  /v1/capabilities
GET  /v1/templates
GET  /v1/fonts
POST /v1/briefs/analyze
POST /v1/designs
GET  /v1/designs
GET  /v1/designs/{design_id}
PATCH /v1/designs/{design_id}
POST /v1/designs/{design_id}/nodes
PATCH /v1/designs/{design_id}/nodes/{node_id}
DELETE /v1/designs/{design_id}/nodes/{node_id}
GET  /v1/designs/{design_id}/revisions
GET  /v1/designs/{id}/export/html
GET  /v1/brand-kit
PUT  /v1/brand-kit
DELETE /v1/brand-kit
GET  /v1/designs/{design_id}/revisions/{revision}
GET  /v1/designs/{design_id}/revisions/{a}/diff/{b}
POST /v1/designs/{design_id}/revisions/{revision}/restore
POST /v1/designs/{design_id}/render
POST /v1/designs/{design_id}/animate
POST /v1/layouts/materialize
POST /v1/campaigns
POST /v1/campaigns/full
POST /v1/videos
GET  /v1/jobs
GET  /v1/jobs/{job_id}
POST /v1/jobs/{job_id}/retry
POST /v1/jobs/{job_id}/cancel
POST /v1/assets
POST /v1/assets/audio
GET  /v1/assets
GET  /v1/assets/{asset_id}
POST /v1/assets/{asset_id}/transform
GET  /v1/assets/{asset_id}/content
GET  /v1/artifacts/{artifact_id}
GET  /v1/artifacts/{artifact_id}/signed-url
GET  /v1/artifacts/{artifact_id}/content
GET  /v1/public/artifacts/{artifact_id}/content
GET  /v1/usage/summary
GET  /v1/usage/events
GET  /v1/billing/price-book
POST /v1/billing/estimate
GET  /v1/billing/plan
GET  /v1/billing/ledger
GET  /v1/billing/reservations
GET  /v1/billing/gateway/status
POST /v1/billing/checkout
POST /v1/billing/portal
POST /v1/billing/reservations/{id}/release
POST /v1/planning/brief
GET  /v1/providers
POST /v1/generations
POST /v1/workflows/run
GET  /v1/procedural/styles
POST /v1/procedural/render
GET  /v1/llm/providers
POST /v1/briefs/from-image
GET  /v1/metrics
POST /v1/mcp
GET  /v1/openapi.json

Workflow

POST /v1/workflows/run executa até 8 etapas com operações allowlisted (brief.analyze, procedural.render, design.create, design.export_html) e referências $step.campo. Uma chamada, um documento — com idempotência e o mesmo ledger de cada operação.

Brief

{
  "intent": "social_announcement | editorial_poster | 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",
  "title": "texto exato",
  "subtitle": "texto exato",
  "eyebrow": "texto exato",
  "body": "texto exato",
  "cta": "texto exato",
  "author": "texto exato",
  "insight": "texto exato",
  "source": "texto exato",
  "tone": "premium | editorial | minimal | warm | technical | bold",
  "palette": "noir | editorial | electric | warm | mono | cosmic",
  "format": {"width": 1080, "height": 1080},
  "brand": {"name": "Camile AI", "tagline": "...", "website": "camileai.com", "colors": ["#E8B44C", "#C8563C"], "logo_asset_id": "opcional", "logo_position": "bottom_right", "logo_size": 120},
  "data": [{"label": "Agentes", "value": 100}],
  "items": ["bullet 1", "bullet 2"],
  "date": "12/11 · 14h",
  "location": "São Paulo",
  "price": "R$ 149/mês",
  "slide_index": 1,
  "slide_total": 3,
  "language": "pt-BR"
}

Creative IR

A IR é versionada em cci.creative-ir/1. Nodes: rect, ellipse, line, path, text, image, chart, pattern, group e frame (auto-layout com hug/fill, gap, padding, align, justify). Use POST /designs com ir para renderizar um documento próprio.

Edição de imagem

A edição é não destrutiva: cada transformação cria um novo asset derivado, preserva o original e registra a operação no metadata. Formatos de saída: png, jpeg, webp.

POST https://api.camileai.com/creative/v1/assets/{asset_id}/transform
{
  "operations": [
    {"type": "crop", "x": 40, "y": 40, "width": 800, "height": 600},
    {"type": "resize", "width": 1080, "height": 1080, "fit": "cover"},
    {"type": "filter", "brightness": 1.05, "contrast": 1.1, "sharpness": 1.2},
    {"type": "mask", "shape": "rounded_rectangle", "radius": 48, "feather": 8},
    {"type": "overlay", "asset_id": "{logo_id}", "x": 820, "y": 60, "width": 180, "height": 60, "opacity": 0.9}
  ],
  "output_format": "png"
}

Operações: crop, resize, pad, rotate, flip, filter, overlay, mask, background. Limite de 40MP e 24 operações por chamada.

Áudio em vídeo

Envie uma trilha em POST /v1/assets/audio (mp3, wav, m4a, aac, ogg, opus; até 300s) e referencie em POST /v1/videos ou no motion de um design. O áudio é reamostrado para AAC 192k; POST /v1/videos aceita até 4 faixas com amix, normalize e ducking por sidechaincompress. Cenas aceitam transition none/fade/crossfade/slide_*/wipe_*/circle_open/dissolve, caption ou captions temporizadas, asset_id (imagem do tenant) e beat_sync com audio.asset_id. formats adiciona GIF/WebM ao MP4.

POST https://api.camileai.com/creative/v1/designs/{design_id}/animate
{
  "duration": 4,
  "motion": "zoom_in",
  "audio_asset_id": "{audio_id}",
  "audio_volume": 0.8,
  "audio_loop": true,
  "audio_fade_out": 0.5
}

URLs assinadas

Para entregar um artefato sem expor a API key: GET /v1/artifacts/{id}/signed-url?ttl=600 devolve uma URL HMAC com expiração (60–86400s). O endpoint público /v1/public/artifacts/{id}/content não exige header.

Callbacks

Jobs aceitam callback_url (HTTPS, host allowlistado) e entregam job.succeeded/job.failed/job.cancelled com HMAC-SHA256 em X-CCI-Signature. Sem redirects; uma tentativa por job.

MCP

JSON-RPC 2.0 em POST https://api.camileai.com/creative/v1/mcp. Métodos: initialize, tools/list, tools/call, resources/list|read, prompts/list|get. Ferramentas: cci.design.create, cci.campaign.full, cci.video.create, cci.design.node.*, cci.billing.estimate, cci.planning.brief, cci.asset.transform, cci.job.retry, cci.capabilities.list, cci.templates.list, cci.usage.get.

Limites beta

Canvas até 8192px · até 500 nodes · upload até 10MB · quota de 500 créditos/dia por tenant · rate limit de 60 req/min por credencial · vídeo até 60s e 12 cenas.

OpenAPI completo: /creative/openapi.json · llms.txt: /creative/llms.txt

SDK: Python · TypeScript · JSON Schema da IR: creative-ir-v1.json