Agent Setup
This page is designed for both users and AI agents. Agents can read the endpoints below to list plans, check Google login status, create a VNPay/VietQR payment order, explain PayPal or Crypto support via Telegram, and guide the user through API setup.
Google login is required
Zora only supports Google login. If an agent sees an unauthenticated response, it should tell the user to sign in with Google first and should never ask for a Google password or banking credentials.
Agent Discovery
GET/llms.txtPlain-text instructions for AI agents and crawlers.
GET/api/agent/manifestMachine-readable manifest with auth policy, plans, models, and setup endpoints.
Agent Flow
- Read
/api/agent/plans to list current plans, request limits, RPM, and supported models. - Call
/api/agent/session to check whether the browser session is signed in with Google. - If not signed in, send the user to
/login and wait until they finish Google login. - After login, create a QR order with
POST /api/agent/payment. - Show the returned VNPay/VietQR image URL and transfer fields. The user pays from their own banking app.
- For PayPal or Crypto, send the user to Telegram with the returned payment code and amount.
- Poll the returned payment status URL until it returns
status=paid. - Use
/api/agent/setup and /api/user to retrieve or create the user API key.
Plans
| Plan | Launch price | Requests | RPM | Model access |
|---|
| Free tier | 0 VND | 50 requests | 2 RPM | gpt-5.5-low, gpt-5.4-low, gpt-5.4-medium, glm-5, qwen3-coder-next, minimax-m2.1 |
| 1 day | 50,000 VND | 200 requests | 4 RPM | All routes except claude-sonnet-4.5 |
| 3 days | 150,000 VND | 2,000 requests | 4 RPM | All routes except claude-sonnet-4.5 |
| 7 days | 350,000 VND | Unlimited requests | 4 RPM, optional 9 RPM +250,000 VND | All routes including claude-sonnet-4.5 |
| 1 month | 1,000,000 VND | Unlimited requests | 5 RPM, optional 10/15 RPM +700,000 VND per 5 RPM | All routes including claude-sonnet-4.5 |
Supported Models
Zora currently exposes five GPT model families for Codex-style usage:gpt-5.5, gpt-5.4, gpt-5.4-mini, gpt-5.3-codex, and gpt-5.2. Each model supports low, medium, high, and xhigh reasoning modes.
gpt-5.5-low
gpt-5.5-medium
gpt-5.5-high
gpt-5.5-xhigh
Payment Request
Agents must create payment orders only after Google login. The server generates the transfer code, amount, bank fields, payment status URL, and method-specific Telegram links for PayPal or Crypto.
{
"planId": "day7",
"rpm": 9,
"method": "paypal"
}
Use The API
Codex CLI
Agents should configure Codex through a local provider config and an environment variable. Do not ask the user to paste the raw API key into a public chat transcript.
model_provider = "zora"
model = "gpt-5.5-low"
[model_providers.zora]
name = "Zora"
base_url = "https://api.zora.io.vn/v1"
env_key = "ZORA_API_KEY"
wire_api = "responses"
1. Install or verify Codex CLI:
npm install -g @openai/codex
codex --version
2. Write ~/.codex/config.toml with the Zora provider block.
3. Store the returned Zora key in a local environment variable:
ZORA_API_KEY=RETURNED_BY_POST_/api/user
4. Run a smoke test:
codex exec -m gpt-5.5-low "Reply with one short sentence."
Claude Code
Claude Code should use the Anthropic-compatible Zora route. Agents must set the base URL tohttps://api.zora.io.vn without /v1, because Claude Code appends the Messages API path itself. Use ANTHROPIC_DEFAULT_HAIKU_MODEL for the fast model alias on current Claude Code versions.
1. Install or verify Claude Code.
2. Set local environment variables:
ANTHROPIC_BASE_URL=https://api.zora.io.vn
ANTHROPIC_API_KEY=RETURNED_BY_POST_/api/user
ANTHROPIC_MODEL=gpt-5.5-low
ANTHROPIC_DEFAULT_SONNET_MODEL=gpt-5.5-low
ANTHROPIC_DEFAULT_HAIKU_MODEL=gpt-5.4-low
ANTHROPIC_CUSTOM_MODEL_OPTION=gpt-5.5-low
ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Zora GPT 5.5 Low"
3. Run Claude Code from the target repository:
claude --model gpt-5.5-low
Zora also exposes Claude Code aliases such as anthropic/zora-gpt-5.5-low. If ~/.claude/settings.json already has an env block, update that file or pass a separate --settings file so local config does not override Zora.
OpenAI SDK
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.ZORA_API_KEY,
baseURL: 'https://api.zora.io.vn/v1',
});
const response = await client.chat.completions.create({
model: 'gpt-5.5-low',
messages: [{ role: 'user', content: 'Hello Zora' }],
});