Rate Limits & Quotas

Understand the limits that apply to your API usage.

Rate limits

The API allows 60 requests per minute per team. The limit is shared by every token and every member of the team, and it applies across all endpoints combined.

Response headers

Every API response includes headers showing your current rate limit status:

  • X-RateLimit-Limit: maximum requests allowed per minute (60)
  • X-RateLimit-Remaining: requests remaining in the current window
  • X-RateLimit-Reset: when the current window ends, as a Unix timestamp in seconds

Exceeding the limit

If you exceed the rate limit, the API returns a 429 Too Many Requests response. Its Retry-After header gives the number of seconds to wait before retrying.

429 Responsejson
{
  "message": "Too Many Requests."
}

Monthly quotas

Each plan includes a monthly quota of PDF generations. It resets on the first day of each month; unused generations do not roll over. One PDF costs one credit, whether it comes from a template or from raw HTML (POST /api/v1/html-to-pdf). A merge of N documents costs N credits. Exporting a PDF from the editor is free.

PlanMonthly quota
Discovery100 PDFs
Basic5,000 PDFs
Pro15,000 PDFs

Reaching your quota

Past the quota, generation carries on with prepaid credits:

  1. The first time a paying account (Basic or Pro) crosses its quota, it receives a one-off welcome pack of 1,000 PDFs. Discovery accounts do not get it.
  2. Credit packs then take over: 1,000 PDFs for $5, bought from Settings → Billing. They never expire.
  3. When both the quota and the credits are used up, the API answers 402 Payment Required. The body gives the current usage and a purchase_url.

Quota notifications

You receive an email when your usage reaches:

  • 80% and 95% of your monthly quota
  • 90% and 95% of your prepaid credits

Monitoring usage

You can track your usage in two ways:

  • Dashboard: view real-time usage statistics in your dashboard
  • API: call GET /api/v1/usage for programmatic access (see Templates API)

Every PDF generation response also includes a usage object with your current consumption.

Best practices

  • Implement retry logic with exponential backoff for 429 responses (rate limit), but not for 402: a refused render will not succeed on retry
  • Cache generated PDFs on your side when the same document is requested multiple times
  • Monitor your usage via the API or dashboard to anticipate quota limits
  • Use the url output format to avoid transferring large base64 payloads