Pricing

Simple plans, honest limits

Start free, no card required. Every plan publishes its rate limits up front and uses the same API.

Free
For trying things out

$0/month

Rate limit

5 requests / minute · 1 concurrent

  • 50 uploads / month
  • 250 screenshot / PDF renders / month
  • Links expire after 30 days
  • Community support
Starter
For side projects

$9.99/month

Rate limit

40 requests / minute · 3 concurrent

  • 500 uploads / month
  • 2,000 screenshot / PDF renders / month
  • No link expiry while subscribed
  • Optional overages
  • Email support
Most popular
Pro
For production apps

$19.99Standard price $29.99/month

Early adopter

Rate limit

80 requests / minute · 6 concurrent

  • 5,000 uploads / month
  • 10,000 screenshot / PDF renders / month
  • No link expiry while subscribed
  • Optional overages
  • Priority support
Business
For teams at scale

$49.99Standard price $79.99/month

Early adopter

Rate limit

150 requests / minute · 12 concurrent

  • 25,000 uploads / month
  • 50,000 screenshot / PDF renders / month
  • No link expiry while subscribed
  • Optional overages
  • Priority support & SLA

Launch pricing is locked in for accounts created now — Pro and Business move to $29.99 and $79.99 for accounts opened later. Your rate stays put for as long as the subscription does.

Compare

Every limit, side by side

The same numbers the API enforces. Nothing here is negotiated in a sales call.

LimitFree$0Starter$9.99/moPro$19.99/moBusiness$49.99/mo
Uploads / month505005,00025,000
Screenshot / PDF renders2502,00010,00050,000
Requests per minute54080150
Concurrent captures13612
Max file size10 MB10 MB10 MB10 MB
Link expiry30 days maxNone while subscribedNone while subscribedNone while subscribed
Overages$0.008 each$0.005 each$0.003 each

Each PDF uses one screenshot unit and the same overage rate. Uploads bill at half that rate. Free has no overages — it stops at the quota.

Overages

Running out of quota shouldn’t take your app down

A hard shutoff at the end of the month is a bad way to find out your product got popular. Turn overages on and the API keeps answering.

Quota is a bill, not a kill switch

With overages on, requests past your monthly quota keep succeeding. Every extra upload, screenshot, or PDF is metered at your plan's per-unit rate and settled on your next invoice — no failed jobs, no 402s in production.

You see it coming

Usage warnings fire at 80%, 90%, 100% of quota — on your usage page and as an x-shotwisp-quota-warning header on every metered API response.

Off unless you turn it on

Overages are disabled by default on every paid plan. Leave them off and the API returns 402 quota_exceeded once the quota is spent. Free has no overages at all — it stops at the limit and prompts an upgrade.

Manage overages in billing

Toggle them on or off at any time — the change applies to the next request.

FAQ

Questions, answered

What counts as a screenshot unit?

One successful screenshot or PDF render, whether it came from the dashboard or the API. Failed renders — an unreachable page, a blocked URL, or a timeout — are logged for you to inspect but never metered. Uploads are counted separately, one per stored file.

What happens when I hit my quota?

On a paid plan with overages enabled, nothing stops: requests keep succeeding and each unit past quota is billed at your plan's rate. With overages disabled, the API returns 402 quota_exceeded until the month rolls over or you upgrade. Free has no overages, so it hard-stops at the limit. Quotas reset at 00:00 UTC on the first of each month.

What are the rate limits, and what happens at 429?

Each plan gets a sustained requests-per-minute budget and a cap on concurrent captures, both listed on the card above. Past the budget the API returns 429 rate_limited with a Retry-After header plus x-shotwisp-ratelimit-limit, -remaining, and -reset. Wait out Retry-After and retry with exponential backoff — nothing is charged for a rejected request.

Can links expire?

Yes. Pick an expiry when you upload — one hour, 24 hours, seven days, 30 days, or no automatic expiry while subscribed to a paid plan — or pass expires_in with the API. Once a link expires it stops resolving and the file is deleted. Free links are capped at 30 days, and anonymous uploads always expire within 24 hours.

Can I cancel anytime?

Yes. Downgrade or cancel from your dashboard whenever you like. Your plan stays active until the end of the billing period, then the account moves to Free. Links created without an expiry receive a 30-day grace period; we email you before they are deleted, and upgrading again during grace keeps them active.