Overview

About Hush0

Hush0 is one endpoint in front of every major AI model, with an honest privacy label on each, at prices below the labs.

What it is

Hush0 is a drop-in replacement for the OpenAI chat endpoint. You change the base URL and the key, and everything you already wrote keeps working. Behind the endpoint is a marketplace: people list API credit they won't use, and your requests are served by the best offer.

Every model carries a label that says exactly who can read your text. Sealed models run inside verified hardware enclaves where nobody, including us, can read the prompt. Private models run on zero-retention partner GPUs. Anonymized models go to the lab that made them, with your identity stripped.

What we never do

  • We never store prompts or answers. The server keeps model, tokens, cost and timing only.
  • We never see who you are. Keys are issued to a wallet, not an email, and requests carry no identity.
  • We never train on your data, and we never let a partner train on it either.
Chat history lives in your browser. Clear your site data and it is gone. There is no copy anywhere else.

How a request travels

HopWhat happens
Your deviceThe request is encrypted to one verified chip (sealed) or to our edge (private, anonymized).
Hush0We route bytes we cannot read and pick the cheapest listed credit that meets your privacy floor.
Enclave / partnerThe model runs. For sealed models, the key that decrypts your prompt never leaves the hardware.
Back to youThe response carries a receipt: privacy level, weights hash, attestation, cost.
Overview

Quickstart

Change the base URL and the key. Everything else works as it does today.

1. Get a key

Connect a wallet on the API keys page and click Create key. The key is shown once.

2. Point your client at Hush0

# before
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_API_KEY=sk-…

# after
OPENAI_BASE_URL=https://hush0.ai/v1
OPENAI_API_KEY=sk-hush0-…

3. Make a request

curl https://hush0.ai/v1/chat/completions \
  -H "Authorization: Bearer $HUSH0_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama-4-maverick",
    "messages": [{"role": "user", "content": "Summarize this lease in three lines."}]
  }'
from openai import OpenAI

client = OpenAI(base_url="https://hush0.ai/v1", api_key="sk-hush0-…")

r = client.chat.completions.create(
    model="llama-4-maverick",
    messages=[{"role": "user", "content": "Summarize this lease in three lines."}],
)
print(r.choices[0].message.content)
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://hush0.ai/v1", apiKey: "sk-hush0-…" });

const r = await client.chat.completions.create({
  model: "llama-4-maverick",
  messages: [{ role: "user", content: "Summarize this lease in three lines." }],
});
console.log(r.choices[0].message.content);

4. Read the receipt

Every response carries headers that prove what ran and what it cost.

X-Privacy-Level: sealed
X-Model: llama-4-maverick
X-Attestation: verified;nvidia-cc
X-Weights-Sha256: 71bd04ae9c2e1f3a…
X-Cost-USD: 0.000310
Overview

Privacy labels

Every model tells you who can read it. Pick a floor and nothing weaker is ever used.

LabelWho can read the textHowModels
sealedNobody. Not us, not the host.Encrypted on your device to a verified enclave (NVIDIA confidential computing). Decrypted only inside the chip. The enclave signs what ran.Llama 4, DeepSeek, Kimi
privateThe machine, for one moment.Open models on partner GPUs with zero retention. Nothing is written to disk or logs.Qwen, Mistral
anonymizedThe lab that made it. They see the text, never you.Requests are stripped of identity and mixed with everyone else's before they reach Anthropic, OpenAI, Google or xAI.Claude, GPT, Gemini, Grok
localOnly you.Runs in your browser on your hardware. Free. Coming soon.
Honest by default. Claude and GPT cannot be sealed, because the labs do not release their weights. We say so instead of pretending.
Overview

Pricing & credits

You pay per request in dollars. Supply is unused credit listed by the people who hold it, so prices sit well below list.

How it's priced

  • Deposit stays in dollars. From $5. Pay per request, per token.
  • Better prices serve first. Sellers list credit at 10% to 80% off. Your request takes the best offer that meets your privacy floor.
  • The real model, provably. Every reply carries the weights hash.

Current prices

Per million tokens. Live numbers, with list prices for comparison, are on the Models page and in GET /v1/models.

ModelLabelInputOutput

Agents pay per call

An agent does not need an account. Any wallet can mint a key, and the key is charged per request. There is no monthly plan and no minimum.

API reference

API keys

Keys are issued to a wallet. No email, no password, nothing to leak.

Not connected
Shown once. Keys are signed, not stored, so we cannot show it again. Create another any time.

Format

Keys start with sk-hush0-. They are signed by the server and carry the wallet they were issued to, so there is no database of keys to leak. Rotate by minting a new one. To revoke, contact us with the key prefix.

Check a key

curl https://hush0.ai/api/keys/verify -H "Authorization: Bearer $HUSH0_API_KEY"
# {"valid":true,"owner":"0x8f3a…d5e1","created":"2026-09-13T…"}
API reference

Authentication

Send your key as a bearer token on every request.

Authorization: Bearer sk-hush0-…

Base URL

https://hush0.ai/v1

All endpoints accept and return JSON. CORS is open, so keys can be used from a browser, but treat any key you ship to a browser as public.

Optional headers

HeaderMeaning
X-Privacy-Floorsealed, private or anonymized. The request fails with 400 instead of running on anything weaker.
API reference

Chat completions

POST/v1/chat/completions

Identical to the OpenAI chat endpoint. Text, images, streaming, system prompts.

Request body

FieldTypeNotes
modelstringAny id from /v1/models, for example claude-sonnet-5 or deepseek-r1.
messagesarraysystem, user, assistant turns. Content may be a string or an array of text and image_url parts.
streambooleanServer-sent events when true.
max_tokensintegerUp to 32,000. Default 8,000.
effortstringlow (default), medium, high. How hard the model thinks before answering.

Example

curl https://hush0.ai/v1/chat/completions \
  -H "Authorization: Bearer $HUSH0_API_KEY" \
  -H "X-Privacy-Floor: sealed" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1",
    "messages": [
      {"role": "system", "content": "Answer in one sentence."},
      {"role": "user", "content": "Why is the sky blue?"}
    ]
  }'

Response

{
  "id": "chatcmpl-9f2a…",
  "object": "chat.completion",
  "model": "deepseek-r1",
  "choices": [{ "index": 0, "message": { "role": "assistant", "content": "…" }, "finish_reason": "stop" }],
  "usage": { "prompt_tokens": 31, "completion_tokens": 22, "total_tokens": 53 }
}
API reference

Models

GET/v1/models

Lists every model with its label, context window, prices and capabilities. No key required.

curl https://hush0.ai/v1/models
{
  "object": "list",
  "data": [{
    "id": "llama-4-maverick", "object": "model", "owned_by": "meta",
    "privacy": "sealed", "context": 1000000,
    "pricing": { "here": { "input": 0.32, "output": 0.32 }, "list": { "input": 0.85, "output": 0.85 }, "unit": "USD per 1M tokens" },
    "capabilities": ["vision"], "available": true
  }]
}
API reference

Streaming

Set stream: true and read server-sent events, exactly as with OpenAI.

data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"The"}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" sky"}}]}
…
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[],"usage":{…},"hush0":{"X-Privacy-Level":"sealed","X-Cost-USD":"0.000310"}}
data: [DONE]

The final chunk carries usage and the receipt, since headers are already sent by the time the stream ends.

API reference

Images & files

Send images as image_url parts, base64 or a public URL. Models with the vision capability read them.

{
  "model": "claude-sonnet-5",
  "messages": [{
    "role": "user",
    "content": [
      { "type": "text", "text": "What is in this photo?" },
      { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0…" } }
    ]
  }]
}

PNG, JPEG, GIF and WebP up to 12 MB per request. PDFs and text files are supported in the web chat today and are coming to the API.

API reference

Receipts

Every response proves what ran, where, and what it cost.

HeaderMeaning
X-Privacy-LevelThe label of the model that served the request.
X-ModelThe model id.
X-Weights-Sha256Hash of the weights that ran, so you can check it is the real model.
X-AttestationFor sealed models, the enclave attestation. n/a otherwise.
X-Cost-USDWhat this request cost you.
API reference

Errors & limits

Errors use the OpenAI shape, so existing handling works.

{ "error": { "message": "Invalid API key.", "type": "authentication_error", "code": null } }
StatusTypeWhen
400invalid_request_errorBad JSON, missing messages, or model below your privacy floor.
401authentication_errorMissing or invalid key.
404not_found_errorUnknown model or route.
429rate_limit_errorMore than 60 requests per minute on one key.
502 / 503server_errorThe model is unavailable. Retry with backoff.

Limits

  • 60 requests per minute per key.
  • 40 MB per request body.
  • 32,000 output tokens per request.
  • Last 60 messages of a conversation are used.
Guides

OpenAI SDK

Any OpenAI-compatible client works. Set the base URL and key, then use it as you always have.

Python

pip install openai

from openai import OpenAI
client = OpenAI(base_url="https://hush0.ai/v1", api_key="sk-hush0-…")

with client.chat.completions.create(model="kimi-k2", stream=True,
    messages=[{"role": "user", "content": "Write a haiku about silence."}]) as s:
    for chunk in s:
        print(chunk.choices[0].delta.content or "", end="")

JavaScript

npm i openai

import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://hush0.ai/v1", apiKey: process.env.HUSH0_API_KEY });
const stream = await client.chat.completions.create({ model: "kimi-k2", stream: true, messages: [{ role: "user", content: "Write a haiku about silence." }] });
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? "");

Works with

Cursor, Continue, ClineSet the OpenAI base URL in settings.
LangChain, LlamaIndexUse the OpenAI chat model class with a base URL.
Vercel AI SDKcreateOpenAI({ baseURL }).
Open WebUI, LibreChatAdd Hush0 as an OpenAI-compatible provider.
Guides

Agents & tools

Agents pay per call and need no account. A wallet mints a key, the key is charged per request.

  • No sign-up flow. Point the agent at /v1 with a key it holds. Nothing else to configure.
  • Privacy floor per request. Let the agent decide: set X-Privacy-Floor: sealed for anything with user data, leave it off for public research.
  • Receipts in the response. Log X-Cost-USD and X-Privacy-Level per call for an audit trail without logging the text.
Tool calling is passed through for models that support it and is being standardised across labels. Until then, the tools field is accepted and ignored on sealed models.
Guides

Privacy floor

A floor is a promise: never run this request on anything weaker than the label I name.

curl https://hush0.ai/v1/chat/completions \
  -H "Authorization: Bearer $HUSH0_API_KEY" \
  -H "X-Privacy-Floor: sealed" \
  -d '{ "model": "claude-sonnet-5", "messages": [ … ] }'

# 400: Model 'claude-sonnet-5' is anonymized, below your X-Privacy-Floor of sealed.

The floor is checked before anything is sent anywhere. Failing loudly is the point: a downgrade you did not notice is the one that hurts.

Guides

Sell unused credit

List a key you don't fully use. Set your discount. Earn in USDC on every request it serves.

  • Paste a key. Pick how much to offer and at what discount, from 10% to 80% off list.
  • It's sealed. Your key is encrypted to the routing enclave. No employee can read it and no buyer ever sees it.
  • Earn per request. Withdraw from $10. No payout fee.

Start selling

On this page