Start Design Task
Start an AI design task. Returns immediately with a task ID for polling.
Authorizations
API key from Settings > Developer > REST API
Headers
Calendar-dated API version pin. New integrations should pin 2026-05-01 to opt into the newest response shapes. For back-compat the server also accepts requests with no header and resolves them to the current default (today: 2026-04-12); that default advances on each sunset date. Any unsupported value returns 400 unsupported_version.
2026-04-12, 2026-05-01 "2026-05-01"
Body
Natural-language description of the design task for the AI agent.
Prefixed conv_ wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, a bare UUID string is also accepted in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working). Both are permanent, supported inputs.
^conv_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"conv_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
Prefixed cvs_ wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, a bare UUID string is also accepted in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working). Both are permanent, supported inputs.
^cvs_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
Prefixed cvs_ wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, a bare UUID string is also accepted in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working). Both are permanent, supported inputs.
^cvs_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
Name for the new canvas. Used when creating (canvas_id omitted) or when remixing via template_canvas_id (overrides the default Remix of <source>).
Prefixed bk_ wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, a bare UUID string is also accepted in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working). Both are permanent, supported inputs.
^bk_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"bk_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
If true, no brand kit is applied — every brand-kit source is suppressed, including the canvas's own kit, the team default, and any explicit brand_kit_id override. Use only when the design must be unbranded; to merely leave the canvas's existing kit alone, omit brand_kit_id instead.
HTTPS URL to receive a webhook POST when the job completes, fails, or is cancelled. See the Webhooks documentation for payload format and signature verification.
Client-generated unique key to prevent duplicate job creation. If a job with this key already exists, its status is returned instead of creating a new one.
List of reference images or files for the AI agent to use as inspiration. Each item is either a URL-shape attachment ({url, name?, type?}) or a file-id-shape attachment ({file_id, role, label?}) referencing a file previously uploaded via POST /v1/uploads. The two shapes are distinguished by their required fields (url vs file_id).
- AttachmentInput
- FileAttachment
Canvas format and dimensions. Controls the output size and layout type (e.g. slides, social media, custom).
AI model tier: 'pro' (best for complex tasks), 'pro-fast' (the same quality as Pro with faster output and higher credit usage), 'standard', 'lite', 'kimi-k2.5' (Fireworks-hosted Kimi K2.5), 'kimi-k2.6' (Fireworks-hosted Kimi K2.6), 'kimi-k3' (Moonshot-hosted Kimi K3), or 'gpt-5.6' (OpenAI GPT-5.6 at high reasoning). Defaults to automatic selection based on task complexity.
pro, pro-fast, standard, lite, kimi-k2.5, kimi-k2.6, kimi-k3, gpt-5.6 List of prefixed cvs_ IDs to use as design inspiration. The agent can see these designs and reference their style, layout, or content.
Prefixed cvs_ wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, a bare UUID string is also accepted in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working). Both are permanent, supported inputs.
^cvs_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$Optional maximum number of slides for slide-generation jobs. When omitted for slides, Moda defaults to an 8-slide target and clamps to your plan limit.
x >= 1Auto-export preferences applied when the task finishes. The finished design is rendered to result.export (and the completion webhook), so a follow-up POST /v1/canvases/{id}/export for the same canvas hits the cache instead of re-rendering. Omit to use the canvas category default (slides→PPTX, pdf→PDF, others→PNG); pass {enabled: false} to opt out of the auto-export entirely. Multi-page PNG/JPEG bundles into a .zip of per-page files; result.export.format reflects what was actually delivered (png, jpeg, pdf, pptx, or zip).
Response
Successful Response
Canonical wire-format for every async design operation.
All consumers -- REST, webhooks, SSE, MCP -- serialize through
Task.from_db() so the shape is always consistent.
Prefixed task_... identifier.
^task_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"task_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
Discriminator for the kind-specific result payload.
design, export, remix, brand_kit_extract Current lifecycle status.
queued, running, succeeded, failed, canceled, expired Current attempt number (1-based).
Maximum attempts before dead-lettering.
HATEOAS links for this task.
ISO 8601 timestamp.
ISO 8601 timestamp.
ISO 8601 timestamp.
Live progress for running tasks. Null when not applicable.
Sanitized echo of the original request.
Result payload. Present only for succeeded tasks.
Error info for failed tasks: {message, retryable}.
Credit usage. Present only for completed tasks when billing is enabled.
Suggested milliseconds to wait before the next poll. Null for terminal tasks.