DocsStartIntroduction

Use any model privately.

WISPR is an OpenAI compatible API in front of two things: a curated catalogue of uncensored open models running on sealed hardware, and the frontier models, reached through sharding so they never see the whole request. One key, one base URL, one receipt per request.

In a hurry

The Quickstart gets a private request out in two minutes. Everything else here is detail.

What happens to a request

Your request arrives encrypted inside a Phala enclave running on Intel TDX. There, identifiers become typed placeholders, the task is split into shards, and Context Aware Split Routing (CASR) picks a model per shard. Shards that carry anything sensitive run on catalogue models on WISPR hardware. A shard that needs frontier quality goes to Claude, GPT or Gemini with the placeholders in place. The enclave rebuilds one answer, restores the identifiers, and signs a receipt naming every model.

you ── encrypted ──▶ WISPR enclave (Phala, TDX) │ pseudonymise · split · route ├─▶ shard 1 · identity ──▶ catalogue model, WISPR hardware ├─▶ shard 2 · financial ──▶ catalogue model, WISPR hardware └─▶ shard 3 · reasoning ──▶ frontier model, placeholders only │ rebuild · restore · sign you ◀── one answer + receipt ◀──┘

Why people use it

Models that answer

A catalogue of uncensored and abliterated open models, picked because they do the work, hosted by us, behind one key.

Frontier quality without the exposure

Claude, GPT and Gemini stay in the loop for hard reasoning and only ever see a shard with placeholders.

Nothing kept

No prompts, no replies, no IP addresses. A balance and a token count. The privacy page lists every record we hold.

Proof on every reply

A receipt signed inside the enclave: which model got which shard, token counts, cost, enclave measurement.

Works where you work

Cursor, Claude Code, VS Code, OpenClaw, LangChain, CrewAI, n8n and any OpenAI client. Change the base URL and the key.

Provider price, one fee

Usage at the model's own rate with enclave time included. One fee when money comes in, zero while $WISPR is staked.

Where to go next

Quickstart

Base URL https://api.wispr.xyz/v1. Every OpenAI endpoint is mirrored: chat completions, responses, embeddings, images, video, audio. Sharding is on by default, so nothing about your request body changes.

1. Get a key

Create an account in the dashboard, by email or anonymously with a recovery phrase, then make a key under API keys. Give it a monthly budget and a per request cap. The key is shown once.

2. Fund the balance

Top up with any coin, by card, or with a deposit note if the funding must not be linkable to the account. Agents can skip the balance and pay per request over x402.

3. Send a request

curl https://api.wispr.xyz/v1/chat/completions \
  -H "Authorization: Bearer $WISPR_KEY" \
  -d '{ "model": "auto",
        "messages": [{ "role": "user", "content": "Review this contract and tell me where my position is weak." }] }'
from openai import OpenAI

client = OpenAI(base_url="https://api.wispr.xyz/v1", api_key="wispr_sk_...")
r = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Review this contract and tell me where my position is weak."}],
)
print(r.choices[0].message.content)
print(r.model_extra["wispr"]["cost_usd"])
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.wispr.xyz/v1", apiKey: "wispr_sk_..." });
const r = await client.chat.completions.create({
  model: "auto",
  messages: [{ role: "user", content: "Review this contract and tell me where my position is weak." }],
});
console.log(r.choices[0].message.content, r.wispr.cost_usd);

auto lets CASR pick per shard. Any id from the catalogue pins the main shard to that model; sensitive shards still go to catalogue models on WISPR hardware.

4. Read the receipt

The response is a normal chat completion plus a wispr object.

response.wispr
"wispr": {
  "masked": 4,
  "shards": [
    { "id": 1, "class": "identity",  "model": "dolphin-mistral-24b", "host": "wispr-enclave" },
    { "id": 2, "class": "financial", "model": "qwen3-32b",           "host": "wispr-enclave" },
    { "id": 3, "class": "reasoning", "model": "claude",              "host": "provider, shard only" }
  ],
  "tokens": { "in": 812, "out": 1040 },
  "cost_usd": 0.0147, "fee_usd": 0,
  "attestation": { "enclave": "wispr-casr", "measurement": "sha256:4f1c…a9e0", "quote": "…" },
  "signature": "ed25519:…"
}
Note

cost_usd is the sum of the shards at the model's own rate with enclave time included. The WISPR fee is charged once at top up, never per request. See Pricing and fees.

Accounts and keys

Two ways in. Email and password, or anonymous with a generated username and a twelve word recovery phrase. Both hold a balance and keys. Neither holds a prompt.

Email

An email and a password. Reset by link if you forget. We store a hash of the email and a hash of the password, nothing else about you.

Anonymous

No email, no phone, no name. The dashboard generates a username like willow-tide-03c00e8fcb73 and a twelve word BIP39 phrase in your browser. The account key is derived from the phrase on your device. We receive a public key and the username. The phrase never leaves your machine, so nobody can recover the account for you, including us.

Keep the phrase

Lose it and the account and its balance are gone. Keep small balances in anonymous accounts and top up often.

Keys

A key looks like wispr_sk_… and works in any OpenAI client. Each key carries a monthly budget and a per request cap, enforced inside the gateway. An agent in a loop stops at its cap instead of draining the balance. Keys are stored hashed and shown once.

terminal
npx wispr keys create --name "cursor laptop" --budget 25 --cap 0.50
npx wispr keys list
npx wispr keys revoke wispr_sk_7f2k…

What an account stores

Identityemail hash and password hash, or a public key and a username
Moneybalance, top ups with rail and fee, stake status
Usageper key: request count, token count, cost per day
Keysname, hash, budget, cap, created
Neverprompts, replies, IP addresses, receipts (those live in your client)

Who sees what

There is no privacy mode to switch on because there is no other mode. Every request runs the same way.

PartySeesNever sees
WISPR enclavethe whole request, in memory, inside Intel TDX, with a published measurement your client can checkanything after the reply is sent; nothing is written to disk
Catalogue modelstheir shard, in plaintext, inside WISPR hardwareother shards, your account, your address
Frontier providersone shard with typed placeholders, from a WISPR exit in one of six regionsnames, amounts, addresses, the rest of the task, who you are
WISPR gatewayciphertext to the enclave, your key id, token countsrequest or reply content
WISPR staffaccount id, balance, usage countsprompts, replies, IP addresses
Payment railsa card and an account id, or a chain transactiona prompt; deposit notes break the link to the paying wallet

The claim, precisely

The only machine that holds your whole request is an enclave whose code measurement is published, whose memory the operator cannot read, and whose attestation is attached to every reply. This protects you against us and against anyone who takes over our servers. It does not protect against a flaw in the TDX hardware itself. A privacy claim that does not name its limits is not worth reading, so we name them.

The privacy policy is the complete list of records we hold.

The catalogue

Curated uncensored and abliterated open models, picked because they do the work, run on WISPR hardware inside Phala enclaves. Every card on the catalogue shows what the model is good at, how often it refuses, speed and price. Figures are indicative until benchmarked on our deployments.

Model idForMethodPrice per 1M (in / out)
dolphin-mistral-24beveryday chat, fictionfine tune (Venice edition)$0.20 / $0.90
qwen3-32breasoning, research, agentsabliterated$0.30 / $1.10
llama-3.3-70blong answers, analysis, code reviewabliterated$0.60 / $0.80
deepseek-r1-70bmaths, planning, hard logicdistill, abliterated$0.70 / $1.40
rocinante-12bfiction, roleplayfine tune$0.15 / $0.45
gemma-3-27bimages and documents inabliterated$0.25 / $0.60
qwen2.5-coder-32bcode, auditsabliterated$0.30 / $0.90
chromaimagesopen weights, no filter$0.02 per image
wan-2.2videoopen weights$0.08 per second
orpheus-ttsspeechopen weights$0.015 per 1K characters
ace-stepmusicopen weights$0.05 per song

Terms on the cards

Fine tune: the model was trained further on data with refusals filtered out. Abliterated: the refusal direction was removed from the weights without retraining. Uncensored: the model has no content filter of its own. Refuses is measured by our harness on a fixed prompt set and shown as a bar: nothing legal, rarely, sometimes.

Where they run

On GPUs we rent inside Phala confidential VMs. The host cannot read the memory. Weights are pinned at bf16 or the precision stated on the card, never silently quantised. GET /v1/models returns the live list with precision, price and status.

Content policy

The models do not filter. The Terms do: the acceptable use section bans the illegal categories clearly and leaves creative and adult work alone. Our policy, not a vendor's.

Frontier models

Claude, GPT, Gemini and Grok are available through the same key. They are never sent a whole request. They receive a shard with typed placeholders, from a WISPR exit, under a WISPR account.

Pin one by id (claude, gpt, gemini, grok-4-fast) or leave auto and let CASR hand them the shard that needs their quality. Identity, financial, medical and secret shards never go to a frontier provider regardless of the id you pin. The receipt shows exactly which shard they received.

They seeone shard, placeholders in place of identifiers, a WISPR exit address
They do not seenames, amounts, addresses, the other shards, your account
Pricethe provider's own rate for that shard, in the receipt
Turn offX-Wispr-Frontier: deny keeps every shard on WISPR hardware

WISPR editions step 2

Our own uncensored models, built the way Dolphin built theirs: refusals removed from the model, no filter in the weights, legality in the Terms. On current bases, in every modality, with the refusal rate and quality score published against the original.

Why

Most uncensored shelves are one or two models from 2024 plus proxies. The sharding stack comes first. Then the editions give the catalogue a current, measured, sealed set that is ours and cannot be deprecated under us.

Method

Abliterate and heal for most editions: remove the refusal direction, then a short fine tune on refusal filtered public data to repair any quality loss. Full parameter fine tune for the two flagships. LoRA for image and video. Every edition is benchmarked against its base on a fixed prompt set, and both numbers go on the card.

Line up

EditionBaseMethodRole
WISPR Mistral 24BMistral Small 3.xfull fine tunegeneral chat, flagship
WISPR Qwen3 32BQwen3 32Bfull fine tunereasoning and code
WISPR Gemma 27BGemma 3 27Babliterate + healwriting, multilingual
WISPR Coder 32BQwen2.5 Coder 32Babliterate + healcode review, audits
WISPR R1 70BDeepSeek R1 Distill 70Babliterate + healdeep reasoning
WISPR Llama 70BLlama 3.3 70Babliterate + heallong form, agents
WISPR Roleplay 12BMistral Nemoabliterate + healfiction and roleplay
WISPR Fast 8BLlama 3.1 8B or Qwen3 8Babliterate + healcheap default
WISPR Vision 32BQwen2.5 VL 32Babliterate + healimages in, text out
WISPR Chroma PhotoChromaLoRAphotoreal images
WISPR Chroma ArtChromaLoRAillustration, anime
WISPR Image EditQwen-Image-EditLoRAimage editing
WISPR Wan 14BWan 2.2LoRAvideo

Bases and licences

Mistral Small and Nemo, Qwen3, Qwen2.5 Coder and VL, Qwen-Image-Edit, Chroma and Wan 2.2 are Apache 2.0; DeepSeek R1 distill is MIT. Gemma and Llama 3.3 carry their vendors' use policies; we ship those editions anyway, as Venice and the community do, and say so here rather than pretend otherwise. Flux Kontext was dropped because its weights are non-commercial.

Order of work

  1. Eval harness. Refusal rate and quality against the base on a few thousand prompts, rerun on every candidate.
  2. One overnight run per edition. Abliterate, heal, benchmark, pick the winner.
  3. Two flagships. Full fine tunes on Mistral 24B and Qwen3 32B.
  4. Image and video LoRAs. In parallel.
  5. Serve. Quantised builds on Phala, cards updated with the measured numbers.

Roughly eight weeks and a low five figure compute budget after the sharding stack ships. Progress is on the roadmap.

How a request flows

One request, end to end. Everything below happens inside a Phala enclave whose measurement is in your receipt.

  1. Your client encrypts the request to the enclave key. The gateway in between carries ciphertext and a key id.
  2. Pseudonymise. Names, amounts, wallets, emails, addresses, dates and secrets become typed placeholders such as [PERSON_1] and [AMOUNT_2]. The mapping stays in enclave memory.
  3. Split. The task is cut into shards by class: identity, financial, medical, secrets, code, reasoning. A shard is useful alone and meaningless with the others missing.
  4. Route with CASR. Context Aware Split Routing allocates a model per shard. Sensitive classes go to catalogue models on WISPR hardware. Reasoning can go to a frontier model with placeholders only, if allowed.
  5. Catch refusals. A shard that comes back refused is resharded to a model that answers. The receipt records it.
  6. Rebuild. Shard answers are merged, validated against the original task, and the identifiers are restored.
  7. Sign. The receipt names every model, shard class, token count, cost, exit and the enclave measurement, signed with the enclave key.

Cost of splitting

Two to four model calls for one request, so a split request costs more tokens than one direct call, and tasks that need the whole context at once can read slightly worse. Each call is listed in the receipt at the model's own rate. X-Wispr-Shard: mask keeps one call and only replaces identifiers when that is enough.

Verify the enclave

terminal
npx wispr attest                       # checks the quote against the published build
curl https://api.wispr.xyz/v1/attest   # raw TDX quote, verify with any TDX tool

Measurements for every released enclave build are published with the source commit. The SDKs pin the current one and refuse a different one with 424 attestation_mismatch.

Receipts

Every reply carries a receipt signed inside the enclave. It is the proof behind every claim on this site, and it lives in your client, not on our side.

FieldMeaning
maskedhow many identifiers were replaced before anything left the enclave
shards[]per shard: class, model id, host (wispr-enclave or provider, shard only), tokens, cost, exit region, resharded_from when a refusal was caught
tokenstotals in and out
cost_usd, fee_usdsum of shards at provider rate with enclave time included; the fee is always 0 here because it is charged at top up
attestationenclave name, code measurement, TDX quote
signatureEd25519 over the receipt, by the enclave key named in the attestation

Verify one

terminal
npx wispr receipt verify receipt.json      # signature, measurement, published build
curl -X POST https://api.wispr.xyz/v1/receipts/verify -d @receipt.json

The dashboard keeps receipts in your browser under Receipts and can export them as JSON. Turn that off in Settings and nothing is kept anywhere.

Refusals

A model that declines a legitimate shard does not get to end the request. The enclave detects the refusal and reshards to a model that answers.

Detection looks at the shard reply, not at your prompt: a refusal pattern, an empty answer, or a provider policy error. The shard is rerouted once to a catalogue model and the receipt records resharded_from. If the second model also declines, you get 451 refused naming both models, never a silently weaker answer.

Catalogue cards show the measured refusal rate per model. Usage in the dashboard shows how many of your requests hit a refusal and were rerouted.

Scope

Resharding handles refusals of legal work. The Terms list the categories that are not allowed on the service at all, and those are enforced at the account level, not by the models.

Controls

Defaults are set per account in the dashboard and can be overridden per request with headers. The request body stays OpenAI shaped.

HeaderValuesDefault
X-Wispr-Shardauto full pseudonymise and split · mask identifiers only, one call · off one model, as isauto
X-Wispr-Frontierallow or deny frontier models for any shardaccount setting
X-Wispr-Sensitivecomma list of classes that must stay on WISPR hardware: identity financial medical secrets codeall but code
X-Wispr-Exitauto or a region: eu-fra eu-ams us-iad us-sjc ap-sin ap-tyoaccount setting
X-Wispr-Budgetmax USD for this request; the plan is refused above itkey cap
X-Wispr-Precisionbf16 or fp8 for catalogue modelscard value
headers
-H "X-Wispr-Shard: auto"
-H "X-Wispr-Frontier: deny"             # everything stays on WISPR hardware
-H "X-Wispr-Sensitive: identity,financial,medical"
-H "X-Wispr-Exit: eu-fra"
-H "X-Wispr-Budget: 0.25"

Tools

Anything that speaks the OpenAI API works. Set the base URL to https://api.wispr.xyz/v1 and the key to a WISPR key.

ToolWhere
CursorSettings, Models, OpenAI API key: paste the key, override the base URL, add a model id such as qwen2.5-coder-32b or auto
Claude CodeANTHROPIC_BASE_URL=https://api.wispr.xyz/anthropic and ANTHROPIC_API_KEY set to the key; the Anthropic shape is mirrored too
VS Code (Continue, Cline, Roo)provider OpenAI compatible, apiBase set to the base URL
OpenClawmodel provider openai, base URL and key in the agent config
LangChainChatOpenAI(base_url=..., api_key=..., model="auto")
CrewAILLM(model="openai/auto", base_url=..., api_key=...)
n8nOpenAI credential with a custom base URL
OpenAI client, any languagetwo values: base_url and api_key

Requests from tools run through the enclave like any other. The tool receives the rebuilt answer; the receipt is in the response object for tools that expose it and in the dashboard for the rest.

SDKs and CLI

You do not need an SDK. The official OpenAI clients work. The WISPR packages add attestation checks, receipt verification and the account commands.

pip install wispr

from wispr import Wispr
w = Wispr(api_key="wispr_sk_...")            # pins the enclave measurement
r = w.chat("auto", "Summarise this agreement and flag the risks.")
print(r.text, r.receipt.cost_usd, r.receipt.verify())
npm i @wispr/sdk

import { Wispr } from "@wispr/sdk";
const w = new Wispr({ apiKey: "wispr_sk_..." });
const r = await w.chat("auto", "Summarise this agreement and flag the risks.");
console.log(r.text, r.receipt.costUsd, await r.receipt.verify());
npx wispr login                        # email, or username + phrase (never sent)
npx wispr keys create --name laptop --budget 25 --cap 0.5
npx wispr ask "Explain the interactions between these three medications."
npx wispr attest                       # enclave measurement vs published build
npx wispr receipt verify receipt.json
npx wispr topup 25 --coin usdc

Go, Rust and an MCP server are on the roadmap.

Security audits

Reviewing your own code and contracts for vulnerabilities is an intended use and a common reason people arrive here. The code shard stays on WISPR hardware by default.

Point your audit tool at the base URL and pick qwen2.5-coder-32b or auto. With auto, CASR keeps the code and any secrets on catalogue models and may send a pseudonymised reasoning shard to a frontier model. Set X-Wispr-Frontier: deny if even that should stay inside.

terminal
export OPENAI_BASE_URL=https://api.wispr.xyz/v1
export OPENAI_API_KEY=wispr_sk_...
# then run your usual tool: Cursor, Cline, a LangChain agent, a one off script
npx wispr ask --model qwen2.5-coder-32b --file Treasury.sol "List every path by which funds could leave this contract."
Scope

Systems you own or have written permission to test. The Terms are explicit about the rest.

Payments

Four ways money comes in: any coin, card, a deposit note, or per request over x402. Usage is always billed at provider price from the balance. The balance never expires.

Any coin

BTC, ETH, SOL, XMR, USDT and most other coins on any chain through the top up link, converted on arrival. Direct transfers: USDC on Base to the account's deposit address, shown in Billing. Credited after finality, usually under a minute. Fee 6%.

Check the address

Take the deposit address from the dashboard or the API for the account you mean to fund. Nothing sent to another address or network can be recovered.

Card

Visa, Mastercard, Apple Pay, Google Pay. The processor sees a card and an account id, never a prompt. Fee 8%, because card rails and chargeback risk cost close to half of it.

x402 per request

Agents without a balance pay per call. Send the request with no key; the gateway answers 402 Payment Required with a price; the agent pays USDC on Base and retries with the payment header. Fee 6% on the quoted price, overestimates refunded to the paying address.

http
HTTP/1.1 402 Payment Required
X-Payment-Required: {"scheme":"exact","network":"eip155:8453","asset":"USDC","amount":"0.0153","payTo":"0x..."}

Deposit notes

For funding that must not be linkable to the account. See Deposit notes.

Deposit notes beta

A deposit note funds an account with no link between the paying wallet and the account. Credits only ever land inside WISPR; a note cannot be redeemed to an address.

1. deposit wallet -> WisprPool (Base, USDC), fixed 10 / 50 / 250 commitment = H(nullifier || secret) goes into the tree you keep: wispr-usdc-50-base-0x<nullifier><secret> 2. wait any time; anonymity set = every unredeemed 50 USDC deposit 3. redeem inside the enclave: POST /v1/deposits/redeem { proof, root, nullifierHash, account } WISPR learns: a 50 USDC note was redeemed into account A not which deposit, not which wallet

Timing is the only correlation, so the CLI waits a random delay by default. Denominations are small, there are no account to account transfers, and the pool refuses deposits from sanctioned addresses. This is prepaid credit with a privacy layer, not a mixer. Contract, circuit and verifier are published.

terminal
npx wispr deposit 50 --from 0xYourWallet     # writes the note to wispr-notes.txt
npx wispr redeem wispr-usdc-50-base-0x...      # into this account, after a random delay

Pricing and fees

Every model is billed at provider price with enclave time included. No per token markup, no subscription, no minimum spend, no expiry. WISPR charges one fee when money comes in.

Top upFeeNotes
Any coin6%direct transfer or deposit note; taken when the note is redeemed
Card8%Visa, Mastercard, Apple Pay, Google Pay
x402 per request6%added to the quoted price of that request
$WISPR staked0%$500 of $WISPR staked for 90 days; fee free top ups up to $1,200 per stake period

What sharding costs

Two to four model calls for one request, each at its model's own rate, each listed in the receipt. Catalogue models are priced per million tokens with the enclave included; there is no separate enclave line. X-Wispr-Shard: mask keeps one call when hiding identifiers is enough.

Compared

WISPROpenRouterAnonRouter
Card top up8%5.5%8% (5% promo)
Crypto top up6%5%8% (5% promo)
Per token markupnonenonenone
Fee free tier$WISPR stakenonenone
Credit expirynever12 monthsnot stated

Competitor figures from their public pricing pages, checked 1 November 2026.

Staking

Stake $500 of $WISPR, valued at stake time, for 90 days, bound to one account. While the stake runs, every top up into that account is fee free, up to $1,200 per stake period, and the account gets priority routing and exits.

terminal
npx wispr stake 500 --days 90 --from 0xYourWallet   # stakes $500 of $WISPR, bound to this account
npx wispr account                                   # balance, stake, fee rate, spend by day

Unstake after the term; the tokens stay yours throughout. GET /v1/stake returns the contract, your account id as bytes32 and the requirement. After staking on chain, POST /v1/stake re-reads the contract and switches the fee to 0%.

On chain

The staking wallet is linked to the account it benefits. If that link matters to you, stake from a fresh wallet, or skip staking and fund with deposit notes at 6%.

API reference

All OpenAI endpoints under /v1 with identical request and response shapes, plus the Anthropic shape under /anthropic. Listed here are the routes WISPR adds.

Requests

POST/v1/chat/completions · /v1/responses · /v1/embeddings

OpenAI shape. Response carries the wispr receipt. With an empty balance, send X-PAYMENT (x402) or receive 402 with the price.

POST/v1/images/generations · /v1/videos/generations · /v1/audio/speech · /v1/audio/music

Media routes billed per image, per second, per 1K characters or per song. Response carries data and the receipt.

GET/v1/models

The live catalogue: id, modality, method, precision, price, refusal bar, speed, status, host.

GET/v1/attest

Enclave name, code measurement, TDX quote and the sealing public key.

POST/v1/receipts/verify

Body: a receipt. Returns signature validity and whether the measurement is a published build.

Account

POST/v1/account/register · /v1/account/login

Email: { email, password }. Anonymous: { username, public_key, signature }; the phrase never leaves the device.

GET/v1/account

Balance, fee rate, stake status, default model, exit, spend by day.

GET/v1/keys POST DELETE/:id PATCH/:id

List, create ({ name, budget_usd, cap_usd }, key shown once), revoke, change budgets.

GET/v1/usage?days=7

Requests, tokens, cost and resharded refusals per day and per model. Counts only.

Money

GET/v1/topup/options

Coins accepted, fee rates, minimums, the deposit address and the top up link.

POST/v1/topup/quote

{ amount_usd, coin }: what you pay, what lands, the fee.

POST/v1/topup/card

{ amount_usd }: a checkout link bound to this account.

POST/v1/deposits/redeem

{ denomination, proof, publicSignals: [root, nullifierHash, account] }. Verified inside the enclave, nullifier marked, credited minus the fee.

GET/v1/stake POST

Contract and requirement; after staking on chain, POST switches the fee to 0%.

Headers

See Controls for X-Wispr-Shard, X-Wispr-Frontier, X-Wispr-Sensitive, X-Wispr-Exit, X-Wispr-Budget, X-Wispr-Precision and X-PAYMENT.

Errors

Every error is typed. The body carries { error: { code, message } } and the codes below never change meaning.

CodeMeaning
401 key_invalidUnknown or revoked key.
402 payment_requiredNo balance and no x402 payment. Body carries the price.
409 nullifier_usedDeposit note already redeemed.
422 unmergeableThe rebuild could not be validated after retries. The shards are returned so you can merge yourself.
424 attestation_mismatchThe client refused an enclave whose measurement is not a published build. Update the SDK; do not send the request.
429 budget_exceededThe key cap or X-Wispr-Budget is below the cheapest plan for this request.
451 refusedA shard was refused by its model and again by the fallback. The body names both. Rephrase or pin a catalogue model.
Rule

A refused shard is never silently swapped for a weaker answer. You get a typed error or a real answer.

Roadmap

Two steps, in order. Sharding and the infrastructure under it first. Our own models second. Everything else is an addition.

live
Site, catalogue, accounts front end

Homepage, catalogue, dashboard with keys, usage, billing and receipts. Masking runs in the browser today.

step 1
Sharding stack on Phala

Enclave with pseudonymise, split, CASR, refusal catch, rebuild and signed receipts. Catalogue models served from confidential VMs. api.wispr.xyz, keys with budgets, top ups, x402.

step 1
Tools and SDKs

OpenAI and Anthropic shapes, Python and Node packages, the CLI, published enclave measurements.

step 2
WISPR editions

Thirteen of our own uncensored models on current bases across text, image and video, built the Dolphin way, each with refusal rate and quality published against its base. See WISPR editions.

later
Additions

Deposit notes out of beta, staking contract, Go and Rust SDKs, MCP server, team balances, precision and provider pinning in the dashboard, portable memory.

Changes land on the blog and the status page.