NVIDIA NIM

google/gemma-4-31b-it
Context window262K tokens
Free budgetfree · 40 RPM tokens/mo
Requests / min40 RPM
Recurring free, 40 RPM, eval-only ToS info
NVIDIA NIM replaced its depleting trial credits with a recurring per-account rate limit (40 RPM default, varies by model), verified June 2026. The trial ToS still scopes usage to evaluation/prototyping, not production.

OpenRouter

google/gemma-4-31b-it:free
Context window262K tokens
Free budget~6M tokens/mo
Requests / min20 RPM
Requests / day200 RPD
Daily :free cap is account-wide info
OpenRouter’s :free daily cap (50/day, or 1000/day once you have ever bought $10 of credits) is shared across ALL :free models on the account, not per model. Per-row rpd values here are therefore optimistic; the router’s cooldown handling absorbs the shared 429s.

Requesty

google/gemma-4-31b-it
Context window262K tokens
Free budgetfree · 200 rpd tokens/mo
Requests / day200 RPD

HuggingFace Router

google/gemma-4-31B-it
Context window131K tokens
Free budget$0.10/mo credit tokens/mo
Rate limitsnot published
Small $0.10/month routed credit warning
HuggingFace Inference Providers grants only ~$0.10/month of routed credit on the free tier (PRO is $2/month). Enough for light experimentation; exhausts quickly. Credits apply only to HF-routed requests.

Ollama Cloud

gemma4:31b
Context window131K tokens
Free budget~20-30M tokens/mo
Rate limitsnot published

AI Horde

google/gemma-4-31b
Context window4K tokens
Free budgetKudos queue (no token cap) tokens/mo
Rate limitsnot published
Free volunteer queue, slow warning
AI Horde routes to volunteer-run workers through a priority queue, so latency is seconds to minutes, not the sub-second of hosted providers. The anonymous key 0000000000 runs at the lowest priority; register a free key at aihorde.net for higher priority. The provider uses a 120s timeout.
No tool calling info
AI Horde's OpenAI-compatible proxy does not support function/tool calling. The provider drops tools, tool_choice and parallel_tool_calls so a tool-using request still completes as plain chat instead of failing.
Usage is kudos; tokens estimated info
The proxy returns usage as {"kudos": N} with no token counts, and rejects max_tokens below 16 and a non-array stop. The AIHordeProvider normalizes the request (floors max_tokens, wraps stop) and synthesizes prompt/completion token estimates so analytics and savings math aren't zero.
Roster + context depend on online workers info
Model availability changes as volunteer workers come and go, so a listed model can be temporarily unserved. The effective context window is set by the worker (often 4-8K), not the model's native maximum.
Uneven quality warning
Output quality varies by worker and quantization, and some workers append template or instruction text after the answer. Best treated as free fallback capacity, not a primary model.

Get this model the moment it changes

Limits move, models get replaced, better ones launch. Premium routers see this page's data live. Free routers see last month's.

Live schalten · $19/yr →

Use it

FreeLLMAPI is a self-hosted router you run yourself. Install it, paste in your free NVIDIA NIM key, and google/gemma-4-31b-it answers on an OpenAI-compatible endpoint at http://localhost:3001/v1. No credit card, no hosted middleman: your prompts and your provider keys never leave your machine.

Install the router (macOS, Linux, WSL)
curl -fsSL https://freellmapi.co/install.sh | bash
Install the router (Windows PowerShell)
iwr -useb https://freellmapi.co/install.ps1 | iex
Call google/gemma-4-31b-it with curl
curl http://localhost:3001/v1/chat/completions \
  -H "Authorization: Bearer freellmapi-your-unified-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemma-4-31b-it",
    "messages": [{"role": "user", "content": "Say hi in five words."}]
  }'
The same request in Python (openai)
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:3001/v1",
    api_key="freellmapi-your-unified-key",
)

resp = client.chat.completions.create(
    model="google/gemma-4-31b-it",
    messages=[{"role": "user", "content": "Say hi in five words."}],
)
print(resp.choices[0].message.content)

The router answers on /v1/chat/completions and every other OpenAI surface, plus the Anthropic Messages API, so existing clients need only a new base_url. Swap the model id for auto and the router picks the best free model that is still under its limits. Full reference: docs/api.md.