# url2image API

Render a list of URLs in a real browser and get the screenshots back as a zip. A BuiltWith service.

## Quick start

```bash
curl -X POST https://url2image.com/api/v1/batch \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $URL2IMAGE_KEY" \
  -d '{"urls":["https://stripe.com","https://vercel.com"],"format":"png","full_page":true}'
```

That returns a batch id. Poll it, then download:

```bash
curl https://url2image.com/api/v1/jobs/$ID -H "Authorization: Bearer $URL2IMAGE_KEY"
curl -L https://url2image.com/api/v1/jobs/$ID/download -H "Authorization: Bearer $URL2IMAGE_KEY" -o screenshots.zip
```

One URL, one image, no polling:

```bash
curl -X POST https://url2image.com/api/v1/shot \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $URL2IMAGE_KEY" \
  -d '{"url":"https://stripe.com"}' --output stripe.png
```

## Getting a key

`POST https://url2image.com/api/v1/keys` returns a key bound to a fresh account. Keep it:
it is the only handle on that account's credits and batches. Browsers do not
need a key, a signed cookie carries the same identity.

## Pricing

Every account gets 10 free screenshots a month. The allowance is metered
per network address as well as per account, so issuing a second key does not
reset it. After that, credits are prepaid and never expire.

| Pack | Price | Credits | Per screenshot |
|---|---|---|---|
| Starter | $5 | 2,500 | $0.002 |
| Growth | $20 | 15,000 | $0.0013 |
| Scale | $75 | 75,000 | $0.001 |
| Bulk | $250 | 350,000 | $0.000714 |

A URL that fails every attempt is not charged.

## Discovery

- OpenAPI: https://url2image.com/openapi.json
- MCP endpoint: https://url2image.com/mcp
- MCP server card: https://url2image.com/.well-known/mcp/server-card.json
- Agent card: https://url2image.com/.well-known/agent-card.json
- Agent skill: https://url2image.com/.well-known/agent-skills/batch-url-screenshots/SKILL.md
- x402 terms: https://url2image.com/.well-known/x402
- Auth guide: https://url2image.com/auth.md

## MCP tools

- `create_screenshot_batch`: queue URLs for rendering.
- `get_screenshot_batch`: read state and per URL results.
- `get_account_balance`: credits and free allowance remaining.
- `create_credit_checkout`: hosted Stripe Checkout for a credit pack (available).

## Paying as an agent

Two rails, both without card handling here:

1. Hosted Stripe Checkout. The tool returns a URL, a person confirms on
   Stripe's page, credits land on the account.
2. x402 (available). Call a priced endpoint, read the 402 body,
   retry with an `X-PAYMENT` header. Terms at https://url2image.com/.well-known/x402.

## Limits

- 500 URLs per batch, 2 MB per uploaded list.
- Results and images are deleted after 14 days.
- Only public HTTP and HTTPS hosts are rendered. Private, loopback and
  link-local addresses are refused at render time.

Support: support@builtwith.com. Terms: https://builtwith.com/terms.
Privacy: https://builtwith.com/privacy.
