Fireworks, Together, Groq, DeepSeek, xAI, OpenRouter
Six providers that speak the OpenAI chat format natively. One adapter serves all of them, so only the provider string changes.
/v1/chat/completionsProvider strings
Use the string in the first column when you add the provider key. The gateway resolves it to the base URL shown and sends OpenAI-format requests there.
| Model | Provider | Description |
|---|---|---|
fireworks | Fireworks AI | https://api.fireworks.ai/inference/v1 |
together | Together AI | https://api.together.xyz/v1 |
groq | Groq | https://api.groq.com/openai/v1 |
deepseek | DeepSeek | https://api.deepseek.com/v1 |
xai | xAI | https://api.x.ai/v1 |
grok | xAI (alias) | Same as xai |
openrouter | OpenRouter | https://openrouter.ai/api/v1 |
Models
Model names belong to the provider, not to the gateway, so pass whatever that provider publishes. There is no shared catalogue across these six: a model string that works on Groq will not resolve on DeepSeek.
Request
Identical to OpenAI. Point the model field at the provider's own model name and send the request to the same gateway URL.
curl https://api.metriqual.com/v1/chat/completions \
-H "Authorization: Bearer mql_your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "llama-3.3-70b-versatile",
"messages": [
{"role": "user", "content": "What is quantum computing?"}
]
}'const response = await mql.chat.create({
model: 'deepseek-chat',
messages: [{ role: 'user', content: 'What is quantum computing?' }]
});
console.log(response.choices[0].message.content);Streaming
These providers already emit OpenAI-format chunks, so the gateway passes the stream through without rewriting it. Set stream: true and read it exactly as you would an OpenAI stream.