stillworks probing · last sweep 41 min ago

Dobby is freeeeeee — no key, no signup, no card. We don't read docs, we call the endpoint and publish what came back, including the 402s.

One call, then you are calling an LLM

Free LLM API endpoints, tested every hour. Ask what is answering right now.

Base URL, model ID, whether a key is needed, what a real probe proved. Ranked, so models[0] is the pick and the rest are your fallbacks — which you will want, because keyless quotas are per-IP and the one that answered us can refuse you.

1 Ask what works
GET /api/llm/up no key, no signup, no rate limit
curl -s https://stillworks.supercapybara.com/api/llm/up
every model carries modelopenai_base_urlauthlatency_msansweredlast_okproved[]claimed_unproved[]failed[]
?feature=tools,vision narrows it to what a real call proved
2 Call what came back
nothing hardcoded but our URL
python
import json, urllib.request
from openai import OpenAI

shelf = json.load(urllib.request.urlopen(
    "https://stillworks.supercapybara.com/api/llm/up"))

for endpoint in shelf["models"]:            # already ranked, best first
    client = OpenAI(base_url=endpoint["openai_base_url"],
                    api_key="not-needed")
    try:
        reply = client.chat.completions.create(
            model=endpoint["model"],
            messages=[{"role": "user", "content": "hello"}],
        )
    except Exception:
        continue                           # your IP hit its quota — next
    print(endpoint["model"], reply.choices[0].message.content)
    break
node
import OpenAI from "openai";

const shelf = await fetch("https://stillworks.supercapybara.com/api/llm/up")
  .then((response) => response.json());

for (const endpoint of shelf.models) {      // already ranked, best first
  const client = new OpenAI({
    baseURL: endpoint.openai_base_url,
    apiKey: "not-needed",
  });
  try {
    const reply = await client.chat.completions.create({
      model: endpoint.model,
      messages: [{ role: "user", content: "hello" }],
    });
    console.log(endpoint.model, reply.choices[0].message.content);
    break;
  } catch { continue; }                    // your IP hit its quota — next
}
curl
# whatever your JSON tool is, the two fields you need are the same
read BASE MODEL < <(curl -s https://stillworks.supercapybara.com/api/llm/up \
  | jq -r '.models[0] | "\(.openai_base_url) \(.model)"')

curl -s "$BASE/chat/completions" \
  -H 'Content-Type: application/json' \
  -d "{\"model\":\"$MODEL\",
       \"messages\":[{\"role\":\"user\",\"content\":\"hello\"}]}"
Walk the list until one answers. That loop is the whole point of the shelf.
57 of 143 models

No key needed first, then by how much of the last week each one answered, then by speed. None of it is a promise about the next minute — that is what the timestamps are for. Click any row for its snippet.

we called it and it worked we called it and it failed provider claims it, our call never proved it never probedWhat Tools, Schema, JSON and Vision mean
ExpandModel▲KeyToolsSchemaJSONVisionLatency▲Answered▲Verified▲Copy
openai-fast pollinations · text.pollinations.ai/openainot needed Tools: the provider claims it, our call failed Schema: we called it and it worked JSON: we called it and it worked Vision: never probed322 ms 168/16841 min ago
Meta-Llama-3_3-70B-Instruct ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed342 ms 11/114 h ago
Qwen3Guard-Gen-0.6B ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it failed Schema: we called it and it failed JSON: we called it and it failed Vision: we called it and it failed342 ms 11/112 h ago
qwen3-coder free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked408 ms 1/138 h ago
qwen7b free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked474 ms 1/114 h ago
mistral free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked481 ms 1/13 days ago
qwen-coder free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked519 ms 1/12 days ago
cohere/north-mini-code:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it failed JSON: we called it and it failed Vision: never probed543 ms 26/261 h ago
openrouter/free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked574 ms 26/261 h ago
gpt-oss-120b ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed611 ms 11/1141 min ago
kilo-auto/small kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked645 ms 26/2642 min ago
reflection/beam-free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed702 ms 26/261 h ago
Qwen3.6-27B ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked730 ms 10/1012 h ago
›qwen3-8b free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked750 ms 1/114 h ago
curl
curl https://api.free.ai/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"qwen3-8b","messages":[{"role":"user","content":"hello"}]}'
.env
OPENAI_BASE_URL=https://api.free.ai/v1
OPENAI_API_KEY=not-needed
OPENAI_MODEL=qwen3-8b
python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.free.ai/v1",
    api_key="not-needed",
)

print(client.chat.completions.create(
    model="qwen3-8b",
    messages=[{"role": "user", "content": "hello"}],
).choices[0].message.content)
node
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.free.ai/v1",
  apiKey: "not-needed",
});

const reply = await client.chat.completions.create({
  model: "qwen3-8b",
  messages: [{ role: "user", content: "hello" }],
});

console.log(reply.choices[0].message.content);
Base URL
https://api.free.ai/v1
Model ID
qwen3-8b
Auth
none — no Authorization header sent
Answered
answered all 1 check we made in the last week
Last ok
14 h ago
Qwen2.5-VL-72B-Instruct ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it failed Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked817 ms 11/111 h ago
Qwen3.5-397B-A17B ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked843 ms 11/116 h ago
qwen25-vl free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked869 ms 1/138 h ago
nvidia/nemotron-3.5-lightning:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: never probed871 ms 26/2642 min ago
qwen-vl free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked978 ms 1/12 days ago
gpt-oss-20b ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: never probed1059 ms 10/1013 h ago
deepseek-r1 free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked1098 ms 1/14 days ago
dots-studio/dots-3-note-preview:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked1296 ms 25/253 h ago
deepseek-r1-7b free-ai · api.free.ai/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked1335 ms 1/13 days ago
Mistral-Small-3.2-24B-Instruct-2506 ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked3525 ms 10/1015 h ago
nvidia/nemotron-3.5-super-vl:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked613 ms 25/261 h ago
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked869 ms 25/2642 min ago
kilo-auto/free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it failed JSON: we called it and it failed Vision: we called it and it failed1605 ms 24/254 h ago
stealth/glyph-cluster kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it failed JSON: we called it and it failed Vision: we called it and it failed1645 ms 24/252 h ago
nvidia/nemotron-3-ultra-550b-a55b:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: never probed944 ms 23/253 h ago
Qwen3Guard-Gen-8B ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it failed Schema: we called it and it failed JSON: we called it and it failed Vision: we called it and it failed494 ms 10/113 h ago
Qwen3.5-9B ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked2517 ms 9/1014 h ago
nemotron-3-nano:30b llm7 · api.llm7.io/v1not needed Tools: we called it and it worked Schema: we called it and it failed JSON: we called it and it failed Vision: we called it and it failed2388 ms 33/401 h ago
gpt-oss:20b llm7 · api.llm7.io/v1not needed Tools: we called it and it worked Schema: we called it and it failed JSON: we called it and it worked Vision: we called it and it failed1669 ms 31/401 h ago
codestral-latest llm7 · api.llm7.io/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed1038 ms 25/393 h ago
Qwen3.8-27B ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked492 ms 7/117 h ago
mistral-Nemo-Instruct-2407 llm7 · api.llm7.io/v1not needed Tools: we called it and it failed Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed1643 ms 23/392 h ago
minimax-m2.7 llm7 · api.llm7.io/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed358 ms 20/3931 h ago
Mistral-Nemo-Instruct-2407 ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed4306 ms 4/103 days ago
stealth/crouton-alpha kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: the provider claims it, our call never proved it JSON: the provider claims it, our call never proved it Vision: never probed1022 ms 5/1921 h ago
liquid/lfm-2.5-2.6b:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: never probed403 ms 5/255 days ago
xingchen-agi/xing4.0-29b-a4b:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: the provider claims it, our call never proved it Vision: never probed1163 ms 4/266 days ago
DeepSeek-V4-Flash-0731 llm7 · api.llm7.io/v1not needed Tools: the provider claims it, our call failed Schema: we called it and it failed JSON: the provider claims it, our call failed Vision: we called it and it failed2592 ms 6/3919 h ago
liquid/lfm-3-1.7b:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: the provider claims it, our call never proved it Schema: the provider claims it, our call never proved it JSON: we called it and it worked Vision: never probed1040 ms 1/713 h ago
GLM-5.3-Flash llm7 · api.llm7.io/v1not needed Tools: the provider claims it, our call failed Schema: we called it and it failed JSON: we called it and it failed Vision: we called it and it failed1215 ms 5/4020 h ago
inclusionai/ling-3.1-flash-1019-free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it failed JSON: we called it and it failed Vision: we called it and it failed1538 ms 3/256 days ago
poolside/laguna-xs-2.1:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: the provider claims it, our call never proved it Schema: never probed JSON: never probed Vision: never probed508 ms 0/267 days ago
meta-Llama-3.1-8B-Instruct-Turbo llm7 · api.llm7.io/v1not needed Tools: the provider claims it, our call failed Schema: we called it and it failed JSON: the provider claims it, our call failed Vision: we called it and it failed795 ms 0/3969 days ago
nvidia/nemotron-3.5-content-safety:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: never probed Schema: we called it and it failed JSON: we called it and it failed Vision: never probed1037 ms 0/269 days ago
recursive/flint-v1.0:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: never probed1052 ms 0/258 days ago
poolside/laguna-s-2.1:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it failed Vision: never probed1196 ms 0/257 days ago
Qwen3-32B ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed1237 ms 0/1052 days ago
minimax/minimax-m3.1-flash:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it worked1511 ms 0/2516 days ago
Mistral-7B-Instruct-v0.3 ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed1979 ms 0/1125 days ago
gpt-oss llm7 · api.llm7.io/v1not needed Tools: the provider claims it, our call failed Schema: we called it and it failed JSON: the provider claims it, our call failed Vision: we called it and it failed2165 ms 0/3961 days ago
deepseek-v3 llm7 · api.llm7.io/v1not needed Tools: the provider claims it, our call failed Schema: we called it and it failed JSON: we called it and it failed Vision: we called it and it failed3211 ms 0/4081 days ago
Qwen3-Coder-30B-A3B-Instruct ovh-anonymous · oai.endpoints.kepler.ai.cloud.ovh.net/v1not needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: we called it and it failed3410 ms 0/1031 days ago
nvidia/nemotron-3-super-120b-a12b:free kilo-gateway · api.kilo.ai/api/gatewaynot needed Tools: we called it and it worked Schema: we called it and it worked JSON: we called it and it worked Vision: never probed4846 ms 0/2620 days ago
Checked and not listed (17) — endpoints another catalogue calls free, and what they answered here

Cross-checked against OmniRoute's routing registry. 2026-08-11: 226 providers, 18 typed as needing no key. One new claim on the shelf and no new working endpoint. 2026-10-12: 270 providers, 17 typed as needing no key. Two new working keyless endpoints, Kilo Gateway and Free.ai, now on the shelf. Every other claim failed the chat call, and is listed below with the answer it gave.

Hack Club AI https://ai.hackclub.com/proxy/v1
Listing answers a bare GET with 200 and a full model catalogue; the chat call answers 401 Authentication required. A keyless /v1/models is not a keyless endpoint, and this is the shape most often mistaken for one. Separately scoped to Hack Club members by its own terms.
Naga https://api.naga.ac/v1
Same shape: listing 200, chat 401 authentication_required, with the body directing you to sign up. A free tier behind a signup is the keyed shelf's subject, not this one, and we hold no key.
Pollinations (gen host) https://gen.pollinations.ai/v1
401 UNAUTHORIZED with no header. Worth stating plainly because the catalogue routes here on the grounds that the older text.pollinations.ai host was retired -- and that older host answered our keyless chat call with 200 on the same day. The retired endpoint is the one still serving anonymously, so that is the one on the shelf.
g4f.space https://g4f.space/api/{pollinations,groq,gemini,nvidia,ollama}/v1
402 insufficient_credits: "No cake credits. Bake proof-of-work cakes ... to earn anonymous usage." Anonymous, but not free of charge -- the price is compute rather than a key. Nothing an OpenAI client can pay, so it cannot be published as an endpoint that works right now.
MiMo (Xiaomi) https://api.xiaomimimo.com/v1
401 invalid_key on both the listing and the chat call.
TheOldLLM https://theoldllm.vercel.app/api/chatgpt
403 at the edge. The same catalogue's own free-tier research lists this provider as having no current free tier, so the registry entry and the documentation disagree; the call settles it.
AI Horde https://oai.aihorde.net/v1/chat/completions
401 {"detail":"Authorization header missing"} with no header, on 2026-10-12. The same call with its documented public anonymous key (ten zeros) as a bearer token answered 200 on koboldcpp/Angelic_Eclipse-12B, so it is free, and open to anyone, but it is a key: this shelf lists only calls that carry no Authorization header at all. Volunteer-worker queue, latency in minutes on a busy day.
OpenCode Free https://opencode.ai/zen/v1/chat/completions
Listing answers a bare GET with 200 and names the free models; the chat call answers 403 FreeTierError: "OpenCode's free tier can only be used from within OpenCode". The body says why, so this is a policy and not a bare 403 -- the free tier is gated on the client, not the credential, and an OpenAI client is not that client.
Cloudflare AI Playground https://playground.ai.cloudflare.com
405 on POST /chat/completions. The source catalogue reaches it by driving a headless Chromium against the playground page, not by an API: there is no OpenAI-style endpoint to hand a client. Same class as the scraped web UIs below, and rejected for the same reason.
UC (uncensored.com persona) wss://internal-6.pubyar.com
Not an HTTP chat endpoint. The catalogue's own source describes a WebSocket session minted from an account cookie after an email-code login on a subscription product. That is an account, not a free call, and it cannot be probed by a request with no credential. (GET / on the host answers 200 with a status object; POST /chat/completions answers 404.)
FriendliAI https://api.friendli.ai/serverless/v1
The catalogue's free-tier list tags it keyless. Listing answers 200 and the chat call answers 401 {"detail":"Unauthorized. Please provide a valid credential."}: the listing-is-not-an-endpoint shape again.
Liquid AI https://inference.liquid.ai/v1
Tagged keyless in the catalogue's free-tier list. Both the listing and the chat call answer 403 {"detail":"Not authenticated"}. The body says who is missing, so this is a request for a credential and not a block.
Blackbox AI https://api.blackbox.ai/v1
Tagged keyless in the catalogue's free-tier list. 404 on both the listing and the chat call at the URL the catalogue gives, and 404 on /chat/completions at the host root, so nothing here answered a chat call with or without a key.
iFlytek Spark / SparkDesk https://spark-api-open.xf-yun.com/v1
Tagged keyless in the catalogue's free-tier list. 401 {"message":"Unauthorized"} on the chat call. The two catalogue entries are the same URL.
Registry entries added since 2026-08-11 52 providers, one anonymous chat call each, 2026-10-12
None of these is typed keyless by the catalogue, so none was a claim; they were called anyway because a typed key and a working keyless call are not the same thing, and Free.ai is the proof. Of 52 calls: 38 answered 401 or a body asking for a key, 3 answered 400 (one of which, Free.ai, answered 200 once given a model it serves and is on the shelf), 6 answered 404 and 2 answered 405 because they are not OpenAI-shaped (browser-driven or proprietary paths -- not a measurement of the provider), and 3 gave a 5xx from the host (void-ai, tabitoken, chat-oripe) that says nothing about auth. Unmeasured is not rejected: those five-hundreds can be re-run.
Web-UI scrapers duckduckgo-web, felo-web, qwen-web, t3-web, muse-spark-web, veoaifree-web, agy
Not probed, and not a measurement question. These drive somebody's chat website through an adapter; the source catalogue's own terms-of-service table marks every one of them avoid for proxied or non-personal use. An endpoint we would have to breach terms to call is not an endpoint we can tell you to call.
Vendor agent CLIs auggie, devin-cli-agentic, kiro, amazon-q, zcode, codex-app-server
Credential-free only in the sense that an installed CLI already holds an OAuth session. There is no URL to hand an OpenAI client, so there is nothing here for this shelf to check.

Free LLM API: questions this shelf answers

Is there a free LLM API that needs no API key?

Yes, a handful, and they come and go. The ones answering right now are on the no-key page, each called with no Authorization header and published with how often it answered.

How often is each endpoint checked?

Every endpoint gets real chat calls every hour. Feature checks (tool calling, JSON schema, vision, image output) run daily. The table above carries 143 models, each with the time it was last verified.

Why can a listed endpoint still fail for me?

Quotas are usually per IP. One that answered this server can return 429 or 402 from yours, which is why the API returns a ranked list to walk.

How do I call one from code?

GET /api/llm/up returns the base URL, model id and auth for what is answering. Parameters and a Python, Node and curl loop are in the reference. If you are choosing between lists, see how they compare.