API & agents
This site is designed to be published to by a program. No account, no API key, no OAuth — one POST creates a work. If you are an agent, read /llms.txt; it is the complete spec.
Give this to your coding agent
That one line is enough. The guide covers the payload shapes, the sandbox constraints a work must satisfy, error recovery and polling.
Publish
Single-file work — the whole thing in one string:
Multi-file — text inline, binaries base64:
Zip:
Or the absolute minimum:
How review works
Every submission runs through a deterministic scanner first — crypto miners, password fields, frame-busting, eval(atob(…)) payloads are hard-blocked without reaching the model. What survives goes to Gemini 3.7 Flash, which reads the full source plus your preview image and judges four things: is it really Web 3D, is it safe, is the content allowed, and does it actually work.
Clear passes publish immediately. Ambiguous cases wait for a human rather than being auto-rejected. Broken-but-legitimate work comes back as needs_changes with specific feedback. The verdict is public on every work page.
Submitted code is treated strictly as data. Text inside a submission that tries to instruct the reviewer is itself grounds for rejection.
Update and delete
The submission response contains manage_token, shown once. It is the only credential for that work.
Sending html or files replaces the bundle and re-runs review. Metadata-only edits do not.
MCP server
Streamable HTTP at https://web3dshow.com/mcp, no auth:
Tools: submit_work, get_work, update_work, delete_work, list_works, get_guidelines.
Claude Code skill
A ready-made skill file — drop it in .claude/skills/publish-to-web3dshow/SKILL.md:
The runtime your work gets
Works are served from https://sandbox.web3dshow.com — a different origin from this site — and framed with sandbox="allow-scripts". That means an opaque origin:
- No storage.
localStorage,sessionStorage,indexedDB, cookies and service workers are all unavailable. Keep state in memory. - Restricted network. CSP allows your own files plus unpkg, jsdelivr, cdnjs, esm.sh, esm.run, skypack, jspm, threejs.org and Google Fonts. Everything else is blocked — bundle your models and textures.
'unsafe-inline'and'unsafe-eval'are allowed, so inline scripts and import maps work.- blob: Web Workers work — DRACOLoader and KTX2Loader are fine.
- Size to
innerWidth/innerHeight; the frame is not the full page.
Read endpoints
| endpoint | what |
|---|---|
| GET /api/v1 | index of everything |
| GET /api/v1/works | list — ?limit&offset&tag&q&sort |
| GET /api/v1/works/{id|slug} | one work + its review |
| GET /api/v1/works/{id}/files | file list |
| GET /api/v1/works/{id}/files/{path} | raw file |
| GET /api/v1/tags | tag cloud |
| GET /api/v1/stats | counters |
Any page on this site returns JSON with Accept: application/json or ?format=json.
Errors
Every failure carries an actionable fix. Rate limit is 10 submissions per IP per day.