Beezr API

Read the error envelope

json
{"success":false,"error":{"code":"MODULE_NOT_FOUND","message":"...","details":null}}

success: false marks a failed JSON response. error.code is the machine-readable reason; error.message explains what happened. details is usually absent. Idempotency conflicts include operation details. A successful file download returns bytes instead of this envelope.

Error codes

HTTPCodeMeaningHow to fix
400MISSING_REQUIRED_FIELDA required body field is missingSend the required module, data, ids or download fields.
400INVALID_DATANo data fields match the moduleCopy field System names from the Designer.
400INVALID_FILTERInvalid filter field or operatorUse module field names and a supported operator.
400INVALID_SORTNo valid sort fieldUse a field of the module.
400INVALID_IDEMPOTENCY_KEYBad idempotency headerSend one key: 1–128 visible ASCII characters.
400KEY_FIELD_UNRESOLVEDThe module has no key fieldCheck the module key field in the Designer.
401AUTHENTICATION_FAILEDMissing, invalid or paused keyCheck the server environment and X-API-Key header.
404MODULE_NOT_FOUNDWrong module table nameCopy the table name under the module card name.
404NOT_FOUNDNo record with that idCheck the record id used with get.
404CONTENT_NOT_FOUNDFile not attached or bytes unavailableUse the reference module and the record id.
409IDEMPOTENCY_KEY_REUSEDSame key, different bodyKeep the body unchanged; use a new key for new work.
409IDEMPOTENCY_IN_PROGRESSFirst call still running within 120 secondsWait Retry-After: 2 before checking again.
409IDEMPOTENCY_RESULT_UNKNOWNThe first outcome is unknownReconcile the record before starting new work.
413PAYLOAD_TOO_LARGEMore than 100 bulk itemsSplit the batch into at most 100 items.
400INVALID_CONTENT_PAYLOADA file field got something other than a file objectSend {"fileName", "data"}; multi-file fields take an array of them.
400CONTENT_DECODE_FAILEDFile data is not valid base64Base64-encode the file bytes and send them as data.
400 · 413CONTENT_TOO_LARGEFile over 10 MB (400 on upload, 413 on download)Keep each file within 10 MB. The message names the field.
429RATE_LIMIT_EXCEEDEDA rate limit was exceededWait Retry-After seconds; use the read reset header where applicable.
429TOO_MANY_CONCURRENT_REQUESTSToo many concurrent callsKeep at most 2 in flight; wait Retry-After: 1.
429MONTHLY_QUOTA_EXCEEDEDMonthly allowance passed 110%Stop retrying until the 1st.
409 · 422 · 500CREATE_FAILEDRefused or failed; error.message says why409: a record with this key already exists. 422: a workspace rule or plan limit refused it; fix the data, don't retry as is. 500: server problem; retry once.
409 · 422 · 500UPDATE_FAILEDRefused or failed; error.message says why409: a record with this key already exists. 422: a workspace rule or plan limit refused it; fix the data, don't retry as is. 500: server problem; retry once.
409 · 422 · 500DELETE_FAILEDRefused or failed; error.message says why409: a record with this key already exists. 422: a workspace rule or plan limit refused it; fix the data, don't retry as is. 500: server problem; retry once.
500QUERY_FAILEDThe read failedRetry once; contact us if it persists.
500GET_FAILEDThe read failedRetry once; contact us if it persists.
500FIELD_LOAD_FAILEDServer problemRetry later.
500INTERNAL_ERRORServer problemRetry later.

Fix the cause before repeating a write

Unknown field names in data are ignored. INVALID_DATA means none matched. Business rules can return CREATE_FAILED, UPDATE_FAILED or DELETE_FAILED with HTTP 500 today; read the message before repeating the operation.

A 429 needs limit-specific handling, and a 409 needs idempotency conflict handling. Don't treat every non-200 response as permission to run a new create.