MiaRouter logo
MIAROUTER DOCS
Open Console ↗

Errors & Troubleshooting

EVERY ERROR CARRIES A REQUEST ID · USE IT

MiaRouter normalizes upstream chaos into one error shape. Relay errors arrive in OpenAI-style JSON with a request id appended to the message; console API errors arrive as {"success": false, "message": "…"}.

1The error shape

{
  "error": {
    "message": "user quota is not enough … (request id: 20261003153000-abcdef)",
    "type": "new_api_error",
    "code": "insufficient_user_quota"
  }
}

The request id in the message is the one thing support can trace end-to-end. Copy the whole message, not a paraphrase of it.

2Status codes

HTTPMeaning on MiaRouterFirst move
400Malformed body, bad parameters.Validate your JSON; check the endpoint's expected format.
401Key missing, invalid, disabled, expired, or exhausted.Check key state on the Keys page; test with the /v1/models curl.
402Payment required — e.g. a dedicated pool's paid period lapsed.Renew the pool.
403Access denied: key used on the wrong domain (pool keys vs main keys), banned user, group not permitted.Match the key to the domain it belongs to.
404Model not found, or no pool at that subdomain.Copy the model name from the pricing page exactly.
429Rate limit: your key's RPM cap, the model's request limit, or login/verification throttles.Back off exponentially; reduce concurrency.
500Upstream provider failed after retries, or an internal error.Retry once; if it persists, escalate with the request id.
503Temporarily unavailable: pool still preparing, or system under load protection.Wait and retry.

3The usual suspects, decoded

You seeIt meansFix
user quota is not enough, user quota: $x, need quota: $yAccount credits ran out mid-request.Top up: Credits & Billing. Check Usage Logs for what burned it.
token quota is not enough …That key's own quota is exhausted (not the account).Raise/disable the key quota on the Keys page.
no available channel exists for model X in group YNo upstream could serve that model right now — capacity, health checks, or group mapping.Retry; try another model; if persistent, report with the request id.
Invalid token / 401 on every callKey wrong, disabled, or typo'd.The /v1/models curl from Agents isolates auth from everything else.
this API key only works on its dedicated pool subdomainPool key used on the main domain.Use it on yourpool.miarouter.online, or use a normal key on the main domain.
this API key does not belong to this dedicated poolMain-domain key used on a pool subdomain (or wrong pool).Same answer, mirrored.
this dedicated pool has expired, renew it to continueThe pool's paid period ended; requests get 402.Renew from the Dedicated Pools page.
sensitive_words_detectedThe request tripped the platform's word filter.Rephrase. Arguing rarely improves the filter.
Empty/partial stream then disconnectClient disconnected (client_gone) or upstream stream ended early.Check your client's timeouts; retry idempotently.

4Troubleshooting order

  1. Auth: the /v1/models curl. 200 → auth fine. 401 → key problem, stop here.
  2. Key state: Keys page — enabled, unexpired, unexhausted, quota above zero.
  3. Balance: Dashboard — credits remaining, subscription windows not capped out.
  4. Model: exact name from the pricing page, no creative spellings.
  5. Logs: Usage Logs, filter by time — the request id tells you the model, group, channel outcome, and cost.
  6. Escalate: Contact with the request id. "It does not work" is not a report; the request id is.