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%

§ 1the api

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
fig. 1 · the whole surface. requests and replies keep the shape of the spec you called.
§ 2routing

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. 1

    route

    the router lists the providers that serve the model now, best first.

  2. 2

    forward

    the request goes to the first one as is. we keep no copy.

  3. 3

    fall back

    if it errors or times out, the next provider gets the request.

  4. 4

    settle

    one ledger row: tokens, price, fee. your balance pays it. the request settles here.

fig. 2 · the life of a request: route → forward → fall back → settle. a request that fails before its first token costs nothing.
§ 3pricing

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.

fig. 3 · one request, one ledger row. tokens in and out at the upstream price per 1M, then the fee. specimen, not a real request.
§ 4models

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…

fig. 4 · live from GET /v1/models. usd per 1M tokens, before the 5% fee. tags are explained in § 5.
§ 5privacy

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
fig. 5 · what a ledger row holds, and what it never holds.

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.

§ 6quickstart

change two lines.

get a key from the dashboard. put it in INFER_API_KEY. then point your client at infer farm.

curl
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" }]
  }'
fig. 6 · one request on the openai spec. use any model id from § 4.
typescript · openai sdk
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" }],
})
fig. 7 · the openai sdk as you use it now. only the two bright lines change.

the anthropic sdk works the same way. set its base url to https://infer.farm and pass the same key.

§ 7team

the team.

  • founderrusvac
  • cofounderbino
§ 8the list

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