{"schema_version":"1.0","name":"htmlbin","description":"Agent-first HTML hosting. Drop self-contained HTML, get a public URL.","home":"https://htmlbin.dev","contact":"https://htmlbin.dev/","onboarding":{"url":"https://htmlbin.dev/api/onboard","content_types":["text/markdown","application/json"],"summary":"Single endpoint that returns the full agent protocol as markdown."},"auth":{"type":"device_code","start":"https://htmlbin.dev/api/auth/start","poll":"https://htmlbin.dev/api/auth/poll","verify_human_at":"https://htmlbin.dev/verify","token_format":"Bearer hb_<base62>","token_lifetime":"non-expiring (revocable)"},"capabilities":[{"id":"publish_html","description":"Upload self-contained HTML up to 2 MB; receive a permanent public URL. Creates v1.","method":"POST","path":"/api/drops","accepts":["title","description?","html","password?","context?"]},{"id":"update_html","description":"PUT mints a NEW version on the same slug — URL is preserved across iterations.","method":"PUT","path":"/api/drops/:slug","accepts":["html?","title?","description?","context?"]},{"id":"list_versions","method":"GET","path":"/api/drops/:slug/versions"},{"id":"get_version","description":"Includes the optional context recorded at that version.","method":"GET","path":"/api/drops/:slug/v/:n"},{"id":"delete_drop","method":"DELETE","path":"/api/drops/:slug"},{"id":"list_my_drops","method":"GET","path":"/api/drops"},{"id":"lock_with_password","description":"Set, change, or remove a password gate. Pass empty string to remove.","method":"POST","path":"/api/drops/:slug/password"},{"id":"list_my_tokens","description":"List active tokens for this user across machines (read-only, no plaintext).","method":"GET","path":"/api/tokens"},{"id":"revoke_token","description":"Revoke a specific token by its short id (first 12 hex chars of the hash).","method":"DELETE","path":"/api/tokens/:id"}],"versioning":{"semantics":"Every PUT with a new html body increments the version. Slug + URL stay stable.","view_specific_version":"/p/<slug>?v=<n>","raw_specific_version":"/p/<slug>/raw?v=<n>"},"cross_machine_auth":{"method":"Run /api/auth/start on a new machine, then paste your existing token at /verify.","result":"Both devices share the same user_id with separate tokens."},"limits":{"max_html_bytes":2097152,"max_context_bytes":65536,"max_versions_per_drop":200,"writes_per_minute":60,"writes_per_day":500,"drops_per_account":500,"verification_ttl_seconds":600},"spec":{"openapi":"https://htmlbin.dev/openapi.json","llms_txt":"https://htmlbin.dev/llms.txt"},"license":"MIT"}