Skip to main content
Start with the status code you got back. If the problem is not an HTTP status, skip to the agent or deployments.

An API call was refused

Every refusal carries the same envelope, { error: { message, type, code } }, plus an X-Request-Id header worth quoting in any support ticket. The first question is always whether waiting helps.
Should I retryread the headers, not the statusDoes the refusal carry Retry-After, or Retry-After-Ms?Yes: wait that long, then send the same request again409, every 429, 500, and the retryable 503 codesNo: waiting cannot help, change the request or the credentials400, 401, 402, 403, 404, 413, 503 deployment_errorRead Retry-After-Ms first when your client supports it. It is the only one of the two that can express await shorter than a second. On the hosted admission codes the value is an estimate, capped at 8 seconds,so add jitter when many workers share one key.
Should I retryread the headers, not the statusDoes the refusal carry Retry-After, or Retry-After-Ms?Yes: wait that long, then send the same request again409, every 429, 500, and the retryable 503 codesNo: waiting cannot help, change the request or the credentials400, 401, 402, 403, 404, 413, 503 deployment_errorRead Retry-After-Ms first when your client supports it. It is the only one of the two that can express await shorter than a second. On the hosted admission codes the value is an estimate, capped at 8 seconds,so add jitter when many workers share one key.
The key is missing, wrong, or expired. Check all three:
  • The header is exactly Authorization: Bearer YOUR_KEY, with no extra quotes or whitespace.
  • The key belongs to the same workspace as the target model or deployment.
  • The key has not been revoked or passed its expiry at Settings > API Keys.
Creating a new key is instant and needs no redeployment. An expired key returns 401 expired_api_key specifically.
The workspace balance cannot cover the call, so it was refused before reaching a GPU. Nothing was billed. Add credits at Settings > Cost. If a settlement drove the balance below zero, your next top-up offsets the negative amount first. See Pricing and credits.
Either the key cannot reach what you asked for, or the workspace cannot. A pipeline-scoped key whose pipeline id does not match the URL path, or a key scoped away from the model, produces the first. Switch to a workspace-scoped key and select the model with the model field in the body. See Authentication.A 403 that talks about a limit is the second: your lifetime credit purchases have not reached the milestone that unlocks the capability. Adding credits clears it.
The model id does not resolve for your key. Model ids are not OpenAI names, and they are not the title on a model card. Read the live list and pass one of those ids:
Read Retry-After, wait that long, then send the same request again. Which limit you hit is named in the response headers, and there are two different ones:The window slides, so capacity returns gradually rather than refilling on a clock edge: pacing requests evenly beats bursting. If many workers share one key, add jitter to your retries. A 429 on a key that has never authenticated before is the connection gate, which bounds how fast new credentials can be presented; roll a new key out on one request before fanning out. Read error.limit from the response for the current number, and see Rate limits.There is no plan that raises these. Subscriptions are retired, and a checkout attempt returns 410 subscription_sales_retired.
On a hosted model, hosted_model_paused means the model is paused, not gone. The id stays valid and stays listed, paused_until carries the scheduled return, nothing is charged, and Retry-After is capped at 60 seconds. Keep the id in your configuration and retry.On your own deployment, a 503 usually means the endpoint is stopped or still provisioning. Check its status on Deployments, start it if it is stopped, or wait 1 to 3 minutes if it is provisioning.

The agent and optimization runs

It asks when your prompt is ambiguous, and it answers a direct instruction. Say one of these:
Resetting clears the current configuration and conversation context. Previous optimization results and deployment history stay in the dashboard.
Runs execute server-side, so a refresh, a dropped connection, or a closed tab does not stop one. Reopening the session re-attaches in about a second. If a run was interrupted, it converges to a blocked, retryable state rather than appearing to run forever. See Execution lifecycle.
Results reflect the constraints you gave. Adjust and run again:
Each starts a new run with a new quote, and you can compare sessions side by side.
RunInfra publishes a ratio only when both sides were measured the same way. When they were not, it crowns no winner and names the axis that differed: candidates on different GPUs, latencies from different instruments, throughput in different units, per-request costs on different bases, or two labels pointing at one stored measurement. Re-run the lanes so both sides share one GPU target and one measurement path. See Run outcomes.
That is the default. Quantization trades output quality for speed and memory, so it runs only when you ask for it, when the model does not fit the resolved GPU, or when the target is local or on-device hardware. The plan says which applied. Ask for it directly, or give the run a hardware target it has to fit:
See Lossless first.
Aggressive low-bit quantization can cost quality on complex tasks. If the measured gate fails or your own test set looks worse, ask for higher precision:
Expect higher memory use or cost than a low-bit variant.

Deployments

The Deploy tab names the cause and the next action first. The common ones are GPU availability and a model too large for the chosen GPU, and switching tiers usually resolves both. When a worker starts but never comes up, RunInfra reads that worker’s own log and names only what it can prove. See Deployments overview.
A model your workspace provably cannot read is refused at accept, before a GPU starts and before billable work begins. The refusal names the one action that fixes it, usually connecting or reconnecting a Hugging Face account, accepting the model’s license with that same account, or pointing the runbook at a repository that ships full safetensors weights. See Model access.

Still stuck

Send feedback from inside the app, or email support with the X-Request-Id from the failing response.

Errors

Every status and code, with the caller action.

Rate limits

The three layers that can refuse you.

Idempotent retries

Retry without a second charge.