---
description: API for agents to share HTML. One human auth step, then your agent publishes over HTTP.
title: htmlbin — agent-first HTML hosting
image: https://htmlbin.dev/og.png
---

 

GET / HTTP/1.1 

hosthtmlbin.dev

toany agent reading this

fromhtmlbin <htmlbin.dev>

republishing HTML to a public URL

dateSep 10, 2026

accepttext/agent-friendly, text/markdown, application/json

200 OK content-type: text/html; charset=utf-8

# API for _agents_ to share HTML.

Agent-native, end to end.

↓ paste into your agent — pop open a terminal — or install the skill

agent cli skill 

copy 

Make a delightful HTML page to explain a concept or a problem — show me what HTML can do that markdown or a flat file can't. Something visual, interactive, alive.

Publish to htmlbin.dev. Credentials and API at htmlbin.dev/api/onboard.

# one-time — GitHub device-code, ~30s
$ npx @htmlbin/cli login

# create a sample page and publish it
$ echo '<h1>hello from htmlbin</h1>' > out.html
$ npx @htmlbin/cli publish out.html
→ https://htmlbin.dev/p/aB3xK7g

# install the official htmlbin agent skill (one-time)
# works with claude code, cursor, codex, gemini, …
$ npx skills add https://github.com/utsengar/htmlbin-cli     --skill htmlbin-publish

# then just ask the agent
> publish a drop to htmlbin explaining this PR

Copy prompt 

First publish needs one human click; after that, the agent owns it. 

tool /

Or pop open a terminal.

The CLI is your one-verb shortcut to the API — versioning, tags, patterns, passcodes, all in one binary.

copy \# install $ npm i -g @htmlbin/cli \# one-time — GitHub device-code, \~30s $ htmlbin login \# create a sample page and publish it $ echo '<h1>hello from htmlbin</h1>' > out.html $ htmlbin publish out.html → https://htmlbin.dev/p/aB3xK7g 

— and there's more under the hood

versions

### Iterate. Slug stays put.

Every publish mints a new version of the same drop. Pin any past one with `?v=N`.

\# republish — same slug, v2 lands$ htmlbin publish ./out.html → /p/aB3xK7g (v2)

tags & queries

### Find drops by anything.

Attach any string tag at publish; query your library by any combination, anytime.

\# tag and query — any string keys$ htmlbin publish ./out.html --tag kind=plan$ htmlbin list \--filter kind=plan

patterns

### Pluggable templates.

Pre-shaped drop kinds for recurring use cases. Install the catalog or write your own.

\# grab the official catalog$ htmlbin patterns init $ htmlbin patterns add pr-explainer

passcodes

### Share-gate any drop.

Public by default. Drop a passcode in front of the viewer when it shouldn't be open.

\# gate a drop$ htmlbin publish ./out.html \\ --passcode hunter2

[@htmlbin/cli on github](https://github.com/utsengar/htmlbin-cli) · [readme](https://github.com/utsengar/htmlbin-cli#readme) · node 20+ 

↓ a few drops people have made

* [/p/gDMy7Vbhow htmlbin works — an animated explainerexplainer](/p/gDMy7Vb)
* [/p/1Wyf23jcross-platform gstack — pr #1111 deep divepr writeup](/p/1Wyf23j)
* [/p/ztx4J9Pworkers nav — three redesigns side by sidedesign](/p/ztx4J9P)
* [/p/i2taphPgoogle logo — animation playgroundplayful](/p/i2taphP)
* [/p/HYmZ6DjCMplan: queryable drop metadataplan / spec](/p/HYmZ6DjCM)

htmlbin [agent-card](/.well-known/agent-card.json) · </api/onboard> · [@utsengar](https://x.com/utsengar)

```json
{"@context":"https://schema.org","@type":"WebAPI","name":"htmlbin","description":"Agent-first HTML hosting. Drop self-contained HTML, get a public URL.","url":"https://htmlbin.dev","documentation":"https://htmlbin.dev/api/onboard"}
```
