Error Object Shape
All error responses include a top-levelerror object:
string
A machine-readable error identifier. Use this in your application logic to branch on specific failure types. See the full table below.
string
A human-readable description of what went wrong. Suitable for logging; do not display raw API error messages directly to end users without sanitizing.
string | null
When present, identifies the specific request parameter that caused the error. Always check this field on
400 and 422 responses to pinpoint the failing field.string | null
A link to the relevant documentation section for this error code. May be
null if no additional documentation is available.Error Code Reference
Common Error Scenarios
400 — Bad Request or Validation Error
Returned when the request body cannot be parsed or a field fails a validation rule. Check theparam field to identify which parameter is invalid:
401 — Unauthorized
Your API key is absent, malformed, or revoked. Verify that theAuthorization: Bearer YOUR_API_KEY header is present and that the key is still active in Settings → API.
403 — Forbidden
Your key is valid but does not have access to the requested resource. This can occur when a key is scoped to specific resources or when you attempt to access a resource that belongs to a different account.404 — Not Found
The resource ID in the URL path does not exist. Verify the ID is correct and that the resource has not been deleted.409 — Conflict
A duplicate resource already exists. For example, attempting to create a contact with a phone number that already belongs to an existing contact. The existing resource ID is usually included in the error message.422 — Unprocessable
The request is syntactically valid but cannot be executed given the current state of the system. For example, triggering a WhatsApp flow for a contact who has never interacted on WhatsApp. Inspect themessage field for the specific reason.
429 — Rate Limit Exceeded
You have exceeded your request budget. Read theretry_after field and wait before retrying. See the Rate Limits guide for backoff strategies.
500 — Internal Error
An unexpected error occurred on the Fliqr AI platform. These are rare. Retry using exponential backoff (starting at 1 second, doubling up to a maximum of 32 seconds). If the error persists beyond a few minutes, check the status page.503 — Service Unavailable
The platform is temporarily unavailable, typically during a brief maintenance window or traffic spike. Treat this the same as a500 — retry with backoff and monitor the status page.
Handling Errors in Code
Structure your API client to handle errors at the HTTP layer before inspecting the response body:What’s Next
Authentication
Ensure your API key is set up correctly to avoid 401 and 403 errors.
Rate Limits
Learn how to handle 429 responses and implement backoff strategies.