Pollio

Pollio

Copperplate engraving of a young man in profile facing right, wearing a gilded, spiked radiate crown over thick curled hair, after an antique intaglio gem.

One API for any AI model, served by an open market of GPUs. With private inference, only you can read your prompts and outputs.

How to begin

Buy inference

  1. Sign up

    Use Google, GitHub, X, or a Solana or Ethereum wallet.

    Engraving of a quill pen standing in an inkwell.
  2. Add credits

    Top up with any coin. Credits work with every model and every node, public or private.

    Engraving of Mercury's purse, a small pouch tied with a cord, with three coins in front of it.
  3. Get your key

    Create an API key and point any OpenAI client at Pollio. For private inference, run pollio proxy.

    Engraving of an antique key with an ornamental bow.

    POLLIO_API_KEY

    pl-live- followed by your secret key

Create an account

Sell inference

  1. Install

    Download the node for Linux or Mac. pollio-node doctor tells you which requests your machine can serve.

    Engraving of Vulcan's hammer resting on an anvil.

    pollio-node doctor

    Public:eligible

    Private:needs attestation

  2. Link your account

    Run pollio-node login and approve the device from your account.

    Engraving of a signet ring pressed into a wax seal that carries a laurel wreath.

    PLLO-7K3Q

    Approve on pollio.ai/device

  3. Serve and get paid

    Set your prices, start the node, and get paid in USDC for every token you serve.

    Engraving of a balance scale, with coins falling into one pan.

Download the node

Copperplate engraving of Aequitas, the Roman goddess of fair dealing, seated in a radiate crown, holding a balance level in one hand while coins pour from the cornucopia at her side.

Keep your code, change the URL

Any OpenAI client works. Most models cost well below their makers' prices.

Fig. I, prompt

Set POLLIO_API_KEY in your shell, then paste this into Codex, Claude Code or OpenCode.

Set up Pollio as your model provider. Its API is at https://api.pollio.ai/v1 and the model is deepseek/deepseek-v4.1-flash. My key is in the POLLIO_API_KEY environment variable: never print it or write it into a file.
+ 5 more lines Codex: in ~/.codex/config.toml, add [model_providers.pollio] with base_url set to that URL, env_key = "POLLIO_API_KEY" and wire_api = "responses". At the top of the file, set model to the model and model_provider = "pollio". Claude Code: in ~/.claude/settings.json, set env.ANTHROPIC_BASE_URL to that URL without /v1, set ANTHROPIC_MODEL, ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL and ANTHROPIC_DEFAULT_HAIKU_MODEL in env to the model, and set apiKeyHelper to "printenv POLLIO_API_KEY". OpenCode: in opencode.json, add a "pollio" provider with npm "@ai-sdk/openai-compatible", options.baseURL set to that URL, options.apiKey set to "{env:POLLIO_API_KEY}" and the model under models, then set "model" to "pollio/deepseek/deepseek-v4.1-flash". Any other agent: say so, and send me to https://pollio.ai/integrations/. Back up the file first, keep my other settings, show me the change, and tell me what to restart.

Fig. I, terminal

export OPENAI_BASE_URL=https://api.pollio.ai/v1
export OPENAI_API_KEY=pl-live-...
export OPENAI_MODEL=deepseek/deepseek-v4.1-flash

Fig. II, claude_desktop_config.json

{
  "mcpServers": {
    "pollio": {
      "command": "npx",
      "args": ["-y", "@pollio/mcp"],
      "env": {
        "POLLIO_API_KEY": "pl-live-..."
      }
    }
  }
}

Fig. II, terminal

claude mcp add pollio --scope user \
  -e POLLIO_API_KEY=pl-live-... \
  -- npx -y @pollio/mcp

Fig. III, hello.py

# pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://api.pollio.ai/v1",
    api_key="pl-live-...",
)

completion = client.chat.completions.create(
    model="deepseek/deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Hello"}],
)
print(completion.choices[0].message.content)

Fig. III, hello.mjs

// npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.pollio.ai/v1",
  apiKey: "pl-live-...",
});

const completion = await client.chat.completions.create({
  model: "deepseek/deepseek-v4.1-flash",
  messages: [{ role: "user", content: "Hello" }],
});
console.log(completion.choices[0].message.content);

Fig. III, main.go

// go get github.com/openai/openai-go/v3
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go/v3"
	"github.com/openai/openai-go/v3/option"
)

func main() {
	client := openai.NewClient(
		option.WithBaseURL("https://api.pollio.ai/v1"),
		option.WithAPIKey("pl-live-..."),
	)
	params := openai.ChatCompletionNewParams{
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.UserMessage("Hello"),
		},
		Model: "deepseek/deepseek-v4.1-flash",
	}
	completion, err := client.Chat.Completions.New(context.TODO(), params)
	if err != nil {
		panic(err)
	}
	fmt.Println(completion.Choices[0].Message.Content)
}

Fig. III, request.sh

curl https://api.pollio.ai/v1/chat/completions \
  -H "Authorization: Bearer pl-live-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek/deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Fig. IV, connection settings

Base URL
https://api.pollio.ai/v1
API key
pl-live-...
Model
deepseek/deepseek-v4.1-flash

Fig. V, terminal

curl -fsSL https://pollio.ai/install.sh | sh
pollio-node login
pollio-node serve deepseek/deepseek-v4.1-flash \
  --price-in 0.003 \
  --price-out 0.012

Discounts by model

The lowest current offer on the network, in US dollars, and how far below the maker's own API price it is, with the discount over the last 30 days.
ModelBest priceDiscount
Claude Opus 5.5Anthropic · 1M context$0.75 / M input$3.75 / M output
$0.75 / M input$3.75 / M output85%, between 79% and 99% over the last 30 days
GPT-6 AstraOpenAI · 1.1M context$0.18 / M input$1.08 / M output
$0.18 / M input$1.08 / M output94%, between 94% and 99% over the last 30 days
GPT Image 2.5OpenAI$0.004 / image
$0.004 / image90%, between 88% and 99% over the last 30 days
GLM 5.3Z.ai · 1M context$0.04 / M input$0.13 / M output
$0.04 / M input$0.13 / M output96%, between 91% and 99% over the last 30 days
Kimi K3Moonshot AI · 1M context$0.04 / M input$0.18 / M output
$0.04 / M input$0.18 / M output95%, between 65% and 98% over the last 30 days

Specimen prices. Names and logos belong to their owners. No endorsement implied.

See every model

In the tools you use

Keep your editor, agent or chat app. Only the provider changes.

All 19 integrations
  1. Fig. I, config.toml

    Illustrative setup

    model = "deepseek/deepseek-v4.1-flash"
    model_provider = "pollio"
    
    [model_providers.pollio]
    name = "Pollio"
    base_url = "https://api.pollio.ai/v1"base_url = "http://127.0.0.1:8787/v1"
    env_key = "POLLIO_API_KEY"
    wire_api = "responses"
    Provider
    Pollio
    Path
    PublicPrivate

    Codex

    Add Pollio as a provider in one config block.

  2. Fig. II, environment

    Illustrative setup

    ANTHROPIC_BASE_URL=https://api.pollio.aiANTHROPIC_BASE_URL=http://127.0.0.1:8787
    ANTHROPIC_AUTH_TOKEN=pl-live-...
    ANTHROPIC_MODEL=deepseek/deepseek-v4.1-flash
    Provider
    Pollio
    Path
    PublicPrivate

    Claude Code

    Same terminal, a different provider.

  3. Fig. III, Cursor Settings

    Illustrative setup

    # Cursor Settings › Models
    OpenAI API Key
      pl-live-...
    Override OpenAI Base URL
      https://api.pollio.ai/v1
    Custom Models
      deepseek/deepseek-v4.1-flash
    Provider
    Pollio
    Path
    PublicPublic only

    Cursor

    Override the base URL, keep your editor.

Private runs through pollio proxy on your machine.

Public and private

Copperplate engraving of the two-faced god Janus: two bearded heads joined at the back, one looking left and one looking right, bound with a tied fillet.

Choose a mode for each request. Public is the default.

Public

Your request goes to the open market, where providers compete to serve it.

Served by
Any provider on the network
Who can read it
You and the provider serving it
Price
The market rate, usually the lowest
Good for
Most work

Private

Prompts and outputs stay private. [To come: how private inference keeps prompts and outputs private.]

Served by
Providers that qualify for private requests
Who can read it
Only you
Price
Higher than public
Good for
Customer data and internal documents

For providers

Copperplate engraving of Vulcan seated on a rock at his anvil, raising a hammer over a bar of metal held in tongs.

If you run GPUs, you can sell inference on Pollio. Set a price for each model you serve and get paid in USDC every 7 days, less a 5% routing fee.

Read the provider guide

How a request travels

  1. Buyer

    Sends an OpenAI-format request, with an optional price cap and privacy mode.

  2. Router

    Picks a provider on price, latency and uptime. Private requests go only to providers that qualify.

  3. Provider

    Runs the model and streams the tokens back. If it stalls, the router moves the request.

  4. Settlement

    Counts the tokens, charges the buyer and pays the provider.

The router adds about 18 ms to a request.

Questions

Copperplate engraving of Minerva in profile facing right, wearing a crested helmet, with a small owl perched on her shoulder.

Which models can I call?

Any model a provider serves on the network, 412 at the moment. If a model you need is missing, anyone can start serving it.

How is the price set?

Providers set their own price per million tokens. The router sends each request to the cheapest provider that meets your latency and uptime needs, and you can cap the price or pin a provider.

What if a provider fails mid-request?

The router moves the request to another provider and carries on. You only pay for the tokens you receive.

What do I need to become a provider?

A machine with a recent GPU and a steady connection. The node tells you which models fit in your card's memory, and you choose which ones to serve.