Skip to main content

Overview

The Inbox API returns consistent error responses with actionable information. This guide covers all error codes, their causes, and recovery strategies.

Error response format

All errors follow this structure:

HTTP status codes

Authentication errors

UNAUTHORIZED

Status: 401 When it occurs:
  • API token is missing from the request
  • API token is invalid or malformed
  • API token has expired or been revoked
Example response:
How to fix:
  1. Verify the Authorization header is present: Authorization: Bearer YOUR_TOKEN
  2. Check for extra spaces or newlines in the token
  3. Generate a new token from your Inbox dashboard

FORBIDDEN

Status: 403 When it occurs:
  • Token is valid but lacks access to the resource
  • Resource belongs to a different team
  • Feature not available on your plan
Example response:
How to fix:
  1. Verify the resource belongs to your team
  2. Check if your plan includes the requested feature
  3. Contact support if you believe this is an error

Resource errors

THREAD_NOT_FOUND

Status: 404 When it occurs:
  • Thread ID doesn’t exist
  • Thread was deleted
  • Using platform ID instead of Inbox ID
Example response:
How to fix:
  1. Verify you’re using the Inbox ID (CUID2 format like l44e15irdq4db30i77cgphhx), not the platform ID
  2. Use /threads/lookup to find threads by prospect platform ID
  3. Check if the thread was deleted

PROSPECT_NOT_FOUND

Status: 404 When it occurs:
  • Prospect ID doesn’t exist
  • Platform ID doesn’t match any known prospect
  • Prospect was never in a conversation with your team
Example response:
How to fix:
  1. Verify the platform ID is correct (X user IDs are numeric strings)
  2. Prospects are created when they first message you or when you start a thread
  3. Use /prospects/lookup to check if a prospect exists
Status: 404 When it occurs:
  • Account link ID doesn’t exist
  • Using platform ID instead of Inbox ID
  • Account was disconnected
How to fix:
  1. List account links to get valid IDs: GET /account-links
  2. Use the Inbox ID (CUID2 format), not the X user ID

TAG_NOT_FOUND

Status: 404 When it occurs:
  • Tag ID doesn’t exist
  • Tag was deleted
How to fix:
  1. List tags to get valid IDs: GET /tags
  2. Create the tag if it doesn’t exist

STATUS_NOT_FOUND

Status: 404 When it occurs:
  • Status ID doesn’t exist
  • Status was deleted
How to fix:
  1. List statuses to get valid IDs: GET /statuses
  2. Create the status if it doesn’t exist

MEMBER_NOT_FOUND

Status: 404 When it occurs:
  • Member ID doesn’t exist
  • Member was removed from the team
How to fix:
  1. List members to get valid IDs: GET /members

Validation errors

VALIDATION_ERROR

Status: 400 When it occurs:
  • Required field is missing
  • Field value is wrong type
  • Value exceeds limits
Example response:
How to fix:
  1. Check required fields for the endpoint
  2. Verify data types match the API spec
  3. Ensure string lengths are within limits

INVALID_CURSOR

Status: 400 When it occurs:
  • Cursor object is malformed
  • Cursor is from a different query
  • Cursor has expired
How to fix:
  1. Use cursors exactly as returned from the API
  2. Don’t modify cursor values
  3. Start over from page 1 if cursor errors persist

State errors

DUPLICATE_THREAD

Status: 409 When it occurs:
  • Thread already exists for this prospect-account pair
How to fix: Use lookup before creating:

DUPLICATE_TAG

Status: 409 When it occurs:
  • Tag with same name already exists
How to fix: Use a unique name or find the existing tag.

DUPLICATE_STATUS

Status: 409 When it occurs:
  • Status with same name already exists
How to fix: Use a unique name or find the existing status.

Rate limiting

RATE_LIMITED

Status: 429 When it occurs:
  • Too many requests in a short period
Example response:
Response headers:
How to fix:
  1. Check the Retry-After header for wait time
  2. Implement exponential backoff
  3. Reduce request frequency
See the Rate Limits guide for detailed limits and backoff strategies.

Error handling pattern

A comprehensive error handler for all error types:

Best practices

Error messages may change, but codes are stable:
Catch validation errors locally before making API calls to improve user experience.
Include request details for debugging:
Missing resources are often recoverable - create them or suggest alternatives.

Rate limits

Rate limiting details and backoff

Authentication

API token setup

Troubleshooting

Common issues and fixes

API reference

Complete endpoint documentation