Skip to content

Models & Providers

View as Markdown
ProviderConfig keyEndpoint
Groqgroqhttps://api.groq.com/openai/v1/chat/completions
Cerebrascerebrashttps://api.cerebras.ai/v1/chat/completions
Geminigeminihttps://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent
OpenRouteropenrouterhttps://openrouter.ai/api/v1/chat/completions
DeepSeekdeepseekhttps://api.deepseek.com/chat/completions

OpenRouter is itself a router: it forwards each request to a provider that hosts the model, which makes it the provider that serves the most aliases below.

An alias lists provider models in a fixed order. Nuabase uses the first one whose provider you supplied an API key for.

AliasTries, in order
fast (default)Cerebras qwen-3.8-27b → Groq openai/gpt-oss-120b → OpenRouter z-ai/glm-5.3-flash
geminiGemini gemini-3.8-flash → OpenRouter google/gemini-3.8-flash
deepseekDeepSeek deepseek-v4-pro → OpenRouter deepseek/deepseek-v4-pro-0813
qwenOpenRouter qwen/qwen3.8-2.4t-a95b
sonnetOpenRouter anthropic/claude-sonnet-5.5
opusOpenRouter anthropic/claude-opus-5.5
haikuOpenRouter anthropic/claude-haiku-4.5
kimiOpenRouter moonshotai/kimi-k3
gptOpenRouter openai/gpt-6.1-sol
// Client default
const nua = Nua.direct({
providers: { openrouter: { apiKey: process.env.OPENROUTER_API_KEY! } },
model: { alias: 'sonnet' },
});
// Per call
await nua.get('Summarize this', {
input: text,
output: { name: 'summary', schema: z.string() },
model: { alias: 'kimi' },
});

On a local agent, only Claude Code accepts aliases, and only haiku, sonnet, and opus, which it maps to its own models.

To use a model no alias covers, name the provider and the provider’s own model ID:

await nua.get('Summarize this', {
input: text,
output: { name: 'summary', schema: z.string() },
model: { provider: 'groq', model: 'openai/gpt-oss-120b' },
});

The provider must be one you configured a key for. For Gemini, use bare model IDs such as gemini-3.8-flash, not models/gemini-3.8-flash.

  • Latency-sensitive work such as parsing user input in a form: fast. Cerebras and Groq serve open models at very high token rates.
  • Harder extraction or reasoning: sonnet, opus, gpt, or gemini.
  • Bulk enrichment of many rows: start with fast and move up only for fields where it isn’t accurate enough. nua.list() already amortizes the prompt over many rows.

Pricing and rate limits are set by each provider. Check their dashboards for current numbers.