Skip to main content
When a request fails, first read three values:
  • statusCode is the HTTP status repeated in JSON.
  • message explains the problem to a human.
  • error.code is the stable value your program should check.
Also save the X-Request-ID response header. It lets HaulStow support find the exact request without needing your API key or customer data.

Quick fixes

“It works in curl but not in my browser”

That is expected. The public /v1 API is server-to-server and intentionally does not enable CORS. Do not expose an API key to the browser to work around this. Use this flow:
The developer portal itself uses separate browser-facing JWT endpoints under /api/v1/developer/*.

Safe retry rules

  • Retry 429 after Retry-After.
  • Retry temporary 5xx failures with increasing delays.
  • Retry a create request with the same body and same idempotency key.
  • Do not repeatedly retry validation, scope, or environment errors; fix the request or credential first.
  • Do not log the Authorization header, complete API key, webhook secret, or full request body.

What to send support

Send:
  1. X-Request-ID;
  2. the UTC time of the request;
  3. the HTTP method and path, such as POST /v1/deliveries;
  4. the status and error.code;
  5. whether it happened in sandbox or live.
Never send a complete API key or webhook signing secret.