Start an AI design task. Returns immediately with a task ID for polling.
Documentation Index
Fetch the complete documentation index at: https://docs.moda.app/llms.txt
Use this file to discover all available pages before exploring further.
API key from Settings > Developer > REST API
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"
Natural-language description of the design task for the AI agent.
Prefixed conv_ wire ID (Crockford base32 body). Path parameters additionally accept a bare UUID string for back-compat; JSON body fields require the prefixed form.
^conv_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"conv_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
Prefixed cvs_ wire ID (Crockford base32 body). Path parameters additionally accept a bare UUID string for back-compat; JSON body fields require the prefixed form.
^cvs_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
Prefixed cvs_ wire ID (Crockford base32 body). Path parameters additionally accept a bare UUID string for back-compat; JSON body fields require the prefixed form.
^cvs_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
Name for the new canvas. Used when creating (canvas_id and template_canvas_id both omitted) or when remixing via template_canvas_id (overrides the default Remix of <source>).
Prefixed bk_ wire ID (Crockford base32 body). Path parameters additionally accept a bare UUID string for back-compat; JSON body fields require the prefixed form.
^bk_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$"bk_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
If true, no brand kit is applied — even if the team has a default. Overrides brand_kit_id when both are provided.
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).
Canvas format and dimensions. Controls the output size and layout type (e.g. slides, social media, custom).
AI model tier: 'pro' (most capable), 'standard', or 'lite' (fastest). Defaults to automatic selection based on task complexity.
pro, standard, lite 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). Path parameters additionally accept a bare UUID string for back-compat; JSON body fields require the prefixed form.
^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 >= 1Successful 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.
Kind-specific 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.