Get your Zhen AI API key in minutes
One account, one key, every frontier model. Here's the fastest path from signup to your first streamed token.
4. Call the API
Point any OpenAI-, Anthropic- or Gemini-compatible SDK at the Zhen AI endpoint β no code changes.
Drop-in compatible authentication
Every key authenticates with a standard bearer header. Use the same key across OpenAI-, Anthropic- and Gemini-shaped requests β Zhen AI routes to whichever upstream model you name.
Authorization: Bearer sk-...- Streaming and non-streaming responses supported
- Swap the
modelfield to change providers β no other code changes
curl https://api.zhenx.ai/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.2",
"messages": [{"role":"user","content":"Hi"}],
"stream": true
}'Generate Seedance 2 or Wan 3.0 video with your API key
POST /v1/videos on www.zhenx.ai submits a Seedance 2.0 or Wan 3.0 Prime job (model seedance-2.0 / wan3.0-prime) billed from your Metered credit at the same per-second rates as the studio. Poll the job, then download the clip within 7 days β you keep the file, we don't list it anywhere.
- Tick seedance-2.0 and/or wan3.0-prime in the key's model allow-list β an unrestricted key cannot generate video.
- Jobs need at least $2.00 of Metered credit, and are refused (HTTP 402) if the job's price would leave less than $2.00. Add $5 or more at Billing β Metered credit.
- Clips are private to your key and deleted after 7 days; GET β¦/content streams them (Range supported), DELETE removes them sooner.
The video API lives on www.zhenx.ai only. api.zhenx.ai is the chat relay host and does not serve /v1/videos.
# submit (202 β {"id": "gen_...", "status": "queued", ...})
curl https://www.zhenx.ai/v1/videos \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0",
"prompt": "a koi fish leaping out of an ink-wash river",
"resolution": "720p", "duration": 10, "ratio": "16:9"
}'
# poll until "status": "completed"
curl https://www.zhenx.ai/v1/videos/gen_... \
-H "Authorization: Bearer sk-..."
# download within 7 days
curl -L -o clip.mp4 https://www.zhenx.ai/v1/videos/gen_.../content \
-H "Authorization: Bearer sk-..."Step by step
1. Add Metered credit
Sign in β Billing β Metered credit. Minimum top-up is $5 (Β₯40 via Alipay/WeChat Pay). Video is pay-as-you-go from this wallet; plans don't include it.
2. Create a key with seedance-2.0 ticked
Keys β Create key. Under "Video models" tick seedance-2.0, then Create. Copy the sk- key β it is shown once. A key with an empty allow-list can call every chat model but NOT video; video is granted only by that tick. Existing keys can't be edited: create a new one.
3. Submit a job
POST https://www.zhenx.ai/v1/videos with model, prompt, resolution, duration and ratio. seedance-2.0: 720p / 1080p / 4k, 5 / 10 / 12 / 15 s. wan3.0-prime: 480p / 720p / 1080p, 5β30 s, ratio may be adaptive, plus optional negative_prompt, prompt_extend and frame_mode "frames" (reference images become first/last frame). You get 202 with an id, the exact price and your remaining balance. The price is reserved from the wallet at this moment.
4. Poll, then download within 7 days
GET /v1/videos/{id} until status is completed, then GET /v1/videos/{id}/content streams the MP4 (Range supported). A failed job refunds in full. DELETE /v1/videos/{id} removes the clip early.
Price = the resolution's per-second rate Γ duration in seconds, rounded to the cent and quoted before any spend β the 202 response and the console's Billing β Metered credit card show the same numbers. Optional: generate_audio, seed, and reference_images (URLs from POST /v1/videos/uploads, multipart field `file`).
Responses you may see
| 402 insufficient_metered_credit | Balance is under $2, or this job would leave less than $2. The body states balance_usd, estimated_cost_usd and required_usd (the top-up that lets the job run), plus topup_url. |
| 403 model_not_allowed | seedance-2.0 is not ticked on this key. Create a key with it ticked. |
| 429 rate_limited | More than 3 jobs in flight on this key, or more than 10 submits in a minute. |
| 422 content_rejected | The upstream content filter refused the prompt or a reference image. Nothing is charged. |
| 410 content_expired | The clip left storage β 7 days passed or you deleted it. Keep your own copy. |
You decide how hard the model thinks
Reasoning models take an optional reasoning_effort field. Zhen AI passes it straight through to the upstream model β we never inject a default, cap it, or rewrite what you send, so the trade-off between answer quality, latency and spend stays yours.
Accepted values
none- No reasoning at all β fastest and cheapest. Best for short factual answers, extraction and formatting.
low- A brief think-through. A sensible everyday setting for chat and simple tool calls.
medium- Balanced depth for multi-step questions.
high- Extended reasoning for hard analysis, planning and long agent loops.
max- The deepest setting a model offers. Slowest, and it bills the most output tokens.
curl https://api.zhenx.ai/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.2",
"messages": [{"role":"user","content":"Plan this migration"}],
"reasoning_effort": "high",
"stream": true
}'- Omit the field entirely and the model uses its own default.
- Reasoning tokens bill as output tokens, so a higher level costs more β raise it deliberately, not by default.
- Models without reasoning ignore the field. Any value outside the list above is rejected upstream with a 400.