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)
- gpt-image-2-medium
- chatgpt-image-hi-fi
- grok-imagine-quality
- nano-banana-pro-1k
- nano-banana-pro-2k
- nano-banana-pro-4k
- nano-banana-2
- gpt-image-1.5-hi-fi
- uni-1.1-max
- uni-1.1
- wan-2.7-image-pro
- seedream-4.5
- hunyuan-image-3.0-instruct
- wan-2.7-image
- nano-banana
- seedream-5.0-lite
- qwen-image-2.0-pro
- seedream-4-2k
- flux-2-max
- reve-v1.1
- qwen-image-2.0
- kling-image-o1
- flux-2-pro
- qwen-image-edit
- flux-2-flex
- flux-2-klein-9b
- flux-2-dev
- flux-2-klein-4b
- flux-1-kontext-max
- flux-1-kontext-pro
- flux-1-kontext-dev
- seededit-3.0
- p-image-edit
- bagel
- step1x-edit