canonical: https://jentic.com/apis/curlshot.com/main

# CurlShot API

The CurlShot API turns a website address into a screenshot of the whole page, returned as an image or a PDF. It takes a capture synchronously or queues many URLs at once as a bulk batch, then exposes background jobs, batches, and stored result files so a caller can poll for completion and download the output. Device presets and a usage endpoint round it out, giving a small, focused rendering surface.

## For AI agents

Capture a full-page screenshot of a URL as an image or PDF, queue bulk captures, poll jobs and batches, and download stored result files.

## Scope

Does not handle image editing, OCR, or structured web scraping. Use for capturing full-page website screenshots and PDFs only.

## Capabilities

- Capture a full-page screenshot of a URL as an image or PDF
- Queue many URLs at once as a bulk screenshot batch
- Poll a background job for a capture's completion state
- Retrieve every job that belongs to one bulk batch
- Download a stored screenshot or PDF result file
- List device presets and read current quota usage

## Use cases

### Agent-driven page capture

An AI agent captures how a webpage looks right now, requesting a full-page image or PDF of a URL and attaching it to a report or ticket. Because a capture can run synchronously or return a job to poll, the agent handles both quick single shots and slower full-page renders without blocking on a long request.

Example prompt: Capture a full-page PDF of a given URL and download the resulting file once the job completes

### Bulk visual monitoring

Teams that watch many pages for visual regressions need captures at scale. The bulk endpoint queues many URLs in one call and groups the resulting jobs into a batch, so an agent can submit a list of pages, retrieve the batch, and download each image for a before-and-after comparison.

Example prompt: Queue a bulk batch of ten URLs, retrieve the batch, and download every completed screenshot

### On-demand previews with device presets

Previewing a page across devices needs consistent viewport settings. CurlShot exposes device presets and reports quota usage, so an agent can render a page against a chosen preset for a thumbnail or preview and track how much of the billing period's quota each run consumes.

Example prompt: List device presets, capture a page using a mobile preset, and read the remaining quota usage

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/api/v1/screenshot` | Take a screenshot |
| POST | `/api/v1/screenshot` | Take a screenshot from a JSON body |
| POST | `/api/v1/bulk` | Queue many screenshots at once |
| GET | `/api/v1/jobs/{id}` | Get a background job's state |
| GET | `/api/v1/batches/{id}` | Get every job in one bulk batch |
| GET | `/api/v1/files/{file}` | Download a stored result |
| GET | `/api/v1/devices` | List device presets |
| GET | `/api/v1/usage` | Get quota and limits for the billing period |

## Key resources

- **Screenshots** — Synchronous screenshot and PDF capture of a URL
- **Bulk and batches** — Queue many captures at once and retrieve their grouped jobs
- **Jobs and files** — Poll background jobs and download stored result files
- **Devices and usage** — Device presets and current quota usage

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 64 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 87 / 100
  - Developer Experience & Jentic Compatibility: 73 / 100
  - AI-Readiness & Agent Experience: 50 / 100
  - Agent Usability: 94 / 100
  - Security: 42 / 100
  - AI Discoverability: 75 / 100
- **View full report:** https://jentic.com/apis/curlshot.com/main/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring the CurlShot API by hand means choosing where to put the access key, deciding between synchronous capture and the bulk-plus-polling flow, and computing an HMAC signature when a key requires it. Through Jentic you install once, import it from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** CurlShot carries the target URL in the request parameters, so a rule bounds which operations your agent may call, such as the screenshot and job reads. You choose the operations it may call, so bulk queueing is not included unless you add it.
- **Credential handling:** Your CurlShot access key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'take a webpage screenshot' or 'capture a URL as PDF', and Jentic returns the matching operation with its input schema so the agent calls the right endpoint without reading the reference docs.

## Related APIs

- **ApiFlash** — ApiFlash is a screenshot API that renders webpages to images much like CurlShot.
- **Scrapingdog** — Scrapingdog extracts page data where CurlShot captures the page as an image.
- **DOQS** — DOQS generates PDFs from templates rather than capturing a live webpage.

## FAQ

### What authentication does the CurlShot API use?

The CurlShot API accepts an access key three ways, as declared in its OpenAPI spec: the access_key query parameter, the X-Access-Key header, or an Authorization bearer token. A key can also require signed requests with an HMAC signature. Through Jentic the key is stored encrypted by your own Jentic One instance and injected when a call runs, so it never reaches the agent's prompt or logs.

### Can I capture many URLs in one request with this API?

Yes. The bulk endpoint queues many URLs at once and groups the resulting jobs into a batch, and you retrieve the batch by its id to collect every completed capture.

### What are the rate limits for the CurlShot API?

The OpenAPI spec does not publish fixed numeric limits, but it exposes a usage endpoint that returns your quota and limits for the current billing period, and it signals a quota_exceeded error when you run over. Read the usage endpoint to pace requests.

### Is there a CurlShot MCP server?

You do not need an MCP server to give your agent the CurlShot API. Jentic connects it directly from the API Directory: import it, store your access key once, and your agent captures screenshots on demand.

### Can I limit what my agent is allowed to do with the CurlShot API?

Yes. CurlShot carries the target URL in the request parameters, so a rule bounds which operations your agent may call, such as taking a screenshot and reading jobs, rather than naming a URL, and every call it makes is logged.

### How do I capture a screenshot with this API through Jentic?

Search Jentic for an intent like 'take a webpage screenshot' and it returns the matching operation with its input schema, then your agent calls it with the access key Jentic injects at runtime. To run it on your own infrastructure, install Jentic One from its GitHub repo.
