Zerix API docs
Zerix prepares long context and returns a measured receipt. Your application then sends the prepared messages to your chosen model. Customer model-provider keys stay in your application and never touch Zerix.
Neutral technical copy — non-final where it overlaps W-7 positioning, pending Tony approval.
Overview
Sidecar, not a model
Zerix returns prepared messages. The model chosen and called by your application still produces the answer.
Keys stay separated
Your zrx_ key authenticates to Zerix. Your model-provider key remains only in your own application.
PAYG only
$0.50 per 1M verified tokens saved. Zero verified savings means a zero verified-savings fee; no public subscriptions.
Quickstart
- 1Optional: use the bounded /try preview for a first look without a signup wall when that W-2 website lineage is available.
- 2Create a workspace and a scoped zrx_ Zerix API key. Store it in your own secret manager.
- 3Send messages to /v1/compress and read the returned messages plus _zerix_metrics receipt.
- 4Pass the returned messages to your chosen model from your application, using your provider key only on your side.
- 5Verify organization-scoped usage and PAYG credits in the dashboard.
curl https://api.zerix.ai/v1/compress \
-H "Authorization: <ZERIX_AUTHORIZATION_HEADER>" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "system", "content": "Use the project context below." },
{ "role": "user", "content": "<your long context>" }
],
"budget": 32000,
"options": { "tier": "auto", "language": "auto" }
}'const prepared = await zerixResponse.json();
// Run this provider call in your application. YOUR_MODEL_API_KEY is never
// sent to Zerix.
const answer = await yourModelClient.generate({
apiKey: process.env.YOUR_MODEL_API_KEY,
messages: prepared.messages,
});Launch API Endpoints
| Endpoint | Scope | Use |
|---|---|---|
POST /v1/compressPrepare context | compress | Accepts messages, an optional budget, and neutral routing options. Returns prepared messages and a measured receipt. |
POST /v1/api-keysManage Zerix credentials | api_keys:write | Issues, rotates, and revokes organization-scoped zrx_ keys. Raw keys are revealed once and are never stored by Zerix. |
GET /v1/usageUsage and ROI receipt rollups | usage | Returns measured request counts, token movement, quality, latency, errors, and tier breakdown. |
GET /v1/creditsPAYG quota and billing readiness | usage | Returns current quota, monthly measured usage, and billing/customer status. |
GET /v1/logsSanitized request log metadata | usage | Returns bounded request metadata only. Request bodies, provider keys, and answers are not exposed. |
{
"messages": [{ "role": "user", "content": "<prepared context>" }],
"usage": {
"input_tokens": "number",
"output_tokens": "number",
"tokens_saved": "number",
"savings_percent": "number",
"billing_mode": "string"
},
"_zerix_metrics": {
"tokens_in": "number",
"tokens_out": "number",
"tokens_saved": "number",
"savings_pct": "number",
"tier_used": "guard | brain | deep",
"latency_ms": "number"
}
}Customer Key Boundary
The first-launch product does not accept, store, or forward a customer model-provider key. Use a Zerix zrx_ key for /v1/compress, then call your model from your own application.
The preserved BYOK/proxy implementation is a future-only asset, disabled by default and excluded from the launch docs surface.
Billing And Usage
Zerix records request totals, input tokens, output tokens, verified tokens saved, tier used, latency, and status. Stripe meter delivery can defer until Stripe config and customer records are present; the local outbox preserves the event for replay.
See PAYG pricing modelSecurity Notes
- Customer model-provider keys never touch Zerix in the first-launch product.
- Use a zrx_ key only for Zerix requests; keep model-provider credentials in a separate secret-manager entry.
- The future BYOK/proxy routes are unmounted unless an explicit authorization flag is enabled.
- Dashboard pages call a server-side session proxy; Zerix bearer keys are not pasted into client UI or browser storage.
- Treat the returned messages as application data and apply your normal privacy controls before calling your model.