{"rid":"inference/free-ai","card":{"rid":"inference/free-ai","eid":"free","topic":"inference","slug":"free-ai","provider":"free.ai","url":"https://api.free.ai/v1","domain":"free.ai","category":"inference endpoint, keyless","tier":null,"verdict":"qualifies-with-caveat","vorder":1,"grp":"usable","confidence":"measured","binding":"none","identity_kind":"anonymous","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":"rest","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-22T03:14:44.000Z","verified_basis":"live","checked_on":"2026-10-23","stale_on":"2026-11-22","n_evidence":2,"usd_month":null,"usd_per_tb_month":null,"summary":"513 model entries in /v1/models, 45 of them marked self_hosted true; every id probed answers from one backend, Qwen/Qwen3-30B-A3B-Instruct","duplicate_of":null,"n_unknown":4},"record":{"topic":"inference","per_object_cap":{"stated":"not applicable: an inference endpoint stores nothing for the caller"},"retention":{"stated":"not applicable"},"egress":{"terms":"the response is the payload; no separate egress term is published","metered":false},"interface":["rest"],"tooling":"any OpenAI-compatible client; curl against POST {base}/chat/completions","chaining":"pairs with a batch job that does not care which model runs; the single backend is the scarce link, and the prober puts it at 96 per cent of accepted calls","limits":[],"slug":"free-ai","provider":"free.ai","url":"https://api.free.ai/v1","category":"inference endpoint, keyless","free_tier":{"stated":"513 model entries in /v1/models, 45 of them marked self_hosted true; every id probed answers from one backend, Qwen/Qwen3-30B-A3B-Instruct","unit":"tokens","metered_on":"request-count","source_url":"https://api.free.ai/v1/models","read_on":"2026-10-22","notes":"the catalogue carries prompt and completion prices of '0' per entry. The count 513 is the length of the models array, measured today"},"endpoint":"https://api.free.ai/v1/chat/completions","identity_cost":{"kind":"anonymous","detail":"no key required. The prober's per-endpoint track record reports 194 of 732 calls answered over 10 days, 27 per cent, and 194 of the 202 calls free.ai accepted for a model it serves, 96 per cent","country":null},"reliability_note":"no substitution was observed inside a single run, but the model served never matches the model requested for any id other than the backend's own name","confidence":"measured","confidence_note":"the substitution was measured three times in run 1 and twice in run 2, plus once with a different id. What remains unmeasured is whether any of the 45 self-hosted entries is served as named.","probe":{"records":[{"probe_id":"freeai-qwen3-8b","requested_model":"qwen3-8b","http_run1":200,"http_run2":200,"answered_run1":"yes","answered_run2":"yes","model_echoed":"Qwen/Qwen3-30B-A3B-Instruct","echo_match":"SUBSTITUTED","latency_ms_run1":2360,"latency_ms_run2":1517,"ttft_ms_run1":885,"completion_tokens_run1":9,"tps_run1":"10.91","tps_run2":"13.87","tps_basis":null,"needle_echoed_run1":"yes","body_bytes_run1":824,"body_sha256_16_run1":"9ef4f43fa87fd7a5","reasoning_only":"no","error_run1":"","error_run2":""},{"probe_id":"freeai-qwen-coder","requested_model":"qwen-coder","http_run1":200,"http_run2":200,"answered_run1":"yes","answered_run2":"yes","model_echoed":"Qwen/Qwen3-30B-A3B-Instruct","echo_match":"SUBSTITUTED","latency_ms_run1":1370,"latency_ms_run2":1137,"ttft_ms_run1":819,"completion_tokens_run1":9,"tps_run1":"10.03","tps_run2":"12.92","tps_basis":null,"needle_echoed_run1":"yes","body_bytes_run1":826,"body_sha256_16_run1":"b49b6704165db51e","reasoning_only":"no","error_run1":"","error_run2":""},{"probe_id":"freeai-deepseek-r1","requested_model":"deepseek-r1","http_run1":200,"http_run2":200,"answered_run1":"yes","answered_run2":"no","model_echoed":"Qwen/Qwen3-30B-A3B-Instruct","echo_match":"SUBSTITUTED","latency_ms_run1":9223,"latency_ms_run2":6547,"ttft_ms_run1":913,"completion_tokens_run1":225,"tps_run1":"","tps_run2":"","tps_basis":null,"needle_echoed_run1":"yes","body_bytes_run1":1613,"body_sha256_16_run1":"bf8d7e91e7bfc069","reasoning_only":"no","error_run1":"","error_run2":"empty content; reasoning field populated (901 chars); finish_reason=length"}],"runs":["probes-w.json","probes-w-run2.json"]},"evidence":[{"url":"probe:https://api.free.ai/v1/chat/completions","date":"2026-10-22","proved":"qwen3-8b, qwen-coder and deepseek-r1 all echoed Qwen/Qwen3-30B-A3B-Instruct in run 1; qwen3-8b and qwen-coder did so again in run 2"},{"url":"https://api.free.ai/v1/models","date":"2026-10-22","proved":"513 entries with prompt and completion prices of '0'; 45 carry self_hosted true; the first entries name qwen7b as 'Qwen 3.6 35B' and qwen-coder as 'Qwen 3.6 35B'"}],"verdict":"qualifies-with-caveat","verified_at":"2026-10-22T03:14:44.000Z","notes":"The catalogue is 513 names for approximately one backend. Any capacity or quality claim about free.ai is a claim about Qwen3-30B-A3B, and a benchmark keyed on the requested id would be attributed to a model that never ran.","binding":"none","binding_note":"no quota binds above a user's  scale: every id probed answered 200 with no key, in both runs. The failure here is substitution and not a ceiling, and substitution is not one of the six constraint kinds, so it is recorded in limits_note rather than forced into a kind that would misdescribe it","limits_note":"the served model is the constraint: 513 catalogue names resolve to one backend, Qwen/Qwen3-30B-A3B-Instruct, so the model cannot be chosen and a capacity claim about free.ai is a claim about that one model. The prober's accepted-only rate for this endpoint is 194 of 202 calls, 96 per cent, so it answers reliably; what it does not do is serve what was asked for"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.probe.records[0].tps_basis","process"],["$.probe.records[1].tps_basis","process"],["$.probe.records[2].tps_basis","process"],["$.retention.stated","not-applicable"]],"history":[],"drift":[]}