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. The public catalog groups those routes under canonical models, but API calls still send the exact route slug in model.
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. The catalog currently has 88 canonical models and 91 provider routes.
| Provider route | Models | Modalities |
|---|---|---|
| Alibaba | 6 | Audio, Chat |
| Amazon Bedrock | 11 | Chat |
| DeepSeek | 4 | Chat |
| Google AI Studio | 12 | Audio, Image, Chat, Video |
| Google Vertex | 6 | Audio, Image, Chat, Video |
| MiniMax | 11 | Audio, Image, Chat, Video |
| Moonshot Kimi | 8 | Chat |
| OpenAI | 14 | Audio, Image, Chat |
| xAI | 3 | Chat |
| Zhipu GLM | 16 |
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 hit - top up to continue. |
| 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. Defaults: 20 / 40k on Free, 200 / 400k on paid keys. Tune per-key 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'