Errors
Every error answers with Content-Type: application/problem+json and the same fields:
{
"type": "https://developers.wfskills.com/docs/errors/insufficient-credits",
"title": "Insufficient credits",
"status": 402,
"detail": "This request needs 10 credits; the balance is 0.",
"instance": "/v1/estimates",
"code": "insufficient_credits",
"param": null,
"request_id": "req_<id>"
}
codeis stable. Read it in your code instead oftitleordetail.typelinks to the page of the code.paramnames the parameter or header at fault, when there is one.request_ididentifies the request. Quote it when you contact support.
A validation_failed error also carries errors, with one entry per failing parameter.
Error codes
| HTTP | Code | Title |
|---|---|---|
| 400 | invalid_request | Invalid request |
| 401 | api_key_missing | API key missing |
| 401 | api_key_invalid | API key invalid |
| 401 | api_key_revoked | API key revoked |
| 401 | api_key_expired | API key expired |
| 402 | insufficient_credits | Insufficient credits |
| 402 | monthly_cap_reached | Monthly cap reached |
| 403 | scope_missing | Scope missing |
| 403 | tenant_suspended | Account suspended |
| 403 | terms_not_accepted | Terms not accepted |
| 403 | ip_not_allowed | IP address not allowed |
| 403 | api_key_paused | API key paused |
| 403 | test_key_on_live_route | Live key required |
| 404 | not_found | Not found |
| 405 | method_not_allowed | Method not allowed |
| 409 | idempotency_conflict | Idempotency conflict |
| 413 | payload_too_large | Payload too large |
| 415 | unsupported_media_type | Unsupported media type |
| 422 | validation_failed | Validation failed |
| 422 | idempotency_key_reused | Idempotency key reused |
| 422 | content_rejected | Content rejected |
| 422 | sandbox_input_on_live | Sandbox input on a live key |
| 422 | unsupported_in_region | Unsupported in region |
| 422 | webhook_url_rejected | Webhook URL rejected |
| 422 | webhook_endpoint_limit | Webhook endpoint limit reached |
| 422 | event_not_redeliverable | Event not redeliverable |
| 422 | records_cap_reached | Records cap reached |
| 422 | billing_profile_incomplete | Billing profile incomplete |
| 422 | pack_unknown | Unknown pack |
| 429 | rate_limited | Rate limited |
| 429 | daily_quota_reached | Daily quota reached |
| 429 | sandbox_daily_cap_reached | Sandbox daily cap reached |
| 500 | internal_error | Internal error |
| 503 | model_unavailable | Estimator unavailable |
| 503 | service_unavailable | Service unavailable |