Skip to content

Error codes

Every Postbag API error is { code, message, hint, docs }. This page lists each code, its HTTP status and the hint the API returns, so humans and agents can act on it.

Updated Read as Markdown
On this page
  1. Codes

Every error response has the shape:

{ "error": { "code": "mapping_incomplete", "message": "…", "hint": "Map every required stream field before attaching.",
             "docs": "https://postbag.dev/docs/errors/mapping_incomplete", "details": { … } } }

hint says what to do next. docs deep-links to the section below. details carries structured specifics (validation issues, missing fields, retry delay).

Codes

CodeStatusHint
unauthorized401Provide a session cookie or an Authorization: Bearer pb_live_… key.
forbidden403Use credentials with permission for this operation (check key scopes).
origin_rejected403Add the site origin to the form’s allowed origins. The submission was still stored as quarantined.
not_found404Check the id and organization scope.
conflict409The resource already exists, or is still referenced elsewhere. Consider if_exists: "return".
idempotency_conflict409Reuse an Idempotency-Key only for the identical operation.
plan_limit_reached402Change plan limits or remove an unused resource.
payload_too_large413Reduce the payload size, field count, or nesting depth; multipart has a 16 MiB aggregate ceiling.
attachment_too_large413Use a smaller file or raise the organization’s per-file limit.
attachment_limit_reached413Remove files or raise the per-Submission attachment count.
attachment_storage_limit_reached402Delete old Submissions with attachments or upgrade retained capacity.
attachment_storage_unavailable503Configure or restore the private S3-compatible storage service, then retry.
unsupported_media_type415Use a supported Submission encoding; sandbox Forms remain file-free.
validation_failed422Correct the fields described in details.issues and retry.
mapping_incomplete422Map every required stream field before attaching; details lists them.
stream_schema_missing422The stream has no schema and the attached source can’t provide one. Attach a form that has a published schema or a submission (its fields become version 1), or POST /v1/streams/{id}/schema.
schema_violation422Publish a compatible schema or correct the submitted fields.
expressions_not_enabled422Use from, const or default until expressions ship.
rate_limited429Retry after the indicated delay (Retry-After). The submission was stored as quarantined.
internal_error500Retry; contact support if this persists.

Give the form job to your agent.

It can build, wire and test the form before you even sign up. Claim it when it's worth keeping.