error.code to decide what to fix.
The error envelope
Failed requests return a single top-levelerror object. The body never contains partial success data.
HTTP status codes
Error codes
Other codes you will see:
invalid_api_key (401), insufficient_permissions (403), resource_not_found (404), validation_failed (400), rate_limited (429), and internal_error (500).
Retry guidance by class
Send an
external_id on every message. It makes retries safe: a duplicate returns 409 duplicate_external_id instead of sending the message twice.
Rate limit responses carry X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and Retry-After (seconds).
Reproducing an error
Use-i to see the status line and rate limit headers alongside the body.
to value returns:
Handling errors in code
This helper retries only the classes that are worth retrying and raises with thetrace_id attached.
Using trace_id with support
Every response carries atrace_id, on success in the X-Trace-Id header and on failure inside the error envelope. It identifies one request in our logs and stays valid for 30 days.
Store it with your own request logs. When you open a ticket at support@bluereacher.com, include the trace_id, the error.code, and the approximate timestamp. That is enough to pull the full request path without asking you for your payload or your API key. Never send us your API key.