Changelog#
This page tracks the ZUKU CLI releases and the ZUKU API v1. API entries list only features that are actually routed in the API.
ZUKU CLI#
CLI 0.3.0#
- Public release. The
zukuandzukujscommands are the same CLI. They share one runtime, config, sign-in and state in~/.config/zukujs/(Windows:%LOCALAPPDATA%\ZukuJS\). - Official installers are live. Install with
curlorwgetusinghttps://zuzunza.com/install.sh, or with PowerShell usinghttps://zuzunza.com/install.ps1. The installer manages Node 22.22.3 for the CLI. A fixed release archive is also available at/downloads/zukujs/cli/0.3.0/zukujs-cli-0.3.0.tgz. See Installation. - CI on six native platforms. CI succeeded for all six native platforms and for the three installer paths.
- npm is not published.
@zukujs/cliisn't available from the npm registry. Use the official installers. zuku create <name>scaffolds a playable Canvas jump obstacle runner (space or tap to jump). There is no--templateflag.zuku agentbuilds a game locally, playtests it in a real sandboxed browser, and packages it.--draftuploads a draft only.--yolois an explicit one-time production publish, limited by the server to 3 successful publishes per account in a rolling 6 hours. See Game agent and Publishing.- The official ZUKU AI provider is
zuku/auto. The model catalog is dynamic. - Phaser isn't bundled with the CLI. The agent uses Phaser only when the
phaserpackage is installed alongside the CLI.
API versioning#
| Location | Value |
|---|---|
| URL prefix | /api/v1/… |
| Response header | X-API-Version: v1 |
Envelope meta.version |
"v1" |
All three point to the same API generation. Treat the v1 in the URL as the source of truth, and use the header and meta for observation and logging.
Current status#
- v1: active (staging and production contract).
- v2: planned only. It will be introduced when path, envelope or breaking changes are needed. There's no
/api/v2route today.
API changelog (v1)#
A summary of what's implemented. Dates reflect when the docs were organized. See the repository history for individual commits.
2026-10-01 · Per-plan request limits#
- Plans (guest, Free, Super ZUKU, Creator and Cloud) are verified on the server, with real per-kind counters and
429responses. - Added account, API key and shared-IP protection, 10-second windows, and real remaining-count, reset and
Retry-Afterguidance. - Added ZUKU navigation and web API entry checks, notices that keep your edits, and a dedicated
/rate-limitpage. - Production rollout requires shipping web, backend, migration and cache policy together. This entry doesn't mean the policy is active in production. See policy and rollout conditions.
2026-09-12 · JUMP game thumbnails#
- Added image checks for existing games and automatic capture of real gameplay screens for new games.
- Owners can check status and regenerate with
GET/POST /api/v1/contents/{id}/thumbnail-job. - Directly uploaded images are protected, thumbnails are rescheduled when the source changes, and failures are retried. Generating a thumbnail doesn't publish the game.
2026-09-12 · Docs and JUMP publishing#
- Moved the public API docs to
docs.zuzunza.com. Existing/docs/apilinks still work. - Separated JUMP drafts from publish requests, added preview permission checks before publishing, and prevented duplicate publishing.
- Newest games are sorted first by first publish time, with
recentas an alias for newest first. - Added HTML5 ZWF2 package playback, AVIF image and audio uploads, and storage outage responses.
- Documented community photo attachments, partial edits, Unicode hashtag search and their actual supported scope.
Social · Follows#
followstable and thePOST /creators/{handle}/followtoggle.- Public profiles report real
follower_count,following_countandis_following. - Feed
sort=followingshows work from creators you follow only.
Auth · Captcha · Docs#
- API wiki on the site at
/docs/api, including detailed Captcha and Examples pages.
Auth · Sessions#
POST /api/v1/auth/register·signup: sign-up (captcha gate, blocks conflicts with legacy accounts).POST /api/v1/auth/login·logout·refresh.GET/PATCH /api/v1/auth/me.GET /api/v1/auth/sessions·DELETE …/sessions/{id}: list and revoke active sessions.POST /api/v1/auth/oauth/{provider}: returns 501NOT_IMPLEMENTED(out of scope).
Captcha#
POST /api/v1/captcha/challenge·verify: self-hosted proof of work.- Fails closed with
CAPTCHA_NOT_CONFIGUREDwhen the secret isn't configured.
Feeds · Contents#
GET /api/v1/feedsand/feeds/hype|swipe|jump.GET /api/v1/contents/{id}.GET /api/v1/contents/{id}/conversion.GET /api/v1/contents/{id}/recommendations:limit1–50 (default 8) andoffset;has_morevia LIMIT+1; short cache for signed-out users.GET /api/v1/jump/games/{id}?include=related,popular: attaches the Jump detail shelves in the same envelope.POST /api/v1/contents: Bearer orX-API-Key.PATCH/DELETE /api/v1/contents/{id}: Bearer only; DELETE archives.POST …/like·POST …/bookmark.- Comments:
GET/POST …/comments,PATCH/DELETE /api/v1/comments/{id}.
Uploads · Jump stream#
POST /api/v1/uploads: multipart, MIME by magic bytes, size limits.GET /uploads/{path}: static serving without the API prefix.GET /api/v1/jump/games·GET …/games/{id}.POST …/play·…/stream(IR) ·…/swf: POST requires authentication.
Developer keys#
POST/GET /api/v1/developer/keys.DELETE /api/v1/developer/keys/{id}.- Issued keys can create content (
X-API-Key).
Community posts#
GET /api/v1/feed: timeline.POST /api/v1/posts·GET …/posts/{id}·GET …/thread.POST …/replies·POST/DELETE …/like·DELETE …/posts/{id}.
DM#
GET/POST /api/v1/dm/conversations.GET/POST …/conversations/{id}/messages.POST …/conversations/{id}/read.- One-to-one, stored as plain text (end-to-end encryption and group chat are out of scope).
Notifications#
GET /api/v1/notifications.GET …/unread-count.POST …/read-all·POST …/{id}/read.
Other routes#
GET /api/health.GET /api/wasm/contract.- Admin user lookup and patch,
308redirects for legacy Jump paths. - Delegated moderation and analytics module routes (each behind its own module gate).
Breaking change policy#
- No change that breaks existing clients ships without a URL major version (
v1→v2). Examples: adding required fields or changing their meaning, removing or renaming success envelope keys, narrowing authentication methods, reversing the meaning of an error code. - Allowed (non-breaking): adding optional fields, new endpoints and new error codes, documenting previously undocumented behavior, and relaxing limits.
- When a breaking change is needed:
- deploy
/api/v2alongside v1, - bump
X-API-Versionandmeta.versiontov2, - remove v1 only after a deprecation notice period.
- The archive semantics of content DELETE, the path ID = body ID rule for Jump play, and magic bytes first for uploads are part of the v1 contract. Changing any of them requires a major version.
- The new policy that replaces placeholder rate-limit headers with real quotas is published in Rate limits. Before production rollout, the policy, timing and retry contract are announced, and web, backend and docs ship together.
Deprecation notes#
| Item | Status | Guidance |
|---|---|---|
/api/v1/auth/signup |
Same handler as register in v1 |
Use register for new integrations. A deprecation notice will precede removing signup. |
OAuth …/auth/oauth/{provider} |
501 NOT_IMPLEMENTED |
No implementation planned until provider secrets are issued. Never treat a call as successful. |
| Rate-limit header values | Real policy implemented; notice required before production rollout | Check real responses and the policy endpoint (rate-limits.md). |
Legacy Jump URLs (/game/play/hg-… and others) |
308 to canonical /api/v1/jump/… |
New clients should use canonical paths only. |
| Expecting hard deletes | Not applicable | DELETE /contents/{id} archives. Restore and permanent deletion are a separate contract. |
| v2 | Not started | Docs placeholder only until schedule and schema are confirmed. |
APIs scheduled for deprecation run in parallel for at least one major cycle, and the replacement path is stated in the response or the docs.