every model, cheapest price.
one api routes to the lowest-cost provider for each request, and falls back when one fails · openai + anthropic specs · the upstream price + 5%
one endpoint, two specs.
point an openai or anthropic client at infer farm. change the base url and the key. the rest of your code stays.
a model id names the model, not the provider. the router picks the provider, request by request. one key and one balance reach every model on the list.
base url https://infer.farm/v1
key sk-infer-…
openai POST /v1/chat/completions
GET /v1/models
anthropic POST /v1/messages
cheapest or fastest. then the next one.
for each request the router lists every provider that serves the model right now, best first. it tries the first. if that one fails, it tries the next.
best first means cheapest first by default, and a provider that is slow or failing drops down the list. a request can ask for the fastest instead.
- 1
route
the router lists the providers that serve the model now, best first.
- 2
forward
the request goes to the first one as is. we keep no copy.
- 3
fall back
if it errors or times out, the next provider gets the request.
- 4
settle
one ledger row: tokens, price, fee. your balance pays it. the request settles here.
the upstream price, plus 5%.
you pay what the provider charges for your tokens, and a 5% fee on top. that is the whole price.
you hold a prepaid balance in usd and add credits by card. each request settles against the balance as one ledger row.
the models, live.
this list comes from the api as you read it. each row shows the lowest live price among the providers that serve the model.
loading the model list…
GET /v1/models. usd per 1M tokens, before the 5% fee. tags are explained in § 5.counts, never content.
for each request we keep token counts, prices and timings. we never store a prompt or a completion, and we never log one.
we keep model · provider · tokens · price · fee · timings we never prompts · completions
the provider that serves a request still sees it. what that provider keeps is set by its own terms, not ours. two tags in the model list help you choose:
- no-logsthe provider says it keeps no prompts or completions.
- uncensoredthe model has its refusal training removed, or never had it.
we promise only what we do. the counts above are all we keep.
change two lines.
get a key from the dashboard. put it in INFER_API_KEY. then point your client at infer farm.
curl https://infer.farm/v1/chat/completions \
-H "Authorization: Bearer $INFER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/llama-3.3-70b-instruct",
"messages": [{ "role": "user", "content": "hello" }]
}'
import OpenAI from "openai"
const client = new OpenAI({
baseURL: "https://infer.farm/v1",
apiKey: process.env.INFER_API_KEY,
})
const reply = await client.chat.completions.create({
model: "meta-llama/llama-3.3-70b-instruct",
messages: [{ role: "user", content: "hello" }],
})
the anthropic sdk works the same way. set its base url to https://infer.farm and pass the same key.
the team.
- founderrusvac
- cofounderbino
join the list.
a short note when the router changes: new models, new specs, a new fee. nothing else.
or write to hello@infer.farm