Docs

2% routed + standard fees apply. 2% routing fee on upstream inference (upstream × 1.02). Standard payment-rail and onramp fees apply separately — Stripe card, Tempo/x402 gas, Coinbase, MoonPay, etc. Catalog reads are free.

Quickstart — the CLI

One command for an instant key + trial credit, then run any model. No signup, no provider keys.

npx infr onboard                          # instant infr_sk_ key + $0.50 trial credit
npx infr run seedream-4.5 "a red bicycle" # generate → saves infr-*.png
npx infr models --cheap                   # browse the catalog, cheapest first
npx infr plan "5k product photos a month" # ask the orchestrator for a chain
npx infr balance                          # 01.cash balance

The key debits your 01.cash balance; infr routes each call to the cheapest provider. Use it in code with export INFR_API_KEY=infr_sk_live_….

Machine discovery — /api/manifest

Every model as a unified, payable resource (infr's x402scan). Crawl /api/manifest to discover the full catalog, prices, and the three ways to pay (infr_sk key · x402/USDC · MPP).

Agent index — /i/

Predictable machine-readable endpoints for agents. Start with /llms.txt or /i/index.json. Full hub at /i.

GET /llms.txt              # agent discovery (mirror: /i/llms.txt)
GET /i/index.json          # manifest of all endpoints
GET /i/prices.json         # full inference catalog
GET /i/gpu.json            # GPU hosting + serverless
GET /i/training.json       # trainable models + trainer prices
GET /i/rails.json          # payment rails
GET /i/sharing.json        # credit sharing systems
GET /i/prices.md           # markdown price table
GET /i/hosting.md          # markdown GPU table
GET /i/training.md         # markdown training table
GET /i/routing.md          # how to call /api/v/{model}

Prices API — free, for agents

Realtime managed-inference prices normalized to $/image @1MP. Refreshed weekly from arena.ai + provider pages. No auth required. CORS enabled.

GET https://infr.sh/api/prices
GET https://infr.sh/api/prices?modality=edit&sort=price&routable=1
GET https://infr.sh/api/prices/<model-id>
POST https://infr.sh/api/prices/quote
  { "steps": [{ "model_id": "flux-kontext", "role": "edit" }], "calls": 1000 }

Each model includes cheapest (catalog min), routed (what infr actually routes to today), and endpoint for the proxy.

SDK

npm install infr

import { Infr } from 'infr'

const infr = new Infr() // or new Infr({ baseUrl: 'http://infr.localhost:1355' })

const catalog = await infr.prices.list({ modality: 'edit', sort: 'price' })
const model = await infr.prices.get('seedream-4.5')
const quote = await infr.prices.quote([{ model_id: 'flux-kontext' }], 1000)
const plan = await infr.plan({ goal: 'upscale product photos', expected_calls: 5000 })

CLI

npx infr prices --modality edit --sort price
npx infr price seedream-4.5
npx infr quote flux-kontext seedream-4.5 --calls 1000
npx infr plan "background removal for 200 portraits/day" --calls 6000

# local dev
INFR_BASE_URL=http://infr.localhost:1355 npx infr prices

Package lives in packages/infr in this repo.

Browse — free

/ = price table · /bundle = chain builder. Data committed to the repo, refreshed every Monday by a GitHub Action that runs Firecrawl over arena.ai + provider pricing pages.

Route — 2% routed + standard fees apply

Free trial: any anonymous client (no Authorization header, no MPP credential) gets $0.20 of free routed calls tracked via a signed cookie. After that the proxy returns 402 Payment Required with a link to deposit. Sign in with Privy + add funds to continue, or switch to the MPP / 402 path to pay per call.

1. API key (humans, registered apps)

POST https://infr.sh/api/v/<model-id>
Authorization: Bearer <infr-api-key>
Content-Type: application/json

{
  "prompt": "...",
  "image_url": "...",
  "size": "1024x1024"
}

2. MPP / HTTP 402 (agents, x402 clients, wallets)

No API key required. POST with no Authorization header; infr responds 402 Payment Required with the quote (upstream + 2%), accepting either Tempo (USDC on Base) or Stripe (card) rails. Any MPP-compatible client auto-pays and retries.

# With mppx-fetch (TypeScript)
import { fetch } from 'mppx/client'
import { tempo } from 'mppx/client'

const res = await fetch('https://infr.sh/api/v/seedream-4.5', {
  method: 'POST',
  body: JSON.stringify({ prompt: 'a cat' }),
  payment: tempo({ wallet: myWallet, maxAmount: '0.10' })
})
# Raw HTTP — two-roundtrip
curl -X POST https://infr.sh/api/v/seedream-4.5 \
     -d '{"prompt":"a cat"}'
# → 402 with Challenge in body, X-Payment-Methods header

curl -X POST https://infr.sh/api/v/seedream-4.5 \
     -H "Payment: <signed credential>" \
     -d '{"prompt":"a cat"}'
# → 200 with X-Receipt header

Pricing in one number

Every cell in the table converts to a normalized $/image @1MP. Token-billed models (Google, OpenAI) are converted via the vendor's published per-image rate at the default quality tier. infr charges upstream × 1.02 on routed calls. 2% routed + standard fees apply — Stripe, onramps, and chain fees are on top of the quote.

Add funds

Anything in → 01.cash (USD normalize) → Pute → compute. /deposit offers Stripe card top-up, Peer ZKP2P (Venmo, Revolut, Wise, Cash App — widest P2P), and crypto onramps (Coinbase ~1%, MoonPay global, Stripe Crypto ~1.5%). Agents: /i/onramps.json for the full stack. MPP agents pay per call without a balance.

Self-host

For Apache-2.0 models (Qwen Image / Edit, Wan, Bagel, Step1X-Edit, Flux.2 klein 4B) the cheapest path is renting an H100 on Vast.ai spot (~$0.34/hr). infr will route to your own endpoint via POST /api/endpoints (v1.5).

Available models (35)