Base URL
All API requests use the following base URL:Authentication
Authenticate by including an API key as a Bearer token in theAuthorization header. Generate API keys from Settings > Developer > REST API in the Moda app.
Pin an API version
Add aModa-Version header to every request so your integration’s response shapes stay stable across our releases:
Quick example
List your canvases with a single curl command:next_cursor back as ?cursor= to fetch the next page; iterate until next_cursor is null.
What you can do
Rate limiting
The API allows 120 requests per minute per API key. Your organization also has a cap on concurrent design tasks (3 onfree, 10 on paid, 15 on ultra). Exceeding either limit returns 429 Too Many Requests with a Retry-After header.
See Usage Limits for full details and how to request a higher cap.
Error format
Every error response carries a single structured envelope nested under anerror key:
Fields
Status codes
Client guidance
- Branch on
type, not status code alone. Status codes collapse distinct failure modes together;typeseparatesrate_limitedfromidempotency_conflicteven though both are409-adjacent. - Log
request_idon every error. It is present on every response (success and failure) both in the body and in theX-Request-IDheader. Pass it to support if you need help diagnosing a specific call. - Retry on
upstream_errorandrate_limited. Everything else is either permanent or requires you to fix the request. - Do not parse
message. It can change without notice. Usetypeandcodefor branching,messageonly for display.
Use Moda docs in your AI editor
Give your AI agent direct access to these docs while building with the API. The docs are exposed as a hosted MCP server athttps://docs.moda.app/mcp — your agent gets a search tool and a read-only filesystem over every page, no local install required.
- Claude Code
- Claude.ai
- Claude Desktop
- Cursor
- VS Code
moda-api skill from https://docs.moda.app/.well-known/agent-skills/ — covering the canonical Task envelope, Moda-Version pinning, prefixed IDs, the typed error envelope, idempotency_key, cursor pagination, and webhook HMAC verification.
You can also access the docs as plain text for any LLM:
- Index: docs.moda.app/llms.txt
- Full docs: docs.moda.app/llms-full.txt
Next steps
- Authentication — Create and manage API keys
- Versioning — Pin a version with the
Moda-Versionheader - Webhooks — Receive notifications when tasks complete