One HTTP call. JSON in. Pixel-perfect PDF out in milliseconds. Generate invoices, contracts, reports — at any scale.
Create multiple API keys per account — one per environment or service. Keys are prefixed with ts_live_sk_ (production) or ts_test_sk_ (sandbox). Revoke keys instantly from the dashboard.
All API requests must use HTTPS. HTTP requests are rejected with a 301 redirect. TLS 1.2+ is required. API keys in request headers are never logged or stored in our infrastructure after authentication.
https://api.typsetter.dev| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /v1/render | Synchronous PDF/PNG generation. Returns binary document. Best for <10 pages. Responds within 30s. | Bearer |
| POST | /v1/render/async | Asynchronous generation. Returns a job ID immediately. Poll status or receive webhook on completion. Best for large documents. | Bearer |
| POST | /v1/render/batch | Batch generation from CSV or JSON array. Accepts up to 10,000 rows. Returns ZIP of PDFs or individual download URLs. Async by default. | Bearer |
| GET | /v1/jobs/{id} | Poll the status of an async or batch job. Returns status (pending, processing, done, failed), progress percentage, and download URL when complete. | Bearer |
| GET | /v1/jobs/{id}/download | Download the output file from a completed async job. Returns binary PDF or ZIP for batch jobs. | Bearer |
| GET | /v1/templates | List all templates available to your account — both built-in store templates and your custom templates. Includes slug, name, category, and variable schema. | Bearer |
| GET | /v1/templates/{slug} | Get metadata and variable schema for a specific template. Use this to understand what data fields the template expects. |
Bearer |
| GET | /v1/templates/{slug}/preview | Public endpoint. Returns a PNG preview thumbnail for a template. Cached 1 hour. No authentication required. Useful for template store UIs. | None |
| GET | /v1/usage | Get current billing period usage — renders used, renders remaining, and overage count. Useful for usage monitoring in your dashboard. | Bearer |
| DEL | /v1/jobs/{id} | Cancel a pending or processing async job. No-op if the job is already complete. | Bearer |
| PLAN | REQUESTS/MIN | CONCURRENT |
|---|---|---|
| Free | 10 req/min | 2 |
| Starter | 60 req/min | 5 |
| Pro | 120 req/min | 10 |
| Scale | 300 req/min | 20 |
| Business+ | Custom | Unlimited |
Rate limit headers returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
| Code | Meaning |
|---|---|
| 200 | Success — PDF binary returned |
| 202 | Accepted — async job created |
| 400 | Bad Request — invalid JSON or missing fields |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — feature not available on your plan |
| 404 | Template not found — check the slug |
| 422 | Template render error — check variable values |
| 429 | Rate limit exceeded — back off and retry |
| 500 | Server error — contact support if persistent |
| 503 | Service unavailable — check status.typsetter.dev |
Get your API key free. 100 PDFs per month on the free plan — no credit card required.