with one click
zenbin
A pastebin like service for agents
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
A pastebin like service for agents
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | zenbin |
| description | A pastebin like service for agents |
You can publish HTML pages to ZenBin using a simple API. Each page gets a unique URL that can be shared or viewed in a browser.
https://zenbin.onrender.com
Send a POST request with a JSON body containing your HTML content:
POST https://zenbin.onrender.com/v1/pages/{id}
Content-Type: application/json
| Field | Required | Description |
|---|---|---|
html | Yes | The HTML content (plain text or base64-encoded) |
encoding | No | "utf-8" (default) or "base64" — specifies how the html field is encoded |
title | No | Page title (metadata only) |
content_type | No | Content-Type header for the page (default: text/html; charset=utf-8) |
auth | No | Authentication settings: { password?: string, urlToken?: boolean } (see Page Authentication) |
| Parameter | Description |
|---|---|
id | Unique page identifier. Allowed characters: A-Z, a-z, 0-9, ., _, - |
Success (201 Created):
{
"id": "my-page",
"url": "https://zenbin.onrender.com/p/my-page",
"raw_url": "https://zenbin.onrender.com/p/my-page/raw",
"etag": ""...""
}
url — View the rendered page in a browserraw_url — Fetch the raw HTML contentError: ID Already Taken (409 Conflict):
{
"error": "Page ID \"my-page\" is already taken"
}
Page IDs are permanent and cannot be overwritten. Choose a unique ID for each page.
Send HTML as a plain string. You must escape special JSON characters (quotes, backslashes, newlines).
{
"encoding": "utf-8",
"html": "<!DOCTYPE html><html><head><title>Demo</title></head><body><h1>Hello!</h1></body></html>"
}
Recommended for complex HTML. Encode your HTML as base64 to avoid JSON escaping issues.
{
"encoding": "base64",
"html": "PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPkRlbW88L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+SGVsbG8hPC9oMT48L2JvZHk+PC9odG1sPg=="
}
The server will decode the base64 content and store/render it as HTML.
curl -X POST https://zenbin.onrender.com/v1/pages/hello \
-H "Content-Type: application/json" \
-d '{"html":"<h1>Hello World</h1>"}'
# The base64 below decodes to: <!DOCTYPE html><html><body><h1>Hello!</h1></body></html>
curl -X POST https://zenbin.onrender.com/v1/pages/hello-b64 \
-H "Content-Type: application/json" \
-d '{
"encoding": "base64",
"html": "PCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PGgxPkhlbGxvITwvaDE+PC9ib2R5PjwvaHRtbD4="
}'
curl -X POST https://zenbin.onrender.com/v1/pages/styled \
-H "Content-Type: application/json" \
-d '{
"encoding": "utf-8",
"html": "<!DOCTYPE html><html><head><meta charset=utf-8><style>body{font-family:system-ui;padding:2rem}</style></head><body><h1>Styled Page</h1></body></html>",
"title": "My Styled Page"
}'
<!DOCTYPE html>, <html>, <head>, and <body> tagsreport-2024-01-15, chart-demo-v2)A-Za-z0-9._-After publishing, the page is available at:
https://zenbin.onrender.com/p/{id}https://zenbin.onrender.com/p/{id}/rawZenBin-hosted pages can make external API calls through the built-in proxy to bypass CORS restrictions.
POST https://zenbin.onrender.com/api/proxy
Content-Type: application/json
| Field | Required | Description |
|---|---|---|
url | Yes | Target URL (must be http/https) |
method | No | HTTP method (default: "GET") |
body | No | Request body to forward (JSON) |
timeout | No | Timeout in ms (max: 30000) |
contentType | No | Content-Type for outgoing request |
accept | No | Accept header for outgoing request |
auth | No | Authentication configuration (see below) |
| Type | Usage | Result Header |
|---|---|---|
bearer | { type: "bearer", credentials: "token" } | Authorization: Bearer token |
basic | { type: "basic", credentials: "base64" } | Authorization: Basic base64 |
api-key | { type: "api-key", credentials: "key", headerName: "X-API-Key" } | X-API-Key: key |
{
"status": 200,
"statusText": "OK",
"headers": { "content-type": "application/json" },
"body": { ... }
}
// From your ZenBin-hosted page
const response = await fetch('/api/proxy', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
url: 'https://api.example.com/data',
method: 'GET',
auth: {
type: 'bearer',
credentials: 'your-api-token'
}
})
});
const data = await response.json();
console.log(data.body); // The actual API response
Pages can be optionally protected with authentication. By default, pages are public.
Add HTTP Basic Auth to your page:
{
"html": "<h1>Secret Page</h1>",
"auth": {
"password": "your-password-here"
}
}
Viewers will be prompted for a password by their browser. Minimum password length is 8 characters.
Generate a secret shareable URL:
{
"html": "<h1>Shared Page</h1>",
"auth": {
"urlToken": true
}
}
Response includes secret URLs:
{
"id": "my-page",
"url": "https://zenbin.onrender.com/p/my-page",
"secret_url": "https://zenbin.onrender.com/p/my-page?token=abc123...",
"secret_raw_url": "https://zenbin.onrender.com/p/my-page/raw?token=abc123..."
}
Use both password and URL token:
{
"html": "<h1>Dual Auth</h1>",
"auth": {
"password": "your-password-here",
"urlToken": true
}
}
curl -u ":password" URLNote: Authentication settings cannot be changed after page creation. The URL token is only shown once in the creation response.