Access 39 OpenCode Zen models through Mastra's model router. Authentication is handled automatically using the OPENCODE_API_KEY environment variable.
Learn more in the OpenCode Zen documentation.
.env
OPENCODE_API_KEY=your-api-key
src/mastra/agents/my-agent.ts
import { Agent } from "@mastra/core/agent";
const agent = new Agent({
id: "my-agent",
name: "My Agent",
instructions: "You are a helpful assistant",
model: "opencode/big-pickle"
});
// Generate a response
const response = await agent.generate("Hello!");
// Stream a response
const stream = await agent.stream("Tell me a story");
for await (const chunk of stream) {
console.log(chunk);
}
Mastra uses the OpenAI-compatible /chat/completions endpoint. Some provider-specific features may not be available. Check the OpenCode Zen documentation for details.
Models
| Model | Context | Tools | Reasoning | Image | Audio | Video | Input $/1M | Output $/1M |
|---|---|---|---|---|---|---|---|---|
opencode/big-pickle |
200K | — | — | |||||
opencode/claude-haiku-4-5 |
200K | $1 | $5 | |||||
opencode/claude-opus-4-1 |
200K | $15 | $75 | |||||
opencode/claude-opus-4-5 |
200K | $5 | $25 | |||||
opencode/claude-opus-4-6 |
1.0M | $5 | $25 | |||||
opencode/claude-opus-4-7 |
1.0M | $5 | $25 | |||||
opencode/claude-sonnet-4 |
1.0M | $3 | $15 | |||||
opencode/claude-sonnet-4-5 |
1.0M | $3 | $15 | |||||
opencode/claude-sonnet-4-6 |
1.0M | $3 | $15 | |||||
opencode/gemini-3-flash |
1.0M | $0.50 | $3 | |||||
opencode/gemini-3.1-pro |
1.0M | $2 | $12 | |||||
opencode/glm-5 |
205K | $1 | $3 | |||||
opencode/glm-5.1 |
205K | $1 | $4 | |||||
opencode/gpt-5 |
400K | $1 | $9 | |||||
opencode/gpt-5-codex |
400K | $1 | $9 | |||||
opencode/gpt-5-nano |
400K | — | — | |||||
opencode/gpt-5.1 |
400K | $1 | $9 | |||||
opencode/gpt-5.1-codex |
400K | $1 | $9 | |||||
opencode/gpt-5.1-codex-max |
400K | $1 | $10 | |||||
opencode/gpt-5.1-codex-mini |
400K | $0.25 | $2 | |||||
opencode/gpt-5.2 |
400K | $2 | $14 | |||||
opencode/gpt-5.2-codex |
400K | $2 | $14 | |||||
opencode/gpt-5.3-codex |
400K | $2 | $14 | |||||
opencode/gpt-5.3-codex-spark |
128K | $2 | $14 | |||||
opencode/gpt-5.4 |
1.1M | $3 | $15 | |||||
opencode/gpt-5.4-mini |
400K | $0.75 | $5 | |||||
opencode/gpt-5.4-nano |
400K | $0.20 | $1 | |||||
opencode/gpt-5.4-pro |
1.1M | $30 | $180 | |||||
opencode/gpt-5.5 |
1.1M | $5 | $30 | |||||
opencode/gpt-5.5-pro |
1.1M | $30 | $180 | |||||
opencode/hy3-preview-free |
256K | — | — | |||||
opencode/kimi-k2.5 |
262K | $0.60 | $3 | |||||
opencode/kimi-k2.6 |
262K | $0.95 | $4 | |||||
opencode/minimax-m2.5 |
205K | $0.30 | $1 | |||||
opencode/minimax-m2.5-free |
205K | — | — | |||||
opencode/minimax-m2.7 |
205K | $0.30 | $1 | |||||
opencode/nemotron-3-super-free |
205K | — | — | |||||
opencode/qwen3.5-plus |
262K | $0.20 | $1 | |||||
opencode/qwen3.6-plus |
262K | $0.50 | $3 |
39 available models
Advanced configuration
Custom headers
src/mastra/agents/my-agent.ts
const agent = new Agent({
id: "custom-agent",
name: "custom-agent",
model: {
url: "https://opencode.ai/zen/v1",
id: "opencode/big-pickle",
apiKey: process.env.OPENCODE_API_KEY,
headers: {
"X-Custom-Header": "value"
}
}
});
Dynamic model selection
src/mastra/agents/my-agent.ts
const agent = new Agent({
id: "dynamic-agent",
name: "Dynamic Agent",
model: ({ requestContext }) => {
const useAdvanced = requestContext.task === "complex";
return useAdvanced
? "opencode/qwen3.6-plus"
: "opencode/big-pickle";
}
});