What is relayfor.si?

Errors

Every error both APIs return, why it happens, what to do and whether to retry.

Every error carries a stable code. Branch on the code, never on the message: messages may be reworded.

RFS Router

Router errors come in each format's own shape, so the OpenAI and Anthropic SDKs raise them as they would their own. Search by code, status or words.

31 of 31
401invalid_api_key
When
The key is missing, mistyped, unknown or revoked. A key revoked while a call starts is refused at its reserve.
What to do
Send the full router key as Authorization: Bearer rf_ai_... or x-api-key: rf_ai_.... If it was revoked, make a new one.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "Missing or malformed API key. Send your rf_ai_ key as `Authorization: Bearer <key>` or `x-api-key`.",    "type": "authentication_error",    "code": "invalid_api_key",    "param": null  }}
Messages (HTTP 401)
{  "type": "error",  "error": {    "type": "authentication_error",    "message": "Missing or malformed API key. Send your rf_ai_ key as `Authorization: Bearer <key>` or `x-api-key`.",    "code": "invalid_api_key"  }}
400invalid_request
When
The body is not JSON, or misses a field the format needs, such as model or messages. A model's provider can refuse a parameter the same way.
What to do
Check the body against the endpoint's reference, and the parameters against the model.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The request body is not valid JSON.",    "type": "invalid_request_error",    "code": "invalid_request",    "param": null  }}
Messages (HTTP 400)
{  "type": "error",  "error": {    "type": "invalid_request_error",    "message": "The request body is not valid JSON.",    "code": "invalid_request"  }}
400unknown_model
When
No listed model has this id. On POST /images, no image model has it.
What to do
Copy an id from GET /models or the models page, or from GET /images/models for images. Ids look like anthropic/claude-sonnet-5.5.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "Unknown model `openai/gpt-9`. Every model we serve is listed at /api/v1/models.",    "type": "invalid_request_error",    "code": "unknown_model",    "param": null  }}
Messages (HTTP 400)
{  "type": "error",  "error": {    "type": "invalid_request_error",    "message": "Unknown model `openai/gpt-9`. Every model we serve is listed at /api/v1/models.",    "code": "unknown_model"  }}
400model_not_served
When
Free models, :free and :batch versions, retired versions and routers that pick a model after the call. Image models billed for something a request can't bound, such as fonts. Their price can't be reserved up front.
What to do
Use the paid model's own id, or add :nitro, :floor, :exacto or :online to it.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "`meta-llama/llama-5:free` is a free model, and free models are not served here. Every model we serve is listed at /api/v1/models.",    "type": "invalid_request_error",    "code": "model_not_served",    "param": null  }}
Messages (HTTP 400)
{  "type": "error",  "error": {    "type": "invalid_request_error",    "message": "`meta-llama/llama-5:free` is a free model, and free models are not served here. Every model we serve is listed at /api/v1/models.",    "code": "model_not_served"  }}
400tool_not_served
When
Tools that run other models, or that keep files, memory or a sandbox on a shared account: image generation tools, hosted code execution, file search, memory, X search. Also a tool loop with no step limit.
What to do
Remove the tool, or run it on your own machine. Web search and web fetch are served. Set max_tool_calls on tool loops. To make images, call POST /images.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "X search bills for every post it returns, with no limit a request can set, so its cost cannot be reserved up front. Remove `x_search` to search the web only.",    "type": "invalid_request_error",    "code": "tool_not_served",    "param": null  }}
Messages (HTTP 400)
{  "type": "error",  "error": {    "type": "invalid_request_error",    "message": "X search bills for every post it returns, with no limit a request can set, so its cost cannot be reserved up front. Remove `x_search` to search the web only.",    "code": "tool_not_served"  }}
400model_no_image_input
When
The request carries an image, and neither the model nor any of its fallbacks reads images.
What to do
Pick a model whose architecture.input_modalities in GET /models includes image, or add one as a fallback.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "`z-ai/glm-5.1` does not read images. Send the image to a model that does: GET /api/v1/models lists each model's input modalities.",    "type": "invalid_request_error",    "code": "model_no_image_input",    "param": null  }}
Messages (HTTP 400)
{  "type": "error",  "error": {    "type": "invalid_request_error",    "message": "`z-ai/glm-5.1` does not read images. Send the image to a model that does: GET /api/v1/models lists each model's input modalities.",    "code": "model_no_image_input"  }}
400image_type_not_served
When
An inline image (a data: URL or base64 block) is not PNG, JPEG, WebP or GIF, such as HEIC, SVG or TIFF.
What to do
Convert the image to PNG, JPEG, WebP or GIF, or send it as a link.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "Images are read as PNG, JPEG, WebP or GIF, and this request sends image/heic. Convert it to one of those first.",    "type": "invalid_request_error",    "code": "image_type_not_served",    "param": null  }}
Messages (HTTP 400)
{  "type": "error",  "error": {    "type": "invalid_request_error",    "message": "Images are read as PNG, JPEG, WebP or GIF, and this request sends image/heic. Convert it to one of those first.",    "code": "image_type_not_served"  }}
413request_too_large
When
The body is over 4 MB, or the prompt is longer than the model's context.
What to do
Send images and files as URLs, not inline base64. Shorten a long conversation, or pick a model with a longer context.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The request body is larger than 4 MB. Send images and files as URLs instead of inline data.",    "type": "invalid_request_error",    "code": "request_too_large",    "param": null  }}
Messages (HTTP 413)
{  "type": "error",  "error": {    "type": "request_too_large",    "message": "The request body is larger than 4 MB. Send images and files as URLs instead of inline data.",    "code": "request_too_large"  }}
400request_over_capacity
When
The request asks for more output than the router can hold for a single call right now.
What to do
Lower max_tokens (max_output_tokens on Responses), then send it again.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "This request asks for more output than the gateway can take on right now. Lower max_tokens (max_output_tokens on Responses) and retry.",    "type": "invalid_request_error",    "code": "request_over_capacity",    "param": null  }}
Messages (HTTP 400)
{  "type": "error",  "error": {    "type": "invalid_request_error",    "message": "This request asks for more output than the gateway can take on right now. Lower max_tokens (max_output_tokens on Responses) and retry.",    "code": "request_over_capacity"  }}
404not_found
When
The path doesn't exist, such as embeddings or token counting.
What to do
Use one of the endpoints in this reference.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "`POST /v1/embeddings` is not served here. The models are served at /v1/chat/completions, /v1/responses and /v1/messages, and image generation at /v1/images.",    "type": "not_found_error",    "code": "not_found",    "param": null  }}
Messages (HTTP 404)
{  "type": "error",  "error": {    "type": "not_found_error",    "message": "`POST /v1/embeddings` is not served here. The models are served at /v1/chat/completions, /v1/responses and /v1/messages, and image generation at /v1/images.",    "code": "not_found"  }}
503storage_unavailable
When
Images asked for as links, with response_format: "url". The RFS Router answers images as base64.
What to do
Leave out response_format to get the images as base64.
Retry
Retry
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "Image links are not available right now. Leave out `response_format` to get the images as base64.",    "type": "server_error",    "code": "storage_unavailable",    "param": null  }}
Messages (HTTP 503)
{  "type": "error",  "error": {    "type": "overloaded_error",    "message": "Image links are not available right now. Leave out `response_format` to get the images as base64.",    "code": "storage_unavailable"  }}
402insufficient_balance
When
What the account can spend now is less than this call's reserve, its worst-case cost. The message names both amounts.
What to do
Lower max_tokens so the reserve fits, wait for running calls to finish, or add credit: the token's payouts add it on their own, and a purchase in USDC adds it at once.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "Balance $0.004210 ($0.001000 held by calls running or being priced) is below this request's reserve of $0.019660. Lower the output limit, or buy credit for this account in USDC.",    "type": "billing_error",    "code": "insufficient_balance",    "param": null  }}
Messages (HTTP 402)
{  "type": "error",  "error": {    "type": "billing_error",    "message": "Balance $0.004210 ($0.001000 held by calls running or being priced) is below this request's reserve of $0.019660. Lower the output limit, or buy credit for this account in USDC.",    "code": "insufficient_balance"  }}
402key_limit
When
The key's own daily, weekly or monthly limit can't cover this call's reserve. The account's other keys keep working.
What to do
Wait for the reset named in the message, lower max_tokens, or raise the key's limit on the dashboard or with PATCH /keys/{id}.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "This key's limit of $5.000000 a day is used up: $4.990000 spent and $0.000000 held by calls running or being priced, and this request reserves $0.019660. It resets at 2026-10-01T00:00:00.000Z. Lower the output limit, or ask the account's owner to raise the key's limit.",    "type": "billing_error",    "code": "key_limit",    "param": null  }}
Messages (HTTP 402)
{  "type": "error",  "error": {    "type": "billing_error",    "message": "This key's limit of $5.000000 a day is used up: $4.990000 spent and $0.000000 held by calls running or being priced, and this request reserves $0.019660. It resets at 2026-10-01T00:00:00.000Z. Lower the output limit, or ask the account's owner to raise the key's limit.",    "code": "key_limit"  }}
429rate_limited
When
The account started more than 60 calls at once, or more than 600 a minute.
What to do
Wait for Retry-After-Ms and send again. Official OpenAI and Anthropic SDKs do this for you.
Retry
Retry after the wait in Retry-After-Ms
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "This account is starting calls faster than 600 a minute. Retry in 1 second.",    "type": "rate_limit_error",    "code": "rate_limited",    "param": null  }}
Messages (HTTP 429)
{  "type": "error",  "error": {    "type": "rate_limit_error",    "message": "This account is starting calls faster than 600 a minute. Retry in 1 second.",    "code": "rate_limited"  }}
429too_many_running_calls
When
The account has 8 calls running. A slot frees the moment one ends.
What to do
Queue calls on your side, or wait the 2 to 8 seconds the headers name.
Retry
Retry after the wait in Retry-After-Ms
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "This account already has 8 calls running. Retry when one finishes.",    "type": "rate_limit_error",    "code": "too_many_running_calls",    "param": null  }}
Messages (HTTP 429)
{  "type": "error",  "error": {    "type": "rate_limit_error",    "message": "This account already has 8 calls running. Retry when one finishes.",    "code": "too_many_running_calls"  }}
503/529model_busy
When
Every provider of this model is at capacity. On /messages it is 529 overloaded_error, which Anthropic's SDKs retry.
What to do
Wait for Retry-After-Ms, or use another model. Listing fallbacks in models lets a call run on the next one.
Retry
Retry after the wait in Retry-After-Ms
Cost
Free
Chat Completions, Responses
{  "error": {    "message": "The model `openai/gpt-6.1` is busy at its providers right now. Retry in 12 seconds.",    "type": "server_error",    "code": "model_busy",    "param": null  }}
Messages (HTTP 529)
{  "type": "error",  "error": {    "type": "overloaded_error",    "message": "The model `openai/gpt-6.1` is busy at its providers right now. Retry in 12 seconds.",    "code": "model_busy"  }}
503gateway_busy
When
The router is at its capacity for a moment.
What to do
Wait for Retry-After-Ms and send again.
Retry
Retry after the wait in Retry-After-Ms
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The gateway is busy right now. Retry in 8 seconds.",    "type": "server_error",    "code": "gateway_busy",    "param": null  }}
Messages (HTTP 503)
{  "type": "error",  "error": {    "type": "overloaded_error",    "message": "The gateway is busy right now. Retry in 8 seconds.",    "code": "gateway_busy"  }}
503gateway_capacity
When
The router is topping up its capacity. We are alerted at once.
What to do
Wait for Retry-After-Ms and send again.
Retry
Retry after the wait in Retry-After-Ms
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The gateway is briefly out of capacity. Try again soon.",    "type": "server_error",    "code": "gateway_capacity",    "param": null  }}
Messages (HTTP 503)
{  "type": "error",  "error": {    "type": "overloaded_error",    "message": "The gateway is briefly out of capacity. Try again soon.",    "code": "gateway_capacity"  }}
503gateway_unavailable
When
The router can't reach its models for a moment. We are alerted at once.
What to do
Wait for Retry-After-Ms and send again.
Retry
Retry after the wait in Retry-After-Ms
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The gateway is briefly unavailable. Try again soon.",    "type": "server_error",    "code": "gateway_unavailable",    "param": null  }}
Messages (HTTP 503)
{  "type": "error",  "error": {    "type": "overloaded_error",    "message": "The gateway is briefly unavailable. Try again soon.",    "code": "gateway_unavailable"  }}
503catalog_unavailable
When
The router couldn't read model prices, so it can't size the reserve.
What to do
Send again after 5 seconds.
Retry
Retry after the wait in Retry-After-Ms
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "Model prices are unavailable. Try again shortly.",    "type": "server_error",    "code": "catalog_unavailable",    "param": null  }}
Messages (HTTP 503)
{  "type": "error",  "error": {    "type": "overloaded_error",    "message": "Model prices are unavailable. Try again shortly.",    "code": "catalog_unavailable"  }}
503service_unavailable
When
The router couldn't reach its database before the reserve. Nothing was reserved.
What to do
Send again after about 2 seconds.
Retry
Retry after the wait in Retry-After-Ms
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The balance is briefly unavailable. Try again in a moment.",    "type": "server_error",    "code": "service_unavailable",    "param": null  }}
Messages (HTTP 503)
{  "type": "error",  "error": {    "type": "overloaded_error",    "message": "The balance is briefly unavailable. Try again in a moment.",    "code": "service_unavailable"  }}
500gateway_error
When
A fault in the router after the reserve. The reserve is released and the call is free.
What to do
Send it again. If it keeps failing, write to support@relayfor.si with the x-relayfor-call-id header.
Retry
Retry
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The gateway failed on this call. Retry it.",    "type": "server_error",    "code": "gateway_error",    "param": null  }}
Messages (HTTP 500)
{  "type": "error",  "error": {    "type": "api_error",    "message": "The gateway failed on this call. Retry it.",    "code": "gateway_error"  }}
504upstream_timeout
When
The model sent nothing before the time limit: 30 minutes streamed, 13 minutes not streamed. The call still runs to its end, and is charged what it cost.
What to do
Stream long calls, lower max_tokens or use a faster model.
Retry
Retry
Cost
Only what the provider recorded, usually nothing
Chat Completions, Responses, models, balance
{  "error": {    "message": "The model did not answer in time.",    "type": "server_error",    "code": "upstream_timeout",    "param": null  }}
Messages (HTTP 504)
{  "type": "error",  "error": {    "type": "api_error",    "message": "The model did not answer in time.",    "code": "upstream_timeout"  }}
502upstream_unreachable
When
The connection to the model's provider failed.
What to do
Send it again.
Retry
Retry
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "Could not reach the model provider. Try again.",    "type": "server_error",    "code": "upstream_unreachable",    "param": null  }}
Messages (HTTP 502)
{  "type": "error",  "error": {    "type": "api_error",    "message": "Could not reach the model provider. Try again.",    "code": "upstream_unreachable"  }}
502provider_error
When
The model's provider failed, or refused this one call.
What to do
Send it again, or use another model.
Retry
Retry
Cost
Only what the provider recorded, usually nothing
Chat Completions, Responses, models, balance
{  "error": {    "message": "The model's provider failed to answer. Try again in a moment.",    "type": "server_error",    "code": "provider_error",    "param": null  }}
Messages (HTTP 502)
{  "type": "error",  "error": {    "type": "api_error",    "message": "The model's provider failed to answer. Try again in a moment.",    "code": "provider_error"  }}
503provider_unavailable
When
The model is down at its providers.
What to do
Send it again shortly, or use another model.
Retry
Retry
Cost
Only what the provider recorded, usually nothing
Chat Completions, Responses, models, balance
{  "error": {    "message": "The model is unavailable right now. Try again in a moment.",    "type": "server_error",    "code": "provider_unavailable",    "param": null  }}
Messages (HTTP 503)
{  "type": "error",  "error": {    "type": "overloaded_error",    "message": "The model is unavailable right now. Try again in a moment.",    "code": "provider_unavailable"  }}
404no_provider
When
No provider of the model supports every option in the request, such as tools, images or a long context.
What to do
Drop an option, or pick a model that lists it.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "No provider can serve this request with this model. Try another model, or fewer options such as tools or images.",    "type": "not_found_error",    "code": "no_provider",    "param": null  }}
Messages (HTTP 404)
{  "type": "error",  "error": {    "type": "not_found_error",    "message": "No provider can serve this request with this model. Try another model, or fewer options such as tools or images.",    "code": "no_provider"  }}
403provider_refused
When
The provider's own policy refused the request.
What to do
Change the request, or use another model.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The model's provider refused this request for this model.",    "type": "permission_error",    "code": "provider_refused",    "param": null  }}
Messages (HTTP 403)
{  "type": "error",  "error": {    "type": "permission_error",    "message": "The model's provider refused this request for this model.",    "code": "provider_refused"  }}
422unprocessable
When
The provider accepted the request but couldn't run it.
What to do
Check the parameters against the model, or use another model.
Retry
Fix first
Cost
Free
Chat Completions, Responses, models, balance
{  "error": {    "message": "The model's provider could not process this request.",    "type": "server_error",    "code": "unprocessable",    "param": null  }}
Messages (HTTP 422)
{  "type": "error",  "error": {    "type": "api_error",    "message": "The model's provider could not process this request.",    "code": "unprocessable"  }}
408timeout
When
The provider gave up on the call (408 or 504).
What to do
Send it again, stream it or lower max_tokens.
Retry
Retry
Cost
Only what the provider recorded, usually nothing
Chat Completions, Responses, models, balance
{  "error": {    "message": "The model took too long to answer. Try again.",    "type": "server_error",    "code": "timeout",    "param": null  }}
Messages (HTTP 408)
{  "type": "error",  "error": {    "type": "api_error",    "message": "The model took too long to answer. Try again.",    "code": "timeout"  }}
502upstream_error
When
Any other error from the provider.
What to do
Send it again shortly.
Retry
Retry
Cost
Only what the provider recorded, usually nothing
Chat Completions, Responses, models, balance
{  "error": {    "message": "The request could not be completed. Try again in a moment.",    "type": "server_error",    "code": "upstream_error",    "param": null  }}
Messages (HTTP 502)
{  "type": "error",  "error": {    "type": "api_error",    "message": "The request could not be completed. Try again in a moment.",    "code": "upstream_error"  }}

The short version

StatusMeansRetry?
400The request can't be served as sentNo. Fix it first
401The router key is missing, wrong or revokedNo
402The balance or the key's limit can't cover the reserveNo. Lower max_tokens or add credit
404Unknown path, or no provider for this requestNo
413The body is over 4 MBNo. Send files as URLs
429Too many running calls, or too fastYes, after Retry-After-Ms
500The router failed. The call is freeYes
502 504The model's provider failedYes
503 529Busy for a momentYes, after Retry-After-Ms

Errors inside a stream

Once an answer has started streaming, an error can't change the status any more. It arrives as the format's own error event, so SDKs raise it instead of hanging:

data: {"object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"error"}],"error":{"message":"The model took too long to answer. Try again.","type":"server_error","code":"timeout"}}

The call is charged for what was written before the error.

Management API

Every management API error has one shape: { "error": { "code", "message", "param", "request_id" } }, with the HTTP status that fits. param names the field at fault when there is one. Quote request_id if you contact us.

  • 400invalid_request

    A field is missing, has the wrong type or breaks a rule. param names it, such as split.ai_share.

    What to do: Fix the field the message names, then send again with a new Idempotency-Key.

  • 400missing_idempotency_key

    A POST came without an Idempotency-Key header.

    What to do: Send a unique key with every POST, a UUID.

  • 401unauthorized

    The secret key is missing, mistyped or revoked.

    What to do: Send Authorization: Bearer rf_sk_... with a key from the dashboard's Keys page.

  • 404not_found

    No launch, token, account, key, preset or webhook with this id in this project, or no such path.

    What to do: Check the id. Every id belongs to the project whose key asks.

  • 405method_not_allowed

    The path exists, but not for this method: the Allow header names the ones it takes.

    What to do: Send it with a method from Allow. Each operation's method is in this reference.

  • 409idempotency_in_progress

    A request with the same Idempotency-Key is still running.

    What to do: Wait the 2 seconds Retry-After names and send it again: it then gets the first answer.

  • 409preset_name_taken

    The project has a fee strategy with this name already, whatever the case.

    What to do: Pick another name.

  • 409preset_is_default

    The project's default fee strategy can't be archived.

    What to do: Make another strategy the default first.

  • 413payload_too_large

    The body is over 3.5 MB.

    What to do: Send a smaller image: up to 2 MB before base64.

  • 415unsupported_media_type

    The body is not JSON.

    What to do: Send Content-Type: application/json and a JSON body.

  • 422idempotency_mismatch

    The Idempotency-Key was used for another body in the last 24 hours.

    What to do: Use a new key for a new request.

  • 422too_many_keys

    The account has 100 router keys that are not revoked.

    What to do: Revoke one you no longer use.

  • 422too_many_webhooks

    The project has 5 webhook endpoints.

    What to do: Delete one, or send more events to one endpoint.

  • 422too_many_presets

    The project has 20 fee strategies in use.

    What to do: Archive one you no longer launch with.

  • 422launch_refused

    The launch can't be built as asked: a route wallet that can't be paid, a split outside the strategy, or a simulation that failed. The message says which.

    What to do: Change what the message names, then prepare it again.

  • 422import_refused

    The token can't join a route: not a pump.fun token, its route is locked already, or it pays no creator fee (cashback and holder rewards tokens). The message says which.

    What to do: Check the mint. A token whose route is locked can't be brought.

  • 422insufficient_funds

    The signing wallet can't pay: the SOL a launch costs, or the USDC and network fee of a purchase.

    What to do: Fund the wallet the message names, then prepare it again.

  • 429rate_limited

    More than 300 requests a minute on this secret key, or more than 10 launches and imports a minute in this project.

    What to do: Wait the seconds in Retry-After. A refused request takes nothing from any window.

  • 500internal

    A fault on our side. Nothing was changed.

    What to do: Send it again with the same Idempotency-Key. Quote request_id if it keeps failing.

  • 503launches_closed

    Launches are paused for a moment, for example while token images can't be stored.

    What to do: Try again later.

  • 503purchases_closed

    Buying credit is paused for a moment.

    What to do: Try again later.

  • 503webhooks_closed

    Adding webhook endpoints is paused for a moment.

    What to do: Try again later.

  • 503unavailable

    The chain or our database can't be reached for a moment.

    What to do: Wait the 5 seconds Retry-After names and send it again, with the same Idempotency-Key.

A request refused for any reason changes nothing, and counts against no limit.

  • Unknown paths and methods answer in the same shape. A path the API doesn't have is 404 not_found. A method a path doesn't take is 405 method_not_allowed, with an Allow header naming the ones it does.
  • A refusal that passes by itself says when. idempotency_in_progress (409) sends Retry-After: 2, unavailable (503) sends Retry-After: 5, and rate_limited (429) sends its own wait. Each operation in this reference lists which of its answers carry it.

On this page