> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scrnshot.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Create an account, get an API key, capture your first screenshot

## 1. Create an account

Sign up at [scrnshot.site](https://scrnshot.site). New accounts start on the
Free plan — 100 screenshots/month, no credit card required.

## 2. Create an API key

From the dashboard, go to **API Keys** and create a new key. The plaintext
value is shown exactly once — copy it before navigating away. If you lose
it, revoke it and create a new one.

Keys look like `sk_live_...` and are sent in the `X-API-Key` header on every
request. See [Authentication](/authentication) for details.

## 3. Capture a screenshot

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.scrnshot.site/v1/screenshots \
    -H "X-API-Key: sk_live_9f2b1c7a4e6d8f0a1b2c3d4e5f6a7b8c" \
    -H "Content-Type: application/json" \
    -d '{
      "url": "https://example.com",
      "format": "png"
    }'
  ```

  ```js JavaScript theme={null}
  const response = await fetch("https://api.scrnshot.site/v1/screenshots", {
    method: "POST",
    headers: {
      "X-API-Key": process.env.SCRNSHOT_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      url: "https://example.com",
      format: "png",
    }),
  });

  const data = await response.json();
  console.log(data.image_url);
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.scrnshot.site/v1/screenshots",
      headers={"X-API-Key": os.environ["SCRNSHOT_API_KEY"]},
      json={"url": "https://example.com", "format": "png"},
  )
  response.raise_for_status()
  data = response.json()
  print(data["image_url"])
  ```
</CodeGroup>

A successful capture returns `201` with the hosted image URL:

```json theme={null}
{
  "id": 4821,
  "image_url": "https://cdn.scrnshot.site/a1b2c3d4.png",
  "cached": false,
  "expires_at": "2026-08-19T12:00:00Z",
  "quota": {
    "used": 1,
    "limit": 100
  }
}
```

`id` is only present when the capture is backed by a listable/deletable
record — see [Screenshot options](/guides/screenshot-options) for which
plans that applies to.

## Next steps

* [Screenshot options](/guides/screenshot-options) — every parameter, with
  defaults and plan availability.
* [Caching & fresh](/guides/caching-and-fresh) — how results are cached and
  when they count against quota.
* [Plans & limits](/guides/plans-and-limits) — the full tier comparison.
