Errors

What 401, 402, 429, and 502 mean on OpenBroker, and what to change in the client.

On this page

The HTTP status on a chat completion is either OpenBroker refusing the call, or the status the gateway returned. Read error.message in the JSON body when there is one. Usage rows store the same status and message for your account. See Usage.

OpenBroker responses

StatusMessageWhat to do
401missing or invalid OpenBroker API keySend Authorization: Bearer obk-.... A dashboard session is not a key.
401invalid API keyThe key was deleted or mistyped. Create a new one.
402broker is not activeDeposit at least 100 GNK. See Deposits.
402broker GNK reserve exhaustedAvailable balance is 0. Top up. Balance shows the spendable amount.
400read body failed, or invalid JSONSend a JSON object.
400missing required field: promptLegacy completions only.
503no active OpenBroker devshard capacity for this brokerCapacity is not assigned yet. Retry shortly after activation.

These are not model outages. They will not clear by switching from DeepSeek to MiniMax.

Gateway responses you will see often

StatusWhat it usually meansWhat to do
429Too many requests are in flight on the gateway. OpenBroker does not apply a per-key quota.Back off and retry. This is demand, not a broken prompt. The status page files these under over-limit, not under the red error rate.
502The gateway did not return a usable response. A common body mentions timeout awaiting response headers and does not include an internal address.Raise the client timeout to several minutes and retry. OpenBroker waits up to 20 minutes for headers. See Streaming.
400The model id is unknown, or a parameter was rejected.Check GET /v1/models. Kimi-K2.6 fails because it is deprecated.
4xx / 5xx with capacity wordingNo host or escrow is free (no currently-available host, request budget exhausted, and similar).Retry. These are capacity, same as 429, for status-page purposes.

Headers on errors

X-Request-Id is set when the gateway assigned one. You can pass it to GET /v1/usage/{id} even when the body is not JSON. Calls rejected with 401 or 402 never reach the gateway, so they may have no request id and no usage row.

Failed requests are not charged. cost_ngonka on an error row is 0. Which of these to send again is in Retries. Whether to lower or raise how many calls you keep in flight is in How much to send.