Gemma 4 31B (free)
Send this model by its id from any OpenAI-compatible client. One key, one base URL, 262K of context.
google/gemma-4-31b-it:freeThis model is the current Open Tier resolution and is charged at $0. Quotas apply.
Use this model
Every snippet carries this model’s id. The base URL and the key are the same ones you already use for every other model in the catalog.
curl https://onerouter.network/v1/chat/completions \
-H "Authorization: Bearer $ONEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-4-31b-it:free",
"messages": [{"role":"user","content":"ping"}],
"stream": true
}'from openai import OpenAI
client = OpenAI(
base_url="https://onerouter.network/v1",
api_key="or-live-...",
)
client.chat.completions.create(
model="google/gemma-4-31b-it:free",
messages=[{"role": "user", "content": "ping"}],
stream=True,
)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://onerouter.network/v1",
apiKey: process.env.ONEROUTER_KEY,
});
await client.chat.completions.create({
model: "google/gemma-4-31b-it:free",
messages: [{ role: "user", content: "ping" }],
stream: true,
});# Shell, or "env" in ~/.claude/settings.json.
# Use the BARE host: Claude Code appends /v1/messages itself.
export ONEROUTER_KEY=or-live-YOUR-KEY-HERE
export ANTHROPIC_BASE_URL=https://onerouter.network
export ANTHROPIC_AUTH_TOKEN="$ONEROUTER_KEY"
export ANTHROPIC_MODEL="google/gemma-4-31b-it:free"
claude --model "$ANTHROPIC_MODEL"# ~/.codex/config.toml, with ONEROUTER_KEY in the environment
model = "google/gemma-4-31b-it:free"
model_provider = "onerouter"
[model_providers.onerouter]
name = "OneRouter"
base_url = "https://onerouter.network/v1"
env_key = "ONEROUTER_KEY"
wire_api = "responses"// opencode.json — project root, or ~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"onerouter": {
"npm": "@ai-sdk/openai-compatible",
"name": "OneRouter",
"options": {
"baseURL": "https://onerouter.network/v1",
"apiKey": "{env:ONEROUTER_KEY}"
},
"models": {
"google/gemma-4-31b-it:free": { "name": "Gemma 4 31B (free)" }
}
}
}
}More clients — Cursor, Zed, Continue, Aider, LiteLLM — are on client setup.
Specification
| Model ID | google/gemma-4-31b-it:free |
| Author | |
| Context window | 262,144 tokens |
| Maximum output | 32,768 tokens |
| Input | image, text, video |
| Output | text |
| Input price | Free / 1M tokens |
| Output price | Free / 1M tokens |
Endpoints
Send the id unchanged on either supported shape:
| Endpoint | Shape | State |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Live |
POST /v1/messages | Anthropic Messages | Live |
POST /v1/responses | OpenAI Responses | Not implemented |
Both live shapes accept JSON and SSE. Set "stream": true for incremental output — see streaming. /v1/responses answers 400 unsupported_endpoint.
Hosts
Priority is the catalog order, not a live latency score.
| Host | Priority | When it serves |
|---|---|---|
openrouter | 1 | Tried first |
A single route serves this model. There is nowhere to fail over to: if the host does not answer, the request returns 503 model_unavailable and nothing is charged.
Pin one host and refuse failover entirely:
{
"model": "google/gemma-4-31b-it:free",
"messages": [{ "role": "user", "content": "ping" }],
"provider": { "only": ["openrouter"] }
}