Share AI access.
Never your key.
KEYPASS turns your Anthropic or OpenAI key into passes with a dollar limit, a model and an expiry. Hand them to teammates, contractors or agents, and revoke any of them in one click.
- AES-256-GCMper-key encryption
- 1 clickto revoke
- 0keys ever shown back
KEYPASSActivekp_live.••••••••••rQ91
- Budget checked before every call
- Only the models you allow
- Revoked the moment you say so
Move to tilt · click to flip · it’s the same pass you drive below
Run a pass.
Try to break it.
A simulation using real model prices. Fire requests, burst them, ask for a model it doesn’t allow, cut the connection, revoke it. The card above follows along.
$1.00 in · $5.00 out per million tokens
- No requests yet. Hit Send request.
Reserve the worst case
Before anything is sent, the most the request could cost is held against the pass. If it can’t be covered, it’s refused.
Forward with your key
Your key is decrypted for that one call, then dropped. The pass holder never sees it.
Settle on real usage
The provider’s own usage sets the cost; the rest of the hold comes straight back.
Locked in layers.
Opened for one call.
Click to pull the layers apart
Hold more.
Unlock more.
Your tier comes from your token balance as a share of supply, read each time you sign in. Limits apply when you add a key or open a pass, never to one already running.
You’d be on Free: 1 API key, 3 open passes.
Free
No holding needed
- API keys
- 1
- Open passes
- 3
Silver
0.05% of supply
- API keys
- 3
- Open passes
- 15
Gold
0.10% of supply
- API keys
- 6
- Open passes
- 50
Platinum
0.25% of supply
- API keys
- 9
- Open passes
- 100
Holding tiers switch on with the token. Until then, every wallet starts on Free.
One endpoint.
One credential.
Hand the pass to anything that sends chat completions. The pass is the only secret it ever holds.
curl https://keypass-api.com/v1/chat/completions \ -H "Authorization: Bearer $KEYPASS_PASS" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{"model":"claude-haiku-4-5","max_tokens":256, "messages":[{"role":"user","content":"Summarise this brief."}]}'
const res = await fetch("https://keypass-api.com/v1/chat/completions", { method: "POST", headers: { Authorization: `Bearer ${process.env.KEYPASS_PASS}`, "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json", }, body: JSON.stringify({ model: "claude-haiku-4-5", max_tokens: 256, messages: [{ role: "user", content: "Summarise this brief." }], }), });
import os, uuid, requests r = requests.post( "https://keypass-api.com/v1/chat/completions", headers={"Authorization": f"Bearer {os.environ['KEYPASS_PASS']}", "Idempotency-Key": str(uuid.uuid4())}, json={"model": "claude-haiku-4-5", "max_tokens": 256, "messages": [{"role": "user", "content": "Summarise this brief."}]}, )
403budget_exhaustedThe pass can’t cover the worst case of this request.
403policy_deniedThe model isn’t on the pass’s allow list.
401invalid_passRevoked, expired or never existed.
429rate_limitedOver the pass’s request rate. Back off and retry.