Error codes

Every error code the serving plane and the MCP server return, its HTTP status, and what to do about it.

reference~4 minVerified v0.66.1

HTTP answers { "error": { "code", "message" } }; MCP answers { "ok": false, "code", "message" }. Branch on code, show message. MCP in the status column means the code arrives in a tool result rather than an HTTP status. Every message says what went wrong and what to change.

CodeStatusWhat to do
ambiguous_dataset400Several artifacts carry that dataset; name one from the message.
artifact_changed409The owner changed the artifact mid-edit. Nothing was saved; read it and retry.
body_too_large413Operator endpoint; send no body.
browser_request_refused403The API is for agents and scripts; call it without Origin headers.
bundle_too_large413The bundle is over 10 MiB. Remove or shrink files.
capability_expired401The page was open too long or its access changed. Reload it.
claim_expired410The guest page expired and was deleted.
claim_taken409The guest page was already claimed.
claim_unknown404The claim link was not issued by this plane.
companion_slug_taken409A template part's slug is already one of your other artifacts. Pick another slug.
duplicate_slug400Two instances share a slug. Give each its own.
editors_unavailable403Naming an Editor needs a paid plan (Solo or above). Name them a Commenter or Viewer, or change plan.
erasure_failed502, 503Nothing was deleted. Retry.
external_sharing_blocked403The workspace's admin policy forbids sharing outside it.
field_not_groupable400Group by a closed-choice field with pii: none.
field_not_queryable400Sensitive fields cannot be filtered; filter a coarse companion field.
file_too_large413One file is over 5 MiB.
forbidden403Signed in, but this is not yours to do. Do not retry.
gone—Declared, not returned by any route today.
guest_attempts429Too many anonymous publish attempts from this address today. Wait, or connect an account.
guest_capacity429Anonymous publishing hit its daily ceiling. Wait, or connect an account.
guest_policy_refused422The guest page's policy was refused; the message says why.
guest_quota429This address published its anonymous pages for today. Wait, or connect an account.
guest_unavailable503Anonymous publishing is down. Retry shortly.
handle_taken409Operator rename onto a handle in use.
hash_mismatch400A file's bytes do not match its sha256. Re-encode and resend.
index_unavailable503Operator endpoint; the plane is missing its ingest secret.
internal500, 502Something failed on our side. Retry; if it persists, report it.
invalid_acting_for400actingFor needs creatorId, email and handle.
invalid_analytics400analytics is true or false.
invalid_argumentsMCPThe tool's arguments are wrong; follow fix and accepts.
invalid_base64400A file's content is not valid base64.
invalid_collection400collection is a string, or null to clear it.
invalid_comment400Send a JSON object such as {"body":"Fixed in v4."}.
invalid_creator400creatorId must be an account id.
invalid_cursor400Use the cursor the last page returned, with the same sort.
invalid_declaration409The new policy is not additive. Put back what the message lists.
invalid_description400description is a string, or null to clear it.
invalid_downloadable400downloadable is true or false.
invalid_email400Send an array of email addresses.
invalid_filter400Fix the filter clause: field, operator, value.
invalid_handle400A handle is required and must be valid.
invalid_header400header is true or false.
invalid_instances400Send instances, or a top-level slug and values, not both.
invalid_json400Send a JSON object.
invalid_key400A workspace key needs keyId and label.
invalid_key_hash400keyHash is the lowercase hex SHA-256 of the key.
invalid_kind400kind must be one of the seven artifact kinds.
invalid_live400live is true or false.
invalid_make_own400makeOwn is true or false.
invalid_members_can_edit400membersCanEdit is true or false.
invalid_move400Operator move with a malformed body.
invalid_path400Paths are relative, /-separated, under 256 characters, and never start with _.
invalid_policy400, 413The data policy failed a rule or a cap; the message names it.
invalid_query400The query was refused; edit it as the message suggests.
invalid_reasonMCPA report's reason is too long. Say it in a sentence.
invalid_reassign400from and to must be two different accounts.
invalid_role400, MCPThat role is not offered here. Use viewer, commenter or editor; collaborator and member still work as aliases. Admin was folded into Owner.
invalid_shot400Send the PNG bytes as the body.
invalid_showcase400showcase is true or false.
invalid_slug400Slugs are lowercase kebab, 3–63 characters.
invalid_social400social is {title, description, image}, or null.
invalid_specMCPSend the template's whole spec when revising it.
invalid_template400The template slug names nothing. Look it up with super_templates.
invalid_title400title is a string, or null to clear it.
invalid_upload400Stage the file with super_upload and send its uploadId.
invalid_values422The values do not fit the template's slots; fix each listed problem.
invalid_version400version is a positive integer that exists.
invalid_visibility400visibility is private, organization or public.
invalid_window400since/until is an instant, a relative window or a version.
key_revoked401, 409The key was revoked. Reconnect.
length_required411Send a Content-Length.
live_invalid_messageWebSocketSend JSON frames.
live_unknown_messageWebSocketSend ping, subscribe or, as the owner, phase.
manage_on_platform403Share or rename on the dashboard page the message names.
mcp_not_configured500This plane has no MCP backend. Use another plane, or HTTP.
mcp_timeout504, MCPNo answer in 55 s; the call may still finish. Check before retrying a change.
mcp_unavailable502The MCP endpoint could not reach the worker. Retry shortly.
method_not_allowed405Use the method the message names.
missing_index400Add a non-empty index.html at the bundle root.
missing_prompt400Send metadata.prompt: one sentence on why this was built.
name_exhausted409Every -copy name is taken. Rename the duplicate.
no_files400Send a files array.
no_runtime400The template has no code to clone; write the page and super_publish it.
not_found404No such artifact, version, upload or route, or not yours to see.
order_mismatchMCPorder must list every artifact in the project once.
organization_unavailable403Workspace-wide sharing needs a team workspace on Team.
page_refused422A guest page must be UTF-8 HTML.
partial_publishMCPSome pages of a batch published; the message lists which.
plan_limit400, 402Over a plan limit. Free space or change plan.
plan_required402Workspace keys need Team. Use a personal key meanwhile.
plan_unconfirmed503The workspace's plan could not be checked. Retry in a minute.
policy_field_conflict409A field changed type. Rename it and set replaces.
policy_with_template400Do not send policy, html or files with a template.
rate_limited429Too many calls; the message says when to come back. See Limits.
record_conflict409A concurrent write won. Retry.
reserved_slugMCPThat slug is taken. Choose another.
role_unavailable503Your workspace role could not be confirmed. Retry.
scope_immutable409A key cannot change between personal and workspace scope.
shot_too_large413Crop the comment screenshot tighter, or post without one.
showcase_requires_public400Make the artifact public and published first.
slug_reserved400The platform reserves that slug. Pick another.
source_forbidden403A bound dashboard may only read an artifact you own.
source_not_found400The dashboard's source artifact does not exist.
source_shape_mismatch400Match the source stream's declared shape.
source_stream_unknown400The source declares no stream by that name.
source_visibility_forbidden400A public dashboard may not read rows; use aggregate or count.
template_existsMCPYou already own that template; revise it instead.
templates_unavailable503The template registry is unreachable. Retry shortly.
too_manyMCPToo many entries or addresses in one call. Split the batch.
too_many_files400More than 200 files.
too_many_instances400Too many instances in one template publish. Split the batch.
too_many_slugs400Too many slugs in one listing. Split the request.
unauthorized401No key, a wrong key, or a key from another plane (production or staging). Ask your agent which account it uses.
unknown_dataset400No dataset has that key.
unknown_toolMCPNo tool by that name; accepts lists the current ones.
upload_incomplete400PUT every declared file, then publish again.
version_published409Publish another version before deleting this one.
workspace_deleted401The workspace was deleted. Its owner can restore it within 30 days.