Build with Free.ai — one Bearer token, 400+ AI tools.
Chat, image, video, music, voice, OCR, translate — all on a single OpenAI-compatible endpoint. Generous free pool, transparent markup, partner pricing at scale.
30,000 free tokens/day. Cards never required to start.
Single endpoint per modality
One URL handles every chat model. One URL for every image model. Pick the model with a single string. No per-provider SDK shuffle.
Honest, markup-friendly billing
Self-hosted models bill at raw cost. Premium models add a transparent markup that drops as you scale. Every response reports the exact token cost.
99 languages out of the box
Chat, translate, TTS, STT — every major modality covers 99 languages with no extra config. Pass a language code and it works.
60-second quickstart
Same API, five languages. Drop your sk-free-... key in and run.
curl https://api.free.ai/v1/chat/ \
-H "Authorization: Bearer sk-free-YOUR-KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-7b",
"messages": [{"role":"user","content":"Hello!"}]
}'import requests
r = requests.post(
"https://api.free.ai/v1/chat/",
headers={"Authorization": "Bearer sk-free-YOUR-KEY"},
json={
"model": "qwen2.5-7b",
"messages": [{"role": "user", "content": "Hello!"}],
},
)
print(r.json()["choices"][0]["message"]["content"])const r = await fetch("https://api.free.ai/v1/chat/", {
method: "POST",
headers: {
"Authorization": "Bearer sk-free-YOUR-KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "qwen2.5-7b",
messages: [{role: "user", content: "Hello!"}],
}),
});
const data = await r.json();
console.log(data.choices[0].message.content);package main
import (
"bytes"; "fmt"; "io"; "net/http"
)
func main() {
body := []byte(`{"model":"qwen2.5-7b","messages":[{"role":"user","content":"Hello!"}]}`)
req, _ := http.NewRequest("POST", "https://api.free.ai/v1/chat/", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer sk-free-YOUR-KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}require "net/http"
require "json"
uri = URI("https://api.free.ai/v1/chat/")
req = Net::HTTP::Post.new(uri, {
"Authorization" => "Bearer sk-free-YOUR-KEY",
"Content-Type" => "application/json",
})
req.body = {
model: "qwen2.5-7b",
messages: [{role: "user", content: "Hello!"}],
}.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts JSON.parse(res.body)["choices"][0]["message"]["content"]Pricing — discounts kick in automatically
$1 = 750,000 tokens. Self-hosted models bill at raw cost. Premium model markup drops with 30-day spend.
What you can build
Embed your @handle as a chat agent
Train an AI persona on your knowledge, drop a one-line script tag on any page. Visitors chat your AI; your account picks up the cost.
Webhooks
Configure a signed callback for long-running jobs (video gen, batch transcription, share-link creation, low-credit alerts). HMAC-SHA256 signature in X-Free-Signature.
Set up webhooks →