Screenshots and PDFs for AI agents, paid per call in bitcoin
Send a public URL, or your own HTML or Markdown. Get back a PNG, JPEG or WebP screenshot, or a PDF. Each request carries its own payment: no account, no API key, no prepaid balance, no subscription.
Prices
| Route | What it does | Sats per call |
|---|---|---|
/v1/screenshot | Screenshot of a public URL (viewport) | 20 |
/v1/screenshot/full | Full-page screenshot of a public URL | 30 |
/v1/pdf | Public URL to PDF | 30 |
/v1/render/screenshot | Screenshot of HTML or Markdown you send (viewport) | 20 |
/v1/render/screenshot/full | Full-page screenshot of HTML or Markdown you send | 30 |
/v1/render/pdf | HTML or Markdown you send, to PDF | 30 |
/healthz | Service status | free |
All routes are on https://api.jittator.com. Prices are fixed in sats, per call. Lightning routing fees are
paid by the payer's wallet. Cashu tokens from coinos or macadamia cost the price plus that mint's swap fee (21 or 31 sats
in practice); see the docs.
How paying works
Make the request. It is checked for free first: a bad parameter, a private address or a page blocked by robots.txt
gets an error and no invoice. If the request is valid and carries no payment, the API answers
402 Payment Required and offers two ways to pay in the same response:
- L402 (Lightning). The
WWW-Authenticateheader holds a macaroon and a Lightning invoice. Pay the invoice, then repeat the request withAuthorization: L402 <macaroon>:<preimage>. Lightning Labs'lngetdoes this for you. - Cashu ecash (NUT-24). The
X-Cashuheader holds a payment request listing the amount and the accepted mints (Minibits, 21mint, Routstr, Flash, cashu.chat, coinos, macadamia). Repeat the request with acashuBtoken in theX-Cashuheader.
If a paid call fails while rendering, the gateway makes up for it once: an L402 proof is accepted for one more try within
the hour, and a Cashu payment comes back as a refund token in X-Cashu-Refund. See
failures after payment.
MPP charge and x402 over Lightning are planned.
Example: L402 with curl
# 1. Ask. The answer is 402 with an L402 challenge.
curl -i "https://api.jittator.com/v1/screenshot?url=https://example.com"
# HTTP/2 402
# www-authenticate: L402 macaroon="AGIAJEem...", invoice="lnbc200n1..."
# 2. Pay the invoice with any Lightning wallet and note the preimage (hex).
# 3. Repeat the request with the macaroon and preimage.
curl -o shot.png \
-H "Authorization: L402 AGIAJEem...:6f1c...preimage-hex" \
"https://api.jittator.com/v1/screenshot?url=https://example.com"
Example: L402 with lnget
# lnget pays the invoice from your configured node and retries for you.
lnget --max-cost 30 -o page.pdf "https://api.jittator.com/v1/pdf?url=https://example.com"
Example: Cashu
# 1. Ask. The 402 answer carries an X-Cashu payment request (creqA...)
# with the amount, the unit (sat) and the accepted mint URLs.
curl -i "https://api.jittator.com/v1/screenshot?url=https://example.com"
# 2. Make a 20 sat token from one of the listed mints with your Cashu wallet,
# for example the Nutshell CLI: cashu send 20
# (at coinos or macadamia, include the mint's fee: cashu send -f 20)
# 3. Repeat the request with the token.
curl -o shot.png \
-H "X-Cashu: cashuB..." \
"https://api.jittator.com/v1/screenshot?url=https://example.com"
Example: render your own HTML
curl -o note.pdf \
-H "Authorization: L402 <macaroon>:<preimage>" \
-H "Content-Type: application/json" \
-d '{"markdown": "# Hello\n\nRendered by Jittator.", "paper": "a4"}' \
https://api.jittator.com/v1/render/pdf
Rules
- Public
httpandhttpspages only, on ports 80 and 443. Private and internal addresses are refused, including through redirects. - No logins, cookies or credentials. No getting around CAPTCHAs, paywalls or anti-bot blocks.
- robots.txt is honoured. Pages are fetched as JittatorBot.
- Results go back only to the caller and are not stored.
- Size, time and rate limits apply, for example full-page screenshots up to 8000 pixels tall; they are listed in the docs.
Full terms: terms of service, acceptable use, privacy.
For agents
- llms.txt: short description, prices and links.
- skill.md: step-by-step instructions for calling the API and handling the 402.
- openapi.yaml: OpenAPI 3.1 description of every route.
- API reference: parameters, limits, errors and payment flows.
- /healthz: free status check.
- /.well-known/l402-services: free JSON with routes, prices and accepted mints.