Monthly invoices for every client. Certificates for everyone who finished a course. The same report rendered per region. All of these are the same underlying request: a fixed template, a list of documents that differ only in their data.
```json { "documents": [ { "title": "Invoice 001", "content": "<h1>Invoice for Client A</h1><p>Amount: 12,000</p>" }, { "title": "Invoice 002", "content": "<h1>Invoice for Client B</h1><p>Amount: 27,500</p>" } ], "template": "professional", "pageSize": "A4" } ```
One request, one authentication check, one rate-limit deduction, however many documents you included in the array.
## Why the cap is five, not some larger number
Earlier versions of this page said ten. The actual limit is five documents per request, and it exists for a specific reason: every request has a total render-time budget, and a batch that ran long enough to exceed it used to fail entirely, discarding documents that had already rendered successfully along with the ones that hadn't. Capping the batch size keeps a slow document from taking the rest of the batch down with it. If you need more than five, five is also roughly where the character-count math starts to matter: each document can carry up to 500,000 characters, so a full batch is a genuinely large amount of content moving through one request regardless of the document count.
For larger volumes, the honest answer is to call the endpoint five times rather than look for a way around the cap. The rate limit is 60 requests per minute, so at five documents per call that is 300 documents a minute before you would need to slow down, which covers essentially every real batch job we have heard about.
## What we will not claim
An earlier version of this post included specific latency numbers, a batch of ten completing in under two seconds, a 5 to 10x throughput improvement over individual calls. Those numbers were never measured against production traffic and we cannot stand behind them, so they are gone rather than repeated. What is true and worth saying instead: documents in a batch are not queued one after another, so a batch of five is not five times slower than a batch of one, but the exact multiplier depends on document complexity and current load, and we would rather say nothing than guess.
## The one-request-one-limit part that actually matters for cost planning
The rate limit counts requests, not documents. A batch of five documents in one call uses exactly one unit of your 60-per-minute allowance, the same as a single-document call would. If your workload is naturally batchable, batching is the cheaper way to use the free tier's request allowance, even though the monthly document quota, 100 a month on the free tier, still counts every document you generate regardless of how they were batched.
Field-by-field request and response details, including what changes when object storage is configured, are on the [API reference](/docs#generate).