One OpenAI-compatible gateway in front of every major model. Use one base URL and one Miavo key, then choose the model route slug that fits your provider, region, and compliance needs.
Send your sk-maas-... key as a bearer token. Provider-side credentials stay in the Miavo pool.
POST https://api.miavo.xyz/v1/chat/completions
Authorization: Bearer sk-maas-...
Content-Type: application/jsonGET /v1/models returns concrete route slugs. It only includes routes with an active upstream key mapped to that model. Coming soon routes stay visible in the public catalog but are not returned here.
curl https://api.miavo.xyz/v1/models \
-H "Authorization: Bearer sk-maas-..."Docs stay short: model-specific examples, prices, capabilities, and provider routes live on model detail pages. 89 canonical models / 93 provider routes / 27 available
| Model family | Canonical models | Available routes | Modalities |
|---|---|---|---|
| Claude | 9 | 9 | Text |
| OpenAI | 16 | 0 | Audio, Embedding, Image, Text |
| Gemini | 15 | 18 | Audio, Image, Text, Video |
| Grok | 3 | 0 | Text |
| Kimi | 8 | 0 | Text |
| MiniMax | 11 | 0 | Audio, Image, Text, Video |
| Qwen | 6 | 0 | Audio, Text |
| DeepSeek | 4 | 0 | Text |
| GLM | 16 | 0 |
All errors are OpenAI-shaped: HTTP status plus JSON body with error.code, error.message, and error.type.
{
"error": {
"code": "rate_limit_exceeded",
"type": "rate_limit",
"message": "RPM exceeded - 200 requests in 60 seconds."
}
}| Status | Code | When |
|---|---|---|
| 401 | authentication_error | Missing or invalid sk-maas key. |
| 402 | budget_exhausted | Credit balance is below the required request hold. |
| 403 | model_not_allowed | Model is not on this key allow-list. |
| 400 | invalid_request | Body failed schema validation. |
| 429 | rate_limit_exceeded | Per-key RPM or TPM tripped. |
| 502 | upstream_error | Provider returned an error after we forwarded. |
| 503 | no_upstream | No pooled credential is available for this model. |
Each API key carries its own rpmLimit and tpmLimit, both rolling 60-second windows. Default account access starts at 200 / 400k. Tune per-key limits from your dashboard.
Miavo implements the OpenAI Chat Completions schema. Any SDK that targets OpenAI works by swapping baseURL and apiKey.
- const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
+ const client = new OpenAI({
+ baseURL: 'https://api.miavo.xyz/v1',
+ apiKey: process.env.MACAW_API_KEY,
+ });
- model: 'gpt-4o-mini',
+ model: 'claude-opus-4-8'| Audio, Image, Text, Video |
| Cohere | 1 | 0 | Rerank |