Guides/Errors

Errors

The shape of every error response and the Data API error codes.

Errors

Every error response from the Data API has the same envelope:

{ "error": { "code": "record.notFound", "message": "Record not found", "details": {} } }

details is optional.

Status codes

StatusCodeMeaning
401auth.invalidMissing, malformed, unknown, expired, or revoked Bearer token.
403database.disabledWorkspace Database flag is off.
403scope.deniedValid key, missing tables:read or tables:write.
404table.notFoundTable UUID is not in this workspace.
404record.notFoundRecord does not exist on that table.
404column.notFoundColumn missing, or FILE route used on a non-FILE column.
400filter.unsupportedList filter cannot be applied honestly (computed / FILE / REFERENCE / MULTISELECT / LONGTEXT).
413storage.limitReachedWorkspace storage headroom would be exceeded.
422fields.unknownPayload key is not a column name.
422fields.invalidValue failed validation (or invalid JSON / cursor).
422fields.requiredRequired write column missing on create.
422file.use_uploadFILE JSON on POST/PATCH — use presign → PUT → register.
422file.mimeNotAllowedMIME type not allowed on that FILE column.
422file.tooLargeFile larger than the column max.
422file.tooManyCell would exceed the FILE count cap.
422file.malformedRegister key is empty, contains .., or is outside {tableId}/{recordId}/.
422datetime.invalidDATETIME was not an ISO-8601 string.
422bulk.tooManyBulk create exceeded 50 rows.
422reference.unsupportedREFERENCE write used a non-record entity type.
429rate.limitedPer-key RPM bucket empty. See Rate limits.

Field-level details

When validation fails, details may name the column:

{
  "error": {
    "code": "fields.unknown",
    "message": "Unknown field",
    "details": { "key": "NotAColumn" }
  }
}