Error Codes Reference
The API uses standard HTTP status codes. Error responses include a descriptive message in the error field.
Error Response Format
{
"data": null,
"error": "Descriptive error message here"
}HTTP Status Codes
| Code | Meaning | Common Causes |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource successfully created (POST) |
| 400 | Bad Request | Invalid parameters, missing required fields, malformed JSON |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | API key lacks required permission scope |
| 404 | Not Found | Resource does not exist |
| 406 | Not Acceptable | Missing required Accept header (MCP server) |
| 409 | Conflict | Duplicate resource (e.g., duplicate external_rfq_id) |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Unexpected server error — contact support |
| 503 | Service Unavailable | Semantic search unavailable (OpenAI key not configured) |
Error Handling Best Practices
- Always check the HTTP status code before parsing the response body
- Implement exponential backoff for 429 (rate limit) responses
- Log the full error response for debugging — the
errormessage is human-readable - For 5xx errors, retry with backoff up to 3 times before alerting
- Validate request payloads client-side before sending to reduce 400 errors
Last updated on February 23, 2026