All API errors return a consistent JSON envelope with a nested error object, a success: false flag, and a top-level trace_id for debugging.
"message": "Missing required field"
"trace_id": "2eff5df5c6f688733c007523c4d61cd9"
On 429 responses, error also includes a retry_after integer (seconds to wait before retrying).
Tip: Always include the trace_id from error responses when contacting Linq support. See Debugging for more on trace IDs.
| Range | Category | Retry? |
|---|
| 1xxx | Client/Request Errors | No — fix the request |
| 2xxx | Resource Errors | No — fix auth or resource reference |
| 3xxx | Server Errors | Yes — retry with backoff |
| 4xxx | Delivery Errors | Sometimes — depends on cause |
| 5xxx | Attachment/File Errors | Sometimes — depends on cause |
| Code | Message | HTTP | Troubleshooting |
|---|
| 1001 | Missing required field | 400 | Check API docs for required fields. |
| 1002 | Phone number must be in E.164 format | 400 | Include country code with + prefix (e.g., +14155551234). |
| 1003 | Invalid request body | 400 | Validate JSON syntax. Set Content-Type: application/json. |
| 1004 | Invalid message content | 400 | Ensure parts array has valid text, media, or link parts. A link part must be the only part. |
| 1005 | Invalid parameter value | 400 | Review parameter against API spec. |
| 1006 | Cannot update direct message chats | 409 | Only group chats support updates. |
| 1007 | Rate limit exceeded | 429 | Wait for reset or contact support for higher limits. See Rate Limits. |
| Code | Message | HTTP | Troubleshooting |
|---|
| 2001 | Chat not found | 404 | Verify chat ID is correct UUID from POST/GET /v3/chats. |
| 2002 | Message not found | 404 | Verify message ID and chat access. |
| 2003 | Attachment not found | 404 | Verify attachment ID. Presigned URLs expire — ensure uploads complete in time. |
| 2004 | Unauthorized | 401 | Include valid Bearer token in Authorization header. See Authentication. |
| 2005 | Access denied | 403 | You do not have permission to access this resource. |
| 2006 | Phone number permission denied | 403 | Verify the phone is assigned to your account. |
| 2007 | Attachment not ready | 404 | Attachment is still processing. Wait a few seconds and retry. |
| 2008 | Recipient not allowed | 403 | In sandbox, recipients must message you first. |
| 2009 | The chat is still being created | 409 | Wait a few seconds and retry. |
| 2010 | Webhook subscription not found | 404 | Verify subscription ID from POST/GET /v3/webhook-subscriptions. |
| 2011 | Feature not available | 403 | Contact support to enable this feature. |
| 2012 | Contact card not found | 404 | No active contact card for this phone number. |
| 2013 | This chat is unavailable | 409 | Chat may have been left or deleted. You cannot interact with it after leaving. |
| 2014 | Contact card already exists | 409 | A contact card already exists for this phone number. Use PATCH to update it. |
| 2015 | Operation conflicts with current state | 409 | The resource is in a state that conflicts with this operation (for example, editing a message that has already been deleted). Refresh state and retry. |
These are transient errors. Retry with exponential backoff (start at 1 second, max 30 seconds). The official SDKs handle retries automatically.
| Code | Message | HTTP | Troubleshooting |
|---|
| 3001 | Server connection error | 500 | Retry after 1-5 seconds. |
| 3002 | Server operation failed | 500 | Retry after 1-5 seconds. If persistent, contact support with trace_id. |
| 3003 | Service connection error | 500 | Retry after 1-5 seconds. |
| 3004 | Service operation failed | 500 | Retry after 1-5 seconds. If persistent, contact support with trace_id. |
| 3005 | Network timeout | 504 | Retry after a short delay. |
| 3006 | Internal server error | 500 | If persistent, contact support with trace_id. |
| 3007 | Maximum delivery attempts exceeded | 500 | Check recipient availability and try again later. |
| Code | Message | HTTP | Troubleshooting |
|---|
| 4001 | Delivery failed | 500 | Try sending again. If persistent, contact support with trace_id. |
| 4002 | Phone not available | 500 | Check phone connectivity status. |
| 4003 | Webhook delivery failed | 500 | Ensure endpoint is reachable and returns 2xx within 10s. See Webhooks. |
| 4004 | Service unavailable | 503 | Retry after 30 seconds. |
| Code | Message | HTTP | Troubleshooting |
|---|
| 5001 | File upload failed | 500 | Retry the upload. Check file size limits. See Attachments. |
| 5002 | File download failed | 500 | Ensure URL is public, HTTPS, with valid SSL. |
| 5003 | Failed to generate file URL | 500 | Retry the request. |
| 5004 | Invalid file type | 400 | Supported types include JPEG, PNG, GIF, MP4, PDF. See supported types. |
| 5005 | File too large | 400 | Reduce or compress file before uploading. See file size limits. |
| 5006 | Content type mismatch | 400 | Ensure URL extension matches actual file type, or use pre-upload. |
| 5007 | Failed to download image from the provided URL | 400 | Ensure the URL is publicly accessible and returns a valid image. |