jukegames✳ Developer API ↗
JUKEGAMES FOR CREATORS

From your editor.
To play.

Your game, your assets, your universe. One API to publish it all.

01 / Package your game

Export your Phaser or JavaScript game as a static website. ZIP the contents of your distribution folder: index.html must be at the archive root. Use relative paths for scripts and assets.

my-game.zip
├── index.html
├── game.js
└── assets/
    ├── sprites.png
    └── music.ogg

ZIP: up to 100 MB, 300 MB uncompressed and 5,000 entries. Cover: JPG, PNG or WebP up to 5 MB. Recommended: 960 × 640 px.

02 / Set your token

On the server, generate a secret with php -r "echo bin2hex(random_bytes(32));" and set GAMES_UPLOAD_TOKEN in your .env. Then run php artisan config:clear. Never include the token in a game or public JavaScript.

03 / Publish

Send a multipart form. The 201 response includes play_url and cover_url. Your game appears in the catalog immediately.

POST /api/games
curl -X POST https://jukegames.com/api/games \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -F "title=My first game" \
  -F "slug=my-first-game" \
  -F "description=An adventure for everyone." \
  -F "category=Arcade" \
  -F "instructions=Use the arrow keys or touch the screen." \
  -F "orientation=landscape" \
  -F "featured=1" \
  -F "cover=@cover.webp" \
  -F "bundle=@my-game.zip" \
  -F "play_store_url=https://play.google.com/store/apps/details?id=com.example.game" \
  -F "app_store_url=https://apps.apple.com/us/app/my-game/id123456789"

In Windows PowerShell use curl.exe on one line, or use backticks for line continuations.

Web now. App whenever you want.

Store links are optional. Desktop visitors see both; Android visitors see Google Play; iPhone and iPad visitors see the App Store. Web play remains available. Store links do not synchronize progress across platforms.

Your endpoints

GET/api/auth/checkCheck your Bearer token without uploading a game
GET/api/gamesPublic paginated catalog · ?page=2
GET/api/games/{slug}Public game details
POST/api/gamesCreate a game · Bearer token
POST/api/games/{slug}Update metadata, cover or ZIP · Bearer token
DELETE/api/games/{slug}Delete a game and its files · Bearer token
POST/api/games/{slug}/deleteEquivalent deletion for clients without DELETE support · Bearer token

Deletion uses the game's slug, not its numeric ID. Send your Bearer token with either endpoint. Success returns 204 with no response body. The game, cover and complete game package are permanently removed; a missing slug returns 404.

Fields and compatibility

Required on creation: title, slug, description, category, cover and bundle. For updates, send only the fields you want to change. Send an empty store URL to remove that link.

Categories: Arcade, Action, Puzzle, Racing, Sports, Adventure and Strategy. Orientation: any, landscape or portrait (informational). Featured: featured=1 or 0.

Games run in an isolated iframe without access to portal cookies, local storage or service workers. Use relative assets and CORS-compatible requests from an opaque origin. Persistent saves need your own compatible backend. PHP, executables and unsupported file types are rejected.

Use GET /api/auth/check with your Bearer header to test authentication: success returns 200 {"authenticated":true}. There is no minimum token length; the configured token must be nonempty and match exactly. Errors: 401 invalid or unconfigured token, 404 missing game, 422 invalid data or ZIP, 429 30 authenticated requests per minute. For large uploads set upload_max_filesize=100M and post_max_size=110M in PHP and adjust your proxy limits.

Try the demo

Run php artisan migrate, then php artisan games:demo. No database seeder is required. The command installs or refreshes the clearly labeled Orbit Dash demo, including its assets.