frequently asked
Everything about routing requests across free models, authenticating, and using the dashboard. Search or pick a topic below.
DreamRouter is one OpenAI-compatible endpoint that fans a single request out across hundreds of free model endpoints. You point your client at apiarium-labs.hf.space/v1, pick a model name, and it swaps the model field, picks a healthy upstream, and forwards — retrying bad keys automatically.
Yes. Every upstream is a free-tier or open endpoint — OpenRouter :free models, Gemini's free tier, and open Claude proxies. There's no billing and no balance to burn. The only limit is each upstream's own rate cap, which the router hides by round-robining across many targets.
Each request uses a thread-safe round-robin counter that cycles through every target serving that model. Targets that return auth, quota, rate-limit, or 5xx errors are cooled down for a short window and skipped, so traffic keeps flowing to healthy ones automatically.
It's best for prototyping, experimentation, and personal projects. Because upstreams are third-party free tiers, uptime and latency aren't guaranteed — a single provider can rate-limit the whole pool at peak times. Treat it as a convenience layer, not a critical dependency.
Claude Opus 4.5–4.8 (with and without thinking), plus free OpenRouter models like Gemma 4, Gemini 2.5 Flash, and Liquid LFM. Browse the full live list with live target counts on the Models page, or call GET /v1/models.
The free: prefix marks non-Anthropic models that run on free-tier endpoints (e.g. free:google/gemini-2.5-flash). It's purely cosmetic on your side — the router strips it and sends the real upstream id. Claude models keep their plain anthropic/… names.
Yes to both. Pass "stream": true for SSE token streaming, and include a tools array for function calling. Both work whenever the underlying model supports them — the router passes request and response bodies through unchanged.
Limits come from each upstream model, not the router. Claude Opus offers up to 200k tokens of context; the free Gemini and Gemma tiers vary from 128k down to 8k. If you exceed a model's window the upstream returns a 400, which surfaces to you directly.
Sign in on the login page with the Continue with Google button — it’s the only way in. You’ll get 500 free credits and your own personal API key (dr_u_…) for programmatic access. There’s no shared key to paste and nothing to manage by hand.
Yes — Google is the sole sign-in method. It signs you in with a stateless session cookie (no database), and unverified emails are rejected automatically. Your Google identity is used only to create your account and give you a unique deposit address; it’s never shared or sold.
No. Your dr_u_… key is unique to your account — only you ever see it (once, at signup). The many upstream keys pooled behind the router are never exposed to you or anyone else. Your request contents are forwarded and not logged beyond a status line.
The dashboard shows live model and target counts, a searchable model grid with provider badges, and a streaming playground where you can chat with any model and watch tokens arrive over SSE. It uses your session to authenticate automatically.
Yes. POST /v1/chat/completions and GET /v1/models match the OpenAI shape, so any client that accepts a custom base URL works — the OpenAI SDK, LangChain, LiteLLM, pi, curl. Full request/response details are in the docs.
Base URL is https://apiarium-labs.hf.space/v1. Send your key as Authorization: Bearer <key>. If you're signed in via Google, your browser session cookie also works for same-origin dashboard requests.
On a 401, 402, 403, 429, or 5xx the router marks that target down, rotates to the next one, and retries — up to 5 attempts per request. If every target is exhausted it returns 503. A bad model name returns 404 before any upstream call.
The router filters the SSE stream to emit only valid data: lines and blank separators, because some clients choke on upstream commentary. If output looks truncated, the upstream likely hit its token or time limit — add a higher max_tokens or retry. If a non-streaming request timed out, an upstream was slow and all retries were spent.
Still have questions?
Skim the full API reference, or open the dashboard playground to try a request live.
Read the docs