Async video job proxy mirroring the existing image-generation layer split:
Next routes → src/sse/handlers/videoGeneration.js (auth gate, account
fallback loop, refresh persistence) → open-sse/handlers/videoCore.js
(transparent upstream proxy, 401 refresh-once/retry-once, secret sanitization).
- POST /v1/videos/{generations,edits,extensions}: byte-exact body forward
(JSON + multipart), request_id passthrough, Idempotency-Key forwarded
- GET /v1/videos/{request_id}: status/progress/video.url passthrough
- Register grok-imagine-video (kind: "video"); add "video" to MODEL_TYPE_TO_KIND
so video models stay out of chat lists (also fixes runwayml leak)
- 9router xai video CLI: submit → poll → atomic MP4 download
- No auto-retry of creation POSTs (billable jobs); rotate accounts only on
401/403/429; sanitize Bearer tokens + credential values from errors/logs
Closes #1285
9Router — Agent Skills
Drop-in skills for any AI agent (Claude, Cursor, ChatGPT, custom SDK). Just copy a link below and paste it to your AI — it will fetch the skill and use 9Router for you.
Tip: start with the 9router entry skill — it covers setup and links to all capability skills.
Skills
How to use
Paste to your AI (Claude, Cursor, ChatGPT, …):
Read this skill and use it: https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md
Then ask normally — "generate an image of a cat", "transcribe this URL", etc.
Configure your shell once
export NINEROUTER_URL="http://localhost:20128" # local default, or your VPS / tunnel URL
export NINEROUTER_KEY="sk-..." # from Dashboard → Keys (only if requireApiKey=true)
Verify: curl $NINEROUTER_URL/api/health → {"ok":true}.
Links
- Source: https://github.com/decolua/9router
- Dashboard: https://9router.com