# Introduction

> shotkit renders any URL, HTML or Markdown to images, PDFs, videos or Markdown with one HTTP request.

shotkit is a screenshot API. One HTTP request turns a URL, or your own HTML or Markdown, into an image (PNG, JPG, WebP, AVIF or TIFF), a PDF, a recording (MP4, WebM, or animated GIF or WebP), or the page's content as clean HTML or Markdown. You can capture the full page or a single element, at any viewport size or with one of 153 device presets, and remove cookie banners, ads and chat widgets first. Typical uses are social cards and Open Graph images, invoices and reports, visual regression tests, archiving pages, and feeding web pages to AI agents.

```bash
curl -X POST "https://shotkit.net/api/take" \
  -H "X-Access-Key: YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://github.com","format":"png","full_page":true,"block_cookie_banners":true,"dark_mode":true}' \
  --fail-with-body -o shot.png
```

## The endpoint

Everything goes through one endpoint:

```text
https://shotkit.net/api/take
```

- `POST` with a JSON body, as in the example above. This is the easiest way to call it from code.
- `GET` with the same options as query parameters, so a URL alone is a complete request. Use it to embed renders in `<img src>` (see [signed URLs](https://shotkit.net/docs/authentication.md#signed-urls)).

Requests are authenticated with an [access key](https://shotkit.net/docs/authentication.md). The response is the file itself by default, or JSON with [`response_type=json`](https://shotkit.net/docs/responses.md).

## What you can do

- **Screenshots** of any page, in PNG, JPG, WebP, AVIF or TIFF, at any viewport size or with one of 153 [device presets](https://shotkit.net/docs/options/viewport.md#viewport_device), including [full page](https://shotkit.net/docs/full-page.md).
- **[Clean captures](https://shotkit.net/docs/clean-screenshots.md)** without cookie banners, ads, trackers or chat widgets, plus custom CSS, JavaScript, clicks and hovers.
- **[HTML and Markdown in](https://shotkit.net/docs/html-and-markdown.md)**, for social cards, certificates and invoices; **HTML and Markdown out**, for LLMs and [agents](https://shotkit.net/docs/ai-agents.md).
- **[PDFs](https://shotkit.net/docs/pdf.md)** with paper sizes, margins and one-page fitting.
- **[Videos and animations](https://shotkit.net/docs/video.md)** as MP4, WebM, GIF or WebP, including scrolling recordings.
- **[Caching](https://shotkit.net/docs/caching.md)**, **[async renders with webhooks](https://shotkit.net/docs/async-and-webhooks.md)** and **[metadata](https://shotkit.net/docs/responses.md#metadata)** for production use.

All 107 options are listed in the [option reference](https://shotkit.net/docs/options.md), each with an example.

## For agents

These docs are available as Markdown. Add `.md` to any docs URL (for example [/docs/quickstart.md](https://shotkit.net/docs/quickstart.md)), or request a page with `Accept: text/markdown`. [/llms.txt](https://shotkit.net/llms.txt) lists every page, and [/llms-full.txt](https://shotkit.net/llms-full.txt) has all of them in one file. See [AI agents](https://shotkit.net/docs/ai-agents.md).

## Next steps

1. [Quickstart](https://shotkit.net/docs/quickstart.md): get a key and take your first screenshot.
2. [Option reference](https://shotkit.net/docs/options.md): everything you can change.
3. [Errors](https://shotkit.net/docs/errors.md) and [limits](https://shotkit.net/docs/limits.md): what can go wrong, and how much you can render.
