# Limits and plans

> Monthly screenshots, requests per minute, timeouts and file retention for each plan.

## Plans

| Plan | Price | Screenshots / month | Requests / minute |
| --- | --- | --- | --- |
| Hobby | Free | 100 | 10 |
| Starter | $9/month | 2,000 | 30 |
| Growth | $29/month | 10,000 | 60 |

Every plan has every option. Paying yearly saves 20%. Change plans on the [billing page](https://shotkit.net/billing); changes apply within a minute.

## Monthly screenshots

The monthly limit counts **successful, uncached renders**. Not counted:

- [cache hits](https://shotkit.net/docs/caching.md),
- failed requests (any error),
- requests rejected by a limit.

The count resets on the 1st of each month at 00:00 UTC. Over the limit, requests fail with `screenshots_limit_reached` (`429`), which says when it resets. Your current usage is on the [usage page](https://shotkit.net/usage).

## Requests per minute

Every authenticated request counts toward the per-minute limit, including cache hits and failed ones. The window is a calendar minute. Over the limit, requests fail with `too_many_requests` (`429`) and `Retry-After` says when the next window starts.

All keys and members of a workspace share its limits.

## Timeouts

| Limit | Default | Maximum |
| --- | --- | --- |
| `timeout` (whole request) | 60 s | 90 s, or 600 s with [async](https://shotkit.net/docs/async-and-webhooks.md) |
| `navigation_timeout` (page load) | 30 s | 30 s |
| `delay` | 0 s | 30 s |
| `animation_duration` | 3 s | 20 s |

## Sizes

| Limit | Value |
| --- | --- |
| Viewport | 1–7680 px each way, device scale factor up to 5 |
| Output resize (`image_width`/`image_height`) | up to 16,000 px |
| Full-page scrolling | stops at 50,000 px |
| Slices | up to 16,000 px each |

## File retention

Files from `response_type=json`, cached renders, slices and stored content are deleted after `cache_ttl`: 4 hours by default, up to 30 days. Download anything you need to keep.
