Quickstart

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.

1. Create an account

Sign up in seconds β€” every new account starts with a free trial quota, no credit card required.

2. Sign in to the console

The console gives you tenants, keys, usage analytics and billing in one place.

3. Create a key

Generate a key from the Keys page. The full key is shown once β€” copy it somewhere safe.

4. Call the API

Point any OpenAI-, Anthropic- or Gemini-compatible SDK at the Zhen AI endpoint β€” no code changes.

5. Monitor usage & billing

Track requests, tokens and spend in real time, and top up or upgrade your plan as you grow.

One endpoint

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 model field to change providers β€” no other code changes
request.sh
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
  }'
Video API

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.

video.sh
# 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. 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. 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. 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. 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_creditBalance 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_allowedseedance-2.0 is not ticked on this key. Create a key with it ticked.
429 rate_limitedMore than 3 jobs in flight on this key, or more than 10 submits in a minute.
422 content_rejectedThe upstream content filter refused the prompt or a reference image. Nothing is charged.
410 content_expiredThe clip left storage β€” 7 days passed or you deleted it. Keep your own copy.
Reasoning control

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.
reasoning.sh
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.

Ready to start building?