Published 26 January 2026, Updated 26 January 2026
unauthorized(401) missing/invalid token (returned without envelope).forbidden(403) valid token without required scope.not_found(404) unknown resource or action.method_not_allowed(405) wrong HTTP method.invalid_json(400) body is not valid JSON.missing_fields(400) required fields are missing.invalid_field(400) field name is invalid.invalid_filter_field(400) filter field is invalid.invalid_filter_value(400) filter value/operator is invalid.invalid_order(400) order format is invalid.invalid_order_field(400) order field is invalid.invalid_order_direction(400) order direction is invalid.invalid_email(400) email validation failed (users).duplicate_field(409) a unique field already existsemail_exists(409) email already exists (users).invalid_version(400/404) unsupported API version.invalid_env(400) env is missing/invalid or not allowed.env_mismatch(401) token env does not match URL env.plan_expired(403) token plan expired.request_in_flight(429) another request is still processing for this token.rate_limit_daily(429) daily limit reached.rate_limit_minute(429) per-minute limit reached.rate_limit_error(500) rate limit storage failed.db_connect_failed(500) database connection failed.db_query_failed(500) database query failed.db_insert_failed(500) database insert failed.auth_db_connect_failed(500) auth DB connection failed.auth_db_query_failed(500) auth DB query failed.auth_token_key_missing(500) token HMAC key not configured.token_last_used_failed(500) failed to update token usage.config_invalid(500) missing DB config.invalid_table(500) table or column name is invalid.
| Code | Type | Description |
|---|---|---|
| 401 | unauthorized | missing/invalid token (returned without envelope) |
| 403 | forbidden | valid token without required scope |
| 404 | not_found | unknown resource or action |
| 405 | method_not_allowed | wrong HTTP method |
| 400 | invalid_json | body is not valid JSON |
| 400 | missing_fields | required fields are missing |
| 400 | invalid_field | field name is invalid |
| 400 | invalid_filter_field | filter field is invalid |
| 400 | invalid_filter_value | filter value/operator is invalid |
| 400 | invalid_order | |
| 400 | invalid_order_field | |
| 400 | invalid_order_direction | |
| 400 | invalid_email | |
| 409 | duplicate_field | |
| 409 | email_exists | |
| 400/404 | invalid_version | |
| 400 | invalid_env | |
| 401 | env_mismatch | |
| 403 | plan_expired | |
| 429 | request_in_flight | |
| 429 | rate_limit_daily | |
| 429 | rate_limit_minute | |
| 500 | rate_limit_error | |
| 500 | db_connect_failed | |
| 500 | db_query_failed | |
| 500 | auth_db_connect_failed | |
| 500 | auth_db_query_failed | |
| 500 | auth_token_key_missing | |
| 500 | token_last_used_failed | |
| 500 | config_invalid | |
| 500 | invalid_table |
If debug mode is enabled, some 500 errors may include a detail message.
