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.
How a request travels
| Hop | What happens |
|---|---|
| Your device | The request is encrypted to one verified chip (sealed) or to our edge (private, anonymized). |
| Hush0 | We route bytes we cannot read and pick the cheapest listed credit that meets your privacy floor. |
| Enclave / partner | The model runs. For sealed models, the key that decrypts your prompt never leaves the hardware. |
| Back to you | The response carries a receipt: privacy level, weights hash, attestation, cost. |
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
Privacy labels
Every model tells you who can read it. Pick a floor and nothing weaker is ever used.
| Label | Who can read the text | How | Models |
|---|---|---|---|
| sealed | Nobody. 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 |
| private | The machine, for one moment. | Open models on partner GPUs with zero retention. Nothing is written to disk or logs. | Qwen, Mistral |
| anonymized | The 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 |
| local | Only you. | Runs in your browser on your hardware. Free. Coming soon. | — |
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.
| Model | Label | Input | Output |
|---|
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 keys
Keys are issued to a wallet. No email, no password, nothing to leak.
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…"}
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
| Header | Meaning |
|---|---|
X-Privacy-Floor | sealed, private or anonymized. The request fails with 400 instead of running on anything weaker. |
Chat completions
Identical to the OpenAI chat endpoint. Text, images, streaming, system prompts.
Request body
| Field | Type | Notes |
|---|---|---|
model | string | Any id from /v1/models, for example claude-sonnet-5 or deepseek-r1. |
messages | array | system, user, assistant turns. Content may be a string or an array of text and image_url parts. |
stream | boolean | Server-sent events when true. |
max_tokens | integer | Up to 32,000. Default 8,000. |
effort | string | low (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 }
}
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
}]
}
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.
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.
Receipts
Every response proves what ran, where, and what it cost.
| Header | Meaning |
|---|---|
X-Privacy-Level | The label of the model that served the request. |
X-Model | The model id. |
X-Weights-Sha256 | Hash of the weights that ran, so you can check it is the real model. |
X-Attestation | For sealed models, the enclave attestation. n/a otherwise. |
X-Cost-USD | What this request cost you. |
Errors & limits
Errors use the OpenAI shape, so existing handling works.
{ "error": { "message": "Invalid API key.", "type": "authentication_error", "code": null } }
| Status | Type | When |
|---|---|---|
| 400 | invalid_request_error | Bad JSON, missing messages, or model below your privacy floor. |
| 401 | authentication_error | Missing or invalid key. |
| 404 | not_found_error | Unknown model or route. |
| 429 | rate_limit_error | More than 60 requests per minute on one key. |
| 502 / 503 | server_error | The 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.
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
createOpenAI({ baseURL }).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
/v1with a key it holds. Nothing else to configure. - Privacy floor per request. Let the agent decide: set
X-Privacy-Floor: sealedfor anything with user data, leave it off for public research. - Receipts in the response. Log
X-Cost-USDandX-Privacy-Levelper call for an audit trail without logging the text.
tools field is accepted and ignored on sealed models.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.
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.