Responses

Form endpoints accept POST. GET returns a short HTML explanation and does not create an Inbox event.

JSON

// Delivered
{ "ok": true, "status": "sent", "message": "…", "redirect": "https://…" }

// First submit — confirmation email sent
{ "ok": true, "status": "pending_confirmation", "message": "…", "redirect": "https://…" }

// Error
{
  "ok": false,
  "status": "error",
  "code": "monthly_limit",
  "message": "…",
  "redirect": null,
  "errorRedirect": "https://…"
}

redirect is the success URL (your _next or the hosted thank-you page). errorRedirect is present on failures when _postme_error_next is set.

Error codes

invalid_email

The address in /submit/{email} is not a valid inbox.

unknown_token

The Intake ID is not registered.

missing_recipient

No recipient was specified.

origin_blocked

The Intake origin allowlist rejected this site.

no_routing

The Intake has no ready destination.

monthly_limit

This form reached its monthly event quota. HTTP 403. The inbox or account owner is emailed once per month.

captcha_failed

Turnstile verification failed on public /submit. HTTP 400.

rate_limited

Too many requests. HTTP 429.

internal

Unexpected server error.

Other errors use HTTP 400. Successful JSON responses use HTTP 200, including pending_confirmation.