Start here. Build from anywhere.
Your tools.
Your way in.
Sign in, save the right backup, and use powerful AI from your browser or terminal. Everything starts with an account you control.
https://zooko.ai/v1Access and Suite availability checked 7 October 2026. Live Gateway metadata confirms passkeys and ZEC-only funding. Product release status is listed separately below.
01 / Passkeys & access keys
Your access. Your choice.
Gateway offers a passkey or an independent access key. No email is required. Start at account access.
Passkey
Use your device’s approval prompt to sign in. Save the separate recovery backup when you create the account. Browser sessions last up to one hour and end when the service restarts.
Access key
Create key-only access and save the key before adding credit. Use it in the Gateway or as your API bearer credential. Anyone with this key can use the account’s credit.
Already have credit?
Use Add passkey to this account, or restore your existing access key before adding a passkey. This preserves your credit, points and receiving address. Creating a second account does not move your existing balance.
Which backup does what?
| Keep privately | What it restores |
|---|---|
| Gateway access key | Reusable access to a key-based Gateway account and its API credit. No email reset. |
| Gateway passkey recovery key | Creates a replacement passkey. It is not an API key and cannot be used as a normal login credential. |
| Encrypted chat backup + its passphrase | The conversation history exported from your browser. Account recovery does not restore it. |
| Wallet recovery phrase | Your wallet and funds. Never enter it in a Gateway sign-in or recovery form. |
Lost a passkey or need a new backup?
Open account access, choose Lost your passkey?, enter your Gateway recovery key, and approve the replacement passkey. Save the new recovery backup. Successful recovery revokes the previous passkeys and passkey sessions.
If you can still sign in, choose Replace recovery backup. This requires a sign-in within the last five minutes and invalidates the old recovery key and other passkey sessions.
Existing Gateway API keys remain valid after recovery. This flow cannot revoke a leaked API key. If you lose both your passkey and recovery backup, it cannot restore passkey access. An existing API key remains an independent access path.
Suite membership, separate product boundaries. Use your Gateway account to manage ZOO Suite. ZOO Mail can connect to that membership after you approve a matching code. Linking shares membership status; it does not merge accounts, expose mailbox keys, or replace a wallet recovery phrase.
02 / Terminal quickstart
From key to first answer.
1 Create an API key and deposit address
Create a key-only account directly from your terminal. POST /v1/accounts returns your API key as token and your shielded ZEC deposit address as zcash_address. No email, browser account or passkey is required. You can add a passkey to the same account later.
Use Bash or Zsh with curl and jq installed. Run this once for a new account. It saves the response in a new private folder in your home directory, loads the key without printing it, and shows the deposit address. Keep shell tracing off.
export ZOO_BASE_URL='https://zooko.ai/v1'
umask 077
command -v jq >/dev/null &&
ZOO_ACCOUNT_DIR="$(mktemp -d "$HOME/.zoo-gateway.XXXXXX")" &&
export ZOO_ACCOUNT_FILE="$ZOO_ACCOUNT_DIR/account.json" &&
curl --fail-with-body --silent --show-error \
--cookie "${ZOO_ACCESS_COOKIE_JAR:-/dev/null}" \
--request POST "$ZOO_BASE_URL/accounts" \
--output "$ZOO_ACCOUNT_FILE" &&
ZOO_API_KEY="$(jq -er '.token | strings | select(length > 0)' "$ZOO_ACCOUNT_FILE")" &&
export ZOO_API_KEY &&
printf 'Save this private account file: %s\n' "$ZOO_ACCOUNT_FILE" &&
jq -r '.zcash_address // "Address pending: check GET /v1/account with this same key."' "$ZOO_ACCOUNT_FILE"Save the account file privately before paying. The API key is returned only at creation; anyone with it can spend your credit. This file contains an unencrypted account credential, not your wallet seed. Keep a secure backup outside your project folder. A new account has a separate balance; reuse your saved key if you already have credit.
If creation fails, stop and read the error before retrying. A network failure can occur after creation, so check whether your private response file contains a complete token first. Do not automatically retry account creation. A 429 means the enrollment limit was reached.
Already have an API key? Reuse it instead
In a new terminal session, paste your saved access key at this hidden prompt. If you used the command above, it is the token in your private account file. You can also create or restore key-only access in the Gateway. The current passkey-only signup does not export a long-lived API key; its recovery key and browser session are not substitutes.
printf 'Gateway access key: '
read -r -s ZOO_API_KEY
printf '\n'
export ZOO_API_KEY
export ZOO_BASE_URL='https://zooko.ai/v1' Optional: add a passkey to this same funded account
Keep your API key for scripts and add a passkey for browser sign-in. The pairing command uses the ZOO_API_KEY you loaded above. It opens a private, five-minute link and asks you to compare a code, approve your device prompt and save your recovery backup. Credit, points and the deposit address stay with the same account.
Requires Node.js 22 or later and a Gateway reporting passkey_pairing: true in GET /v1/info. A deployment without that flag does not support the command.
curl --fail-with-body --silent --show-error \
"${ZOO_BASE_URL%/v1}/cli/pair-passkey.mjs" \
--output zoo-pair-passkey.mjs &&
node zoo-pair-passkey.mjsAlternatively, run node zoo-pair-passkey.mjs --account-file "$ZOO_ACCOUNT_FILE" with your saved access-key JSON file. Use --no-open to open the displayed link yourself on a passkey-capable device. Never put your API key in a command argument or URL, and do not share the pairing link.
Only approve a request you started and a code that matches your terminal. The command confirms completion after you save the recovery backup and click Open Gateway. Ctrl+C cancels a pending pairing; it cannot remove a passkey already added. Closing or refreshing the page before approval requires a new pairing after cancellation or expiry. Accounts already using a passkey should sign in or use recovery instead.
2 Send ZEC and check your credit
Send shielded ZEC from your wallet to the returned zcash_address. You can retrieve that same address and check credit directly from the terminal:
curl --fail-with-body --silent --show-error "$ZOO_BASE_URL/account" \
-H "Authorization: Bearer $ZOO_API_KEY" | jq '{
deposit_address: .zcash.address,
usd_per_zec: .zcash.usd_per_zec,
available_units: .available,
payment_status: .payment_status
}' If the address is null, wait and repeat this GET request with the same key; do not create another account. Once you send ZEC, check periodically until the payment is credited and available_units is positive before using paid AI routes. Credit uses 6 decimal places: 1000000 units = $1. The live deposit rail is ZEC only, even if an API field uses the legacy internal accounting label USDT.
- Every payment needs 3 confirmations.
- A single payment above $500 waits for review.
- The account limit is $1,000 in any rolling 24 hours. Excess is retried automatically when the limit permits. Service limits, scan delays, price availability or review can delay credit further.
These thresholds use the payment’s USD value. Paid Gateway credit can fund model usage or an explicit Suite purchase when checkout is open. Credit is not refundable or withdrawable. Check payment status before sending again. The browser’s Add credit screen shows the same account address and status.
3 Try GPT-6 Sol
Start with OpenAI GPT-6 Sol using the exact Gateway model ID openai/gpt-6-sol. The cURL, Python and Node.js examples below all use this selection and your existing credit. To switch models, choose another enabled ID from the live catalog and update ZOO_MODEL.
export ZOO_MODEL='openai/gpt-6-sol'curl --fail-with-body --silent --show-error "$ZOO_BASE_URL/chat/completions" \
-H "Authorization: Bearer $ZOO_API_KEY" \
-H 'Content-Type: application/json' \
--data "$(jq -n --arg model "$ZOO_MODEL" '{
model: $model, max_tokens: 256,
messages: [{role: "user", content: "Explain zero-knowledge proofs in three sentences."}]
}')"import os
from openai import OpenAI
client = OpenAI(
base_url=os.environ["ZOO_BASE_URL"],
api_key=os.environ["ZOO_API_KEY"],
max_retries=0,
)
response = client.chat.completions.create(
model=os.environ["ZOO_MODEL"],
max_tokens=256,
messages=[{"role": "user", "content": "Explain zero-knowledge proofs in three sentences."}],
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: process.env.ZOO_BASE_URL,
apiKey: process.env.ZOO_API_KEY,
maxRetries: 0,
});
const response = await client.chat.completions.create({
model: process.env.ZOO_MODEL,
max_tokens: 256,
messages: [{ role: "user", content: "Explain zero-knowledge proofs in three sentences." }],
});
console.log(response.choices[0].message.content);cURL recipes require curl and jq. Python: install with python3 -m pip install openai inside a virtual environment. Node.js: npm install openai, then save the example as an .mjs file. Each successful request spends credit. The SDK examples disable automatic retries so you can inspect ambiguous failures first.
When finished, run unset ZOO_API_KEY in that shell. This removes the environment variable; it does not revoke the key.
03 / Models & pricing
The catalog is the source of truth.
Use /v1/models for exact IDs, availability, context limits, modalities and route privacy. Catalog presence alone does not mean a model is enabled. No fixed model count is promised.
curl --fail-with-body --silent --show-error "$ZOO_BASE_URL/models" \
| jq '.data[] | select(.zooko.available != false) | {
id, name: .zooko.name, route: .zooko.provider,
context: .zooko.context, output: .zooko.output_modalities,
web: .zooko.supports_web, privacy: .zooko.privacy,
input_usd_per_million: .zooko.usd_per_million_input,
output_usd_per_million: .zooko.usd_per_million_output
}'curl --fail-with-body --silent --show-error "$ZOO_BASE_URL/info" \
| jq '{rails, fee_bps, assets, points, passkeys}'Catalog token rates are the upstream rates before the Gateway fee. fee_bps uses basis points: 1000 means 10%. The live setting was 10% at this review. Search, images, audio and reasoning can have additional usage costs; the final usage and zooko response fields report settlement.
max_tokens limits output, not your total dollar spend. It defaults to 1,024 or the lower server cap, and requests above that cap are clamped. Input, tool schemas, search and media can also cost money. The Gateway reserves credit before a call and settles after it; large requests can fail with 402 even when a smaller request would fit.
04 / Streaming & clients
Use your own workspace.
Clients need a custom OpenAI Chat Completions endpoint, base URL https://zooko.ai/v1, a Gateway access key, and an enabled model ID. ZOO does not require your personal model-provider API keys.
This is Chat Completions compatibility, not a promise that every OpenAI endpoint works. Responses, Assistants, embeddings, file uploads and standalone image/audio endpoints are not exposed by this Gateway.
curl --no-buffer --fail-with-body --silent --show-error \
"$ZOO_BASE_URL/chat/completions" \
-H "Authorization: Bearer $ZOO_API_KEY" \
-H 'Content-Type: application/json' \
--data "$(jq -n --arg model "$ZOO_MODEL" '{
model: $model, stream: true, max_tokens: 256,
messages: [{role: "user", content: "Give me three privacy-friendly app ideas."}]
}')"The response is Server-Sent Events: read data: JSON chunks, assemble choices[].delta, and stop at [DONE]. The final successful chunk includes usage and zooko. A stream can return HTTP 200 and then an error event with finish_reason: "error"; check both.
An interrupted connection may miss the settlement event even when work was charged. Stopping a stream is not a guarantee of zero cost. Check the outcome before retrying. Never give an agent shell access to secrets beyond what its task needs.
05 / Tools & structured output
Let a model request a function.
On a supporting OpenAI-compatible route, the Gateway forwards tools, tool_choice, parallel_tool_calls and response_format. Support depends on the selected model and route. The current direct Anthropic adapter does not forward custom tool calls or structured-output options; choose an appropriate OpenAI-compatible route for these examples.
curl --fail-with-body --silent --show-error "$ZOO_BASE_URL/chat/completions" \
-H "Authorization: Bearer $ZOO_API_KEY" \
-H 'Content-Type: application/json' \
--data "$(jq -n --arg model "$ZOO_MODEL" '{
model: $model, max_tokens: 256,
messages: [{role: "user", content: "What block height does my local demo report?"}],
tools: [{type: "function", function: {
name: "get_demo_height", description: "Read a fictional local demo height.",
parameters: {type: "object", properties: {}, additionalProperties: false}
}}], tool_choice: "auto"
}')"- Read
choices[0].message.tool_calls. Validate the function name and parsed arguments against your allowlist. - Your application executes the approved function. The Gateway does not execute your shell, fetch chain data or run arbitrary tools for you.
- Append the returned assistant message, then one
role: "tool"message per call, with itstool_call_idand a stringcontentresult. - Send the updated messages to Chat Completions for the answer. Bound the number of tool rounds and request sizes; each model call can spend credit.
For supported structured-output models, add "response_format": {"type": "json_object"} and explicitly ask for JSON. Validate the response in your client. Tool output is untrusted data, not permission to perform another action.
06 / Images, audio & Web
More than text.
Use Chat Completions for these features. Choose a model with the matching capability first; a model that answers text is not necessarily an image or audio generator.
Generate an image
curl --fail-with-body --silent --show-error "$ZOO_BASE_URL/chat/completions" \
-H "Authorization: Bearer $ZOO_API_KEY" \
-H 'Content-Type: application/json' \
--data "$(jq -n --arg model "$ZOO_MODEL" '{
model: $model, modalities: ["image"],
image_config: {aspect_ratio: "1:1", image_size: "1K"},
messages: [{role: "user", content: "A friendly illustrated monkey among green leaves."}]
}')"Read generated images from choices[0].message.images. Supported size options are 1K, 2K and 4K, subject to the model.
Send a reference image from your computer
Image input must be a base64 data:image/… URL inside an image_url content part, not a remote HTTPS URL or a local filename. Use PNG, JPEG or WebP for broad compatibility; the API also accepts GIF, but model support varies. Keep to four images and 6 MB per image. Unsupported parts can be omitted during normalization.
import base64
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(base_url=os.environ["ZOO_BASE_URL"],
api_key=os.environ["ZOO_API_KEY"], max_retries=0)
data = base64.b64encode(Path("reference.png").read_bytes()).decode("ascii")
response = client.chat.completions.create(
model=os.environ["ZOO_MODEL"], max_tokens=256,
messages=[{"role": "user", "content": [
{"type": "text", "text": "Describe this image."},
{"type": "image_url", "image_url": {"url": "data:image/png;base64," + data}},
]}],
)
print(response.choices[0].message.content)Choose only an image you intend to send to the model host.
Generate speech
Add these fields to a Chat Completions request for an audio-output model. The example voice and format must be supported by that model.
{
"modalities": ["text", "audio"],
"audio": {"voice": "alloy", "format": "mp3"}
}Read choices[0].message.audio, including its base64 audio data when returned. This is speech generation, not a transcription or microphone-upload endpoint.
Search the Web
Check zooko.supports_web in the catalog, then add "web": true. The model’s search query may go to a search provider; search results add context and may add charges. Sources, when returned, appear in choices[0].message.sources.
In the Python SDK, pass Gateway-specific options through extra_body={"web": True}. Web search does not enable ZOO blockchain-indexer access.
06B / Video Studio & API
Turn a still into a scene.
Video uses a separate, asynchronous API and the same prepaid Gateway account. First check /v1/info: video_generation.enabled must be true. Open Video Studio in your browser, or use the API and terminal helper below. In Video Studio, choose a model, optionally upload a first-frame image, describe the movement, review the maximum charge, then create. Your recent jobs stay attached to your Gateway account; prompts and images are not saved with them.
The browser accepts PNG, JPEG and WebP images up to 20 MB and 64 megapixels. Larger images are optimized on your device to fit the upload limit, preserving their proportions; the original file is unchanged. The API and terminal helper accept prepared images up to 1 MiB.
The video model host sees your prompt and image. Providers temporarily store generated output so you can download it. Video is not a zero-retention route. The Gateway saves job and billing metadata, but no prompt, image or video. Proceed only if you accept this boundary.
Supported routes include Seedance, Veo, Kling, Sora, Runway, Grok, MiniMax, Wan and HappyHorse, with audio generation disabled and an optional first-frame image where supported. Editing, upscaling and avatar models need separate workflows and are not included. Seedance uses a token-based reservation with a buffer; the actual receipt determines the final charge, capped at your approved maximum. The live catalog lists current supported models and settings. Image-to-video may follow the source image’s proportions rather than the requested aspect ratio; crop your image to the intended shape first. Read the current model catalog for valid settings. The helper requests a quote, checks your spending cap, submits once, reports progress and downloads the result. A five-second H3 Max clip at 480p was quoted at $0.275 including a 10% Gateway fee during integration; the live quote is authoritative.
curl --fail --silent --show-error \
"$ZOO_BASE_URL/info" | jq '.video_generation'
curl --fail --silent --show-error \
"$ZOO_BASE_URL/videos/models" | jq '.data[] | {id, supported_durations, supported_resolutions}'
# Download the helper for review; Node.js 22+ is required.
curl --fail --silent --show-error \
"${ZOO_BASE_URL%/v1}/cli/video.mjs" --output zoo-video.mjs
node zoo-video.mjs --help
# Prepare prompt.txt and a PNG/JPEG/WebP image of at most 1 MiB.
# ZOO_API_KEY is the same account key used in the quickstart.
# This submits a PAID request after checking the quote against your cap.
node zoo-video.mjs \
--prompt-file prompt.txt --image photo.png \
--model minimax/hailuo-3-max \
--duration 5 --resolution 480p --aspect-ratio 16:9 \
--max-cost 0.60 --accept-temporary-retention \
--state video-job.json --out video.mp4Omit --image for text-to-video. Your cap is not a flat charge: the final provider receipt plus Gateway fee determines the debit, capped at the accepted quote. The unused reservation returns to available credit. New videos require paid credit; free trial credit does not apply.
# Resume polling or download again without paying for another generation.
node zoo-video.mjs --resume video-job.json --out video-resumed.mp4Keep video-job.json. It contains the request identity, not your API key or prompt. If the terminal stops, resume that request instead of starting a second paid job. Download promptly: the provider keeps output temporarily, not as permanent storage. Existing output filenames are not overwritten.
Build your own video client
Request a quote with POST /v1/videos/quote, then submit to POST /v1/videos with the same model, duration, resolution and aspect ratio, plus a prompt, unique request_id, numeric max_cost_usd and accept_temporary_retention: true. The optional frame_images accepts one base64 data URL tagged first_frame. Remote image URLs, audio generation and provider overrides are not supported.
Save the returned job ID. Poll GET /v1/videos/{id} every 30 seconds, then download GET /v1/videos/{id}/content with your same Bearer credential. If the submission response is lost, look up GET /v1/videos/requests/{request_id}. Retrying identical input with the same request ID reuses its job; changing the input returns a conflict.
needs_review means the provider result or billing is uncertain. Credit remains reserved, including across restarts. Do not generate a replacement blindly; contact support with the job ID. A failed job with a verified zero-cost receipt releases its hold; missing billing data is checked before credit is released.
07 / Credit, points & payments
Check the account before retrying.
Your receiving address, available credit, usage counters and recent payment observations are account-scoped.
curl --fail-with-body --silent --show-error \
-H "Authorization: Bearer $ZOO_API_KEY" "$ZOO_BASE_URL/account" \
| jq '{asset, credited, spent, available, calls, points,
zcash, payment_status}'credited, spent and available are decimal strings in the account asset’s base units. Match asset to /v1/info.assets for decimals and usd_per_unit. The current USD credit unit has six decimals: 9850000 means $9.85. Its legacy API symbol is USDT; that is an accounting label, not permission to deposit USDT. Check rails for funding availability. Keep exact arithmetic until display.
Responses report zooko.charged_units and zooko.remaining_units with the same asset units. Token counts are in usage. Account totals may include concurrent calls; a balance difference alone is not a receipt for one request.
| Payment state | Meaning / next step |
|---|---|
| checking / confirming | Observed, awaiting evaluation or 3 confirmations. Do not resend. |
| review_required | Above the single-payment review threshold; requires operator review. |
| account_limit / service_limit | Held by an account rolling limit or service limit. Retried by the scanner. |
| price_unavailable | A usable conversion quote is unavailable. Wait for a fresh status. |
| credited | The payment has been recorded in the credit ledger. |
| reconciliation_required | Payment evidence changed or disappeared. Requires reconciliation; do not assume a second payment will resolve it. |
payment_status.stale means last-known status, not proof of settlement or failure. retry_at is an estimate, not a reserved slot or a deadline. The scanner exposes up to 50 recent observations; they rebuild after restart while the durable credit ledger remains authoritative.
Paid Gateway credit funds model usage or the Suite. The Suite’s included $60 is for model usage only and cannot buy another membership.
100,000 per ZEC paid. Separate from credit; no cash value or promised token allocation.
Proposed separately. Buying credit does not buy tokens. Read the token overview.
08 / Endpoint reference
Know which surface you are using.
| Method / endpoint | Purpose / access |
|---|---|
| GET /v1/info | Public configuration: funding rails, fee, assets and enabled account features, including passkey_pairing when terminal pairing is available. |
| GET /v1/models | Public model catalog and per-route availability, pricing and privacy metadata. |
| GET /v1/health | Service and ZEC-scanner health. Does not prove every upstream model works. |
| GET /v1/account | Authenticated account balance, points, address and payment status. |
| GET /v1/videos/models · POST /v1/videos/quote | Video capability catalog and fee-inclusive quote, when enabled. Quotes require account access. |
| POST /v1/videos · GET /v1/videos/{id} | Submit an account-owned video job and poll progress; /content downloads it. Explicit temporary-retention consent and a spending cap are required. |
| POST /v1/chat/completions | Authenticated model requests, streaming, supported media and tools. |
| POST /v1/accounts | Create a key-only account from the terminal or browser. Returns token and zcash_address. |
Browser passkey ceremonies under /v1/passkeys/* require the configured browser origin and device approval. They are not a terminal password-login API. The legacy /v1/chat format remains for existing integrations; new integrations should use Chat Completions.
Pool receipt endpoints are disabled on the live ZEC-only service. Administrative routes, sale rehearsal and local test controls are not public customer APIs. Suite membership is managed at ZOO Suite. Standalone VPN checkout remains closed. Shared identity and chain-query candidates do not become live endpoints just because their code exists in a review branch.
09 / Errors & retries
Make the next step clear.
| Status | What to do |
|---|---|
| 400 / Request | Check JSON, messages, positive integer max_tokens and supported route features. |
| 401 / Account access | Check your access key, or sign into an expired browser session again. Do not send secrets to support. |
| 402 / Credit | Check available credit and request size. Lower output allowance or add credit to the same account. |
| 403 / Forbidden | Read the response to check which permission or request condition is missing. The public site does not require a shared access password. |
| 404 / Model or route | Refresh the catalog; check the exact model ID and endpoint. Disabled product routes can return 404. |
| 429 / Limit | Read the error and any retry guidance. Back off with bounded retries. |
| 502 / Upstream | Chat work that fails before output releases its reservation. Partial output may be charged. Video holds remain until its provider outcome and billing are confirmed; inspect before retrying. |
| 503 / Unavailable | A model may be disabled or a dependency unavailable. Check catalog availability and service status. |
Read the response body as well as HTTP status. A failed connection is not proof that the server did no work. Chat Completions has no documented idempotency-key contract here: blindly replaying a paid request can create another charge. Do not log request headers, account keys or private prompts during diagnosis.
10 / History & backups
Account access is not chat storage.
Website history stays in your browser, encrypted at rest. Clearing site data erases it. Use Backup to keep an encrypted copy and save its passphrase. A passkey, recovery key or API access key does not contain those conversations or automatically sync them across devices.
For terminal and API applications, your own client decides whether to retain messages. Shell output, debug logging, saved response files and external client telemetry become part of your privacy boundary.
11 / Privacy boundaries
Know where your prompt goes.
No prompts, answers or IP log are kept. Usage and financial records are separate from conversation history. Passkeys also create account security records, including public credentials, account linkage and recovery state.
The model host sees the prompt in plain text. Check its host and actual route label:
Only the second label restricts routing to no-retention providers. Video generation is a separate route with explicitly accepted temporary provider retention; neither of these chat labels overrides that notice. Web search may send a model-written query to a search provider. Shielded payment does not hide prompt contents from the model host; identity stripping does not remove identifying information you put in your prompt.
12 / Wallet & Zcash
Private money for your model credit.
ZOO Wallet is a shielded Zcash wallet for Chrome, currently under review in the Chrome Web Store. The verified installation link will appear on the Wallet page after approval. Until then, use another compatible shielded wallet.
- Create or restore your wallet and store its recovery phrase privately.
- Obtain ZEC through a service available in your region, then move it to a shielded balance.
- Use the terminal quickstart or open Add credit in Gateway to get your account’s deposit address, then send shielded ZEC to it. Check confirmation progress before making another payment.
Wallet custody is independent of a ZOO account. A Gateway passkey cannot recover a wallet phrase. Shielding protects on-chain payment information, not all network metadata. See the Wallet’s storage and network boundaries.
13 / ZOO Suite
One annual package. Clear availability.
$179 for one calendar year, including $60 in AI model credit, 5 GB of ZOO Mail storage and ZOO VPN access. One payment, with no automatic renewal. Review the Suite and current checkout availability.
Sign in to your existing Gateway account, add any needed credit with shielded ZEC, then return to Suite to review and confirm the annual purchase. Funding your account alone does not buy a membership. Included AI credit is used before paid credit, cannot pay for the Suite, and is retained if unused after the membership ends.
| Product | Current access / boundary |
|---|---|
| Gateway | Live web and Chat Completions API. Optional passkey or access key, shielded-ZEC model credit. |
| ZOO Wallet | Chrome Web Store review in progress. Independent wallet password and recovery phrase; no ZOO account required. |
| ZOO Mail | Web beta at zoomail.ai, with 5 GB through the annual Suite when connected. The first 100 successfully claimed accounts receive 1 GB for Mail only; that allowance includes no AI credit. Mail keeps its own passkey sign-in and recovery material. Ordinary external mail is not automatically end-to-end encrypted; follow the message’s protection label. |
| ZOO VPN | Private beta; standalone VPN checkout is closed. VPN access is included in the annual Suite as it rolls out. Public native downloads are forthcoming. Existing standalone VPN access keeps its original term. Account access, device authorization and tunnel keys remain separate. |
| ZOO Suite | Annual package: $179 for one calendar year, including $60 in AI credit, 5 GB of ZOO Mail storage and ZOO VPN access. Pay from your paid Gateway balance; no automatic renewal. |
| Native apps & Messenger | Mac and iPhone releases and Messenger are forthcoming. An annual membership does not make an unreleased app available. |
| Product connections | Explicit linking shares membership status. Gateway credit remains with its Gateway account; connecting Mail does not merge accounts or unlock the mailbox with a Gateway passkey. |
Suite access lasts one calendar year; included AI credit is retained until used. Gateway credit can also be purchased separately, and ZOO Wallet does not require a Suite subscription. Product subscriptions, usage credit, points and any future token allocation remain different things. Review the current package and payment details on the Suite page before purchasing. AI usage is metered against your credit, with optional top-ups.
14 / Ask the Chain
From a question to inspectable evidence.
Ask the Chain is being developed around bounded, read-only indexer tools: a question, a supported query, source records, exact calculations and an explanation. The current review build uses scripted fixtures; live ZOO indexer access is not enabled on the public Gateway API.
Question → supported query → records → calculation → explanation
Evidence to inspect:
network and indexed interval
block height or range and freshness
source records and coverage gapsRobinhood Chain and Zcash are the initial intended coverage. Endpoint names, live schema, coverage and limits still need release validation. Shielded Zcash data cannot be exposed just by connecting an LLM. Follow the delivery gates.


