Errors & limits
Errors use the standard OpenAI JSON shape, so existing SDK error handling works unchanged. This page lists what the API actually returns and what the shared API serves today.
The error shape
{
"error": {
"message": "a human-readable description",
"type": "...",
"param": null,
"code": "..."
}
}
Status codes
| Status | Meaning | What to do |
|---|---|---|
| 400 | Validation error — malformed JSON, unknown field, or a bad parameter value | Fix the request; error.message names the problem |
| 401 | Unauthorized — missing or invalid key | Check the Authorization: Bearer header and your key |
| 503 | model_not_hot — the model is not loaded right now | Retry with backoff |
503 model_not_hot
The model is not loaded right now — retry with backoff. The condition is temporary; your request itself is fine.
HTTP/2 503
{
"error": {
"message": "The model for this role is not loaded. Retry with backoff.",
"code": "model_not_hot"
}
}
Python
import time
for wait in (1, 2, 4, 8, 16):
try:
r = client.chat.completions.create(model="qwen3.8-27b-nvfp4", messages=messages)
break
except openai.InternalServerError as e: # SDK surfaces 503 here
time.sleep(wait)
Limits, honestly
The shared API runs on a shared system. Today that means:
| Context window | 65,536 tokens (chat model) |
|---|---|
| Concurrency | Up to 4 concurrent sequences on the chat model |
Those are the real serving numbers, not marketing tiers. Under concurrent load your requests queue; latency grows before anything fails. There are no hidden quotas — this table is the whole list.
If you need committed throughput — reserved concurrency, your own dedicated system, a specific model held hot — talk to an engineer.