Skip to main content

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.

Every Moda API error response carries a stable code field — a machine-readable string that never changes once published. This page lists every code the API can return, along with the high-level type SDKs branch on and the HTTP status code each maps to. For the shape of the error envelope itself (type, code, message, doc_url, request_id, etc.), see Error format.

Branching guidance

  • Branch on type, not status code alone. Status codes collapse distinct failure modes; type separates conflict from idempotency_conflict even though both surface as 409.
  • Treat code as the narrow key. Use it for telemetry, runbook lookups, and per-error UI copy. Never display message to end users — it is developer-facing and may change.
  • Retry only upstream_error and rate_limited. Everything else is either permanent or requires a request fix; retrying will not help.
  • Always log request_id. It is the single field that lets Moda support trace a specific failure across logs and Sentry.

Catalog

CodeTypeHTTP
authenticationauthentication401
brand_kit_folder_protectedpermission403
conflictconflict409
file_name_conflictconflict409
file_not_foundnot_found404
folder_circular_referenceinvalid_request400
folder_name_conflictconflict409
folder_not_foundnot_found404
folder_team_mismatchpermission403
folder_write_deniedpermission403
idempotency_conflictidempotency_conflict409
internal_errorinternal_error500
invalid_id_formatinvalid_request400
invalid_requestinvalid_request400
member_cap_exceededpermission403
method_not_allowedinvalid_request405
not_foundnot_found404
organization_access_deniedpermission403
organization_not_foundnot_found404
permissionpermission403
rate_limitedrate_limited429
scraping_user_errorunprocessable422
share_link_not_foundnot_found404
share_link_revokednot_found404
team_access_deniedpermission403
team_not_foundnot_found404
unprocessableunprocessable422
unsupported_versioninvalid_request400
upstream_errorupstream_error502
user_already_existsconflict409
validation_failedunprocessable422

Type reference

The type field is a closed set. SDKs may translate types to typed exceptions; new code values may be added to an existing type without notice, so always include a default branch.
TypeDescription
invalid_requestRequest was malformed, missing a required field, or used an unsupported version.
authenticationAuth failed — missing, malformed, or revoked credentials.
permissionAuthenticated, but not authorized for this resource or scope.
not_foundThe referenced resource does not exist or has been removed.
conflictThe request conflicts with current resource state (e.g. name collision).
idempotency_conflictAn idempotency_key was reused with a different request body.
unprocessableRequest was well-formed but failed validation or upstream extraction.
rate_limitedCaller exceeded the rate limit — back off per Retry-After.
upstream_errorA required upstream service failed transiently.
internal_errorUnexpected server error — include request_id if reporting.