1 min read
HTTP errors
Quick reference for every status code you'll see, and what to do.
Submission endpoint (POST /f/{public_id})
| Status | Meaning | What to do |
|---|---|---|
| 200 | Accepted | Done. Status received or spam in the response body. |
| 302 | Redirect | If the form has redirect_url, we 302 there. |
| 400 | Bad request | Malformed JSON, missing required fields. |
| 403 | Origin not allowed | The submission's Origin doesn't match the form's allowed_origins. |
| 410 | Form archived | The form was archived. Restore it or use a different one. |
| 422 | Captcha / validation failed | hCaptcha/reCAPTCHA token missing or invalid; or schema validation failed (hosted forms). |
| 429 | Rate limited | Per-IP/per-form rate limit hit. Back off; the response includes Retry-After. |
| 500 | Server error | Open a support ticket — include the request id. |
REST API (/api/v1/...)
| Status | Meaning |
|---|---|
| 200/201/202 | Success |
| 401 | Token missing / invalid / revoked |
| 402 | Plan does not include API access — upgrade |
| 403 | Token missing the right ability, or policy denied |
| 404 | Record not in the calling team |
| 409 | Conflict (e.g. AI insights regen already running) |
| 422 | Validation failed; see errors map |
| 423 | Plan-locked feature |
| 429 | Rate limited |