HTML and URLs become framed shots and clips.

Same request, same content_hash. Every asset on this page was rendered by the live API in the last 24 hours.

POST /v1/render · application/json

{
  "html": "<main><h1>Launch day.</h1></main>",
  "preset": "chrome-light-v1",
  "canvas": "hero",
  "background": "paper",
  "format": "png"
}

Production hero clip

Manifest-backed media reserved for SNAP-114
chrome-light-v1 · hero · MP4 Production age pending

Paste HTML. Inspect the framed result.

Render bounded HTML through the production service. Playground output is watermarked and rate limited; URL capture is not available here.

Command/Ctrl + Enter to render

No API key or Access token is accepted or stored by this page.

Output

Ready

Edit the starter HTML or render it as-is.

Frame gallery

Manifest-backed contact sheet reserved for SNAP-115.

Preset · canvas · exact px · spec · age

Motion strip

Static recipe filmstrips and MP4 downloads reserved for SNAP-116.

PNG filmstrips · no autoplay

Same request, same content_hash.

Copyable CI polling and hash assertion reserved for SNAP-117.

GET /v1/jobs/:id · assert hash

HTTP first. MCP next.

Use HTTP directly or connect an agent through the generated MCP tool catalog.

Open the MCP setup

curl · render a framed still

curl "$SHOTCURATOR_API_URL/v1/render" \
  -H "Authorization: Bearer $SHOTCURATOR_API_KEY" \
  -H "Content-Type: application/json" \
  --data @request.json

Four locked tiers

Typed prices, credits, retention, watermark, and overage terms land in SNAP-118.

Free

Typed plan details reserved.

Starter

Typed plan details reserved.

Growth

Typed plan details reserved.

Scale

Typed plan details reserved.

What changes between plans?

Credits, retention, watermark, and overage rules are reserved for SNAP-118.

How are clips counted?

Consumption examples will come from the same typed pricing source.

Render through the live API.

Open the playground