Error Codes

Every error includes three things: what was attempted, what went wrong, and what to do instead. Fuzzy matching suggests corrections for typos.

TABLE_NOT_FOUND404

Table 'x' not found. Did you mean 'y'? (also returned 403 on a WebSocket table-room ownership mismatch)

Fix: Call hypertab_list_tables to see available tables.

COLUMN_NOT_FOUND404

Column 'x' not found on table 'y'. A fuzzy 'did you mean' suggestion is included.

Fix: Call hypertab_get_table_schema to see available columns.

VALIDATION_ERROR400

Generic input validation failure. Also returned for an unknown filter operator, with suggested_op and valid_ops in details.

Fix: Check the parameter types and constraints. Filter ops must be one of the 15 supported operators.

WORKSPACE_SELECTOR_CONFLICT400

Realtime ticket workspace selectors contain different workspace IDs or slugs.

Fix: Send one workspace selector, or use the same value in every workspace header and body field.

CONFIRMATION_REQUIRED400

A destructive operation needs confirm: true (soft delete, recoverable for 30 days).

Fix: Add confirm: true to the arguments.

ROW_LIMIT_EXCEEDED403

Plan record limit reached (current and limit are in details).

Fix: Delete unused records or export and move data. Paid capacity is not available in the public beta.

TABLE_LIMIT_EXCEEDED403

Plan table limit reached (current and limit are in details).

Fix: Delete unused Tables. Paid capacity is not available in the public beta.

RATE_LIMIT_EXCEEDED429

Per-minute request rate limit reached.

Fix: Reduce the request rate and retry after the number of seconds in the response suggestion.

RATE_LIMITED429

Webhook request throttled (per-IP or per-source bucket).

Fix: Back off and retry. A Retry-After header is set on the response.

UNAUTHORIZED401

Missing or invalid API key/JWT, or the short-lived WebSocket ticket is invalid, expired, or already used.

Fix: Use Authorization: Bearer for HTTPS requests. Request a fresh /ws/tickets grant before reconnecting.

FORBIDDEN403

Authenticated but lacking permission (e.g. an admin-only endpoint).

Fix: Use a credential with the required permissions.

SCOPE_DENIED403

The API key lacks the required capability scope for the route (required_scopes and current_scopes in details).

Fix: Create an API key that includes the required scope.

ROLE_DENIED403

The key has the scope, but workspace role policy forbids the action.

Fix: Ask a workspace owner or admin to perform this action or change your role.

SURFACE_TOKEN_TRANSPORT_DENIED403

A retired hosted-surface compatibility credential was rejected on MCP or a Table WebSocket.

Fix: Use a normal scoped workspace credential for current Project and Table workflows.

AUTH_DB_TIMEOUT503

The system-DB auth lookup exceeded its 10s bound (cold-start stall guard).

Fix: Retry the request shortly.

PAYLOAD_TOO_LARGE413

A request body exceeds its route limit: 1 MiB ordinary API, 8 MiB CSV import, or 2 MiB public ingress.

Fix: Split the payload into smaller requests and retry.

INVALID_PAYLOAD400

The webhook body is not valid JSON, or not an object or array of objects.

Fix: Send a JSON object or an array of JSON objects.

TOO_MANY_FIELDS400

A webhook payload (or batch item) has more than 100 fields.

Fix: Reduce the payload to 100 fields or fewer per item.

BATCH_TOO_LARGE400

A webhook array batch exceeds 1000 items per call.

Fix: Split the array into batches of 1000 or fewer items.

WEBHOOK_NOT_FOUND404

No source resolves for the incoming webhook id.

Fix: Call hypertab_list_webhooks to see available webhooks.

WEBHOOK_ERROR500

Webhook processing failed (mapped to a safe message; can also be 400/401/404 by pattern).

Fix: Review webhook logs for details.

ENDPOINT_ERROR500

A webhook/API route (/e/:endpointId) runtime failure occurred.

Fix: Inspect metadata with hypertab_list_endpoint_logs, correct the cause, then submit a new authorized request. Stored-body replay is disabled.

NOT_FOUND404

The route was not matched (404 handler), with an available-routes suggestion.

Fix: Check the path and method against the API reference.

UPGRADE_REQUIRED426

A WebSocket endpoint was reached without an Upgrade: websocket header.

Fix: Open the endpoint as a WebSocket connection.

WORKSPACE_REALTIME_UNAVAILABLE503

The WORKSPACE_ROOM Durable Object binding is not present in this environment.

Fix: Retry once workspace realtime is available in this environment.

TABLE_REALTIME_UNAVAILABLE503

The TABLE_ROOM Durable Object binding is not present in this environment.

Fix: Retry once table realtime is available in this environment.

USAGE_RECORD_FAILED500

Could not write the durable realtime usage event for a connection.

Fix: Retry the request.

QUEUE_MESSAGE_FAILEDnon-HTTP

A queue consumer job failure code recorded in structured logs (non-HTTP; triggers a retry).

Fix: No action needed; the queue consumer retries automatically.

INTERNAL_ERROR500

An unexpected server error occurred (a trace_id is included in details).

Fix: Retry the request. If it persists, contact support with the trace_id.