send.webforms.toRead the docs →

Documentation

Error reference

Every JSON error response has the same shape: { ok: false, error: <code>, message: <human-readable text> }. The error code is stable and meant to be matched on in code; the message is meant to be read by a person and can change wording.

Ingest endpoint

Errors from posting a submission to send.webforms.to.

CodeHTTPWhereMeaning
missing_access_key400IngestNo key in the URL path or an access_key field in the body.
form_not_found404IngestThe key doesn't match any form, or the form is deactivated.
method_not_allowed405IngestSomething other than POST (or the OPTIONS preflight).
rate_limited429Ingest / all APIsPer-IP or per-key burst limit hit. Check retry-after / X-RateLimit-Reset.
account_unverified403IngestNo owner/admin on the workspace has a verified, unblocked account, so the form is inactive.
quota_exceeded402IngestThe workspace's monthly submission limit has been reached.
validation_failed422IngestThe submission didn't match the form's field schema. issues lists each failing field.

Submissions API / write API / MCP

Cross-cutting errors that any authenticated endpoint can return.

CodeHTTPWhereMeaning
unauthorized401Submissions API / write API / MCPMissing, malformed or revoked API key. Identical body whether the key never existed or was revoked, so the endpoint can't be used to enumerate valid keys.
insufficient_scope403Write APIThe key doesn't carry the scope the endpoint requires - forms:write, destinations:write, routes:write, templates:write, api_keys:write or members:write.
plan_required403Write APIThe workspace's plan doesn't include the feature being configured (routing rules, custom templates, domain allowlist, autoresponder, custom thank-you page).
not_found404Submissions API / write APINo such resource in this workspace - including when the id is real but belongs to a different workspace. Never distinguishes the two.
invalid_cursor400Submissions APIThe cursor query parameter isn't one this API issued.
invalid_status400Submissions APIAn unrecognised value in the status filter.

Write API specifics

Errors specific to individual write endpoints.

CodeHTTPWhereMeaning
invalid_name400Forms, templatesEmpty or over the length limit.
invalid_input400Destinations, FormsA field failed validation - malformed webhook URL, SSRF-blocked host, invalid Slack/Discord/Telegram config, or an invalid customJsonSuccess/customJsonError key or value on a form's confirmation settings.
invalid_provider400DestinationsNot one of email, slack, discord, telegram, webhook.
unverified_address400DestinationsAn email destination must point at a verified linked address for the workspace.
linked_email_limit403DestinationsThe plan's ceiling on distinct linked email addresses would be exceeded.
unsupported400DestinationsThe destination's provider can't be edited through this endpoint.
invalid_route400RoutesThe condition tree is malformed - see the routing rules validation rules.
invalid_conditions400RoutesA new rule was posted with no conditions. Only the default rule may have none, and it already exists.
invalid_destination400RoutesOne of the integrationIds doesn't belong to this workspace.
invalid_direction400RoutesReorder direction must be "up" or "down".
cannot_delete_default400RoutesThe default (catch-all) rule can't be deleted.
cannot_disable_default400RoutesThe default rule can't be paused.
invalid_template400Forms, templatesUnknown built-in template id, or a custom template id that doesn't parse.
invalid_subject400TemplatesEmpty or over the length limit.
invalid_html400TemplatesEmpty or over the size limit.
template_limit403TemplatesThe plan's ceiling on saved custom templates would be exceeded.
cannot_change_owner400MembersThe workspace owner's role can't be changed through this endpoint.
cannot_remove_owner400MembersThe workspace owner can't be removed.
invalid_slug400WorkspaceUnder 3 characters after normalizing to lowercase letters, numbers and hyphens.
slug_taken400WorkspaceAnother workspace already uses that slug.

Get your endpoint

Free for 300 submissions a month. No card required.

Start free