Error response format
Errors follow RFC 7807:| Field | Description |
|---|---|
type | RFC 7807 URI identifying the error category |
code | Machine-readable error code for programmatic matching |
status | HTTP status code |
message | Human-readable error description |
retryable | Whether retrying may succeed |
traceId | Trace ID for debugging (also in X-Trace-Id header) |
details | Field-level validation errors (when present) |
When to retry
retryable: true: retry with exponential backoff429 RATE_LIMITED: wait forRetry-Afterheader value- Other
4xx: fix the request first
Common error codes
| Code | Status | Action |
|---|---|---|
UNAUTHORIZED | 401 | Check API key and Authorization header |
VALIDATION_ERROR | 400 | Fix the fields listed in details |
ANSWER_MISMATCH | 400 | Answers must match the question set |
CRITERIA_NOT_FOUND | 404 | Generate criteria for the job first |
SCORING_JOB_NOT_FOUND | 404 | Verify scoringJobId exists for this tenant |
RESUME_FETCH_FAILED | 422 | Check resume URL is accessible and not expired |
RESUME_TOO_LARGE | 422 | File must be under 50 MB |
RESUME_ENCRYPTED | 422 | Remove password protection |
RESUME_PARSE_FAILED | 422 | Confirm valid PDF, DOC, or DOCX |
RATE_LIMITED | 429 | Wait for Retry-After and retry |
Error handling with the SDK
The TypeScript SDK retries automatically on429 and 5xx errors with exponential backoff and Retry-After support. You only need to handle non-retryable errors:
Manual retry logic (cURL / raw HTTP)
If you aren’t using the SDK, implement retries yourself:Debugging
When contacting support, include thetraceId, your timestamp and endpoint, and the HTTP status code.