Test-PDF API

Generate test PDFs and download collection ZIPs programmatically. No API key. No account. Integrate into CI pipelines, test suites, and automation scripts.

01GENERATE A PDF

Generate a PDF

GET https://examplepdf.com/api/pdf
size string YES — Target size: {number}{unit} (kb or mb). 1kb–100mb
type string NO plain plain, images, tables, encrypted, multipage, scan
pages int NO auto Page count: 1–100
images bool NO false Embed placeholder images
lang string NO en Fill text language (v1: en only)
form bool NO false Include AcroForm fields
filename string NO auto Download filename (alphanumeric + hyphens, max 100 chars)

02EXAMPLES

Examples

# Basic: 1 MB plain PDF
$ curl -O "https://examplepdf.com/api/pdf?size=1mb"
# Custom: 5 MB, 10 pages, with tables and form fields
$ curl -O "https://examplepdf.com/api/pdf?size=5mb&type=tables&pages=10&form=true"
# Small: minimal file for upload-limit testing
$ curl -O "https://examplepdf.com/api/pdf?size=1kb"

03DOWNLOAD A TEST COLLECTION

Download a Test Collection

GET https://examplepdf.com/api/collections/{name}

Names: rag, ocr, parser, security, render

$ curl -O "https://examplepdf.com/api/collections/rag"

TAP A NAME TO COPY ITS CURL COMMAND.

04RESPONSE DETAILS

Response Details

Success (200):
  Content-Type: application/pdf
  Content-Disposition: attachment; filename="examplepdf-{size}-{type}.pdf"
  X-Generated-By: examplepdf-worker/2.0.0
  Cache-Control: no-store
Error (400):
  { "error": { "code": "INVALID_SIZE", "message": "Size must be between 1kb and 100mb. Got: 200mb", "param": "size" } }
Rate limit (429):
  { "error": { "code": "RATE_LIMITED", "message": "100 requests/min exceeded. Retry after 60s." } }
Unknown collection (404):
  { "error": { "code": "NOT_FOUND", "message": "Unknown collection: foobar. Valid: rag, ocr, parser, security, render" } }

05HEALTH CHECK

Health Check

GET https://examplepdf.com/api/health
→ { "status": "ok", "version": "2.0.0" }

Try It

06LIMITS & NOTES

Limits & Notes

  1. 01
    Rate limit: 100 requests/min/IP (Cloudflare WAF). No API key required.
  2. 02
    Large files (> 10 MB): streamed from server. Allow up to 30s.
  3. 03
    CORS: Access-Control-Allow-Origin: * (call from any origin).
  4. 04
    No storage: files are generated on demand and never persisted.
  5. 05
    Security collection: the ZIP includes its own AUP. API access does not bypass the AUP.

07INTERESTED IN HIGHER LIMITS?

Higher Limits

The free API serves most testing needs. If you need higher rate limits, larger files via API, or early access to new collections, a paid Developer tier is planned.

[WAITLIST — IMPLEMENTATION PENDING COMPLIANCE REVIEW]

No. The API is open and keyless in v1. Rate limiting (100 req/min/IP) is enforced at the infrastructure level.

Yes. That's the primary use case. Replace committed binary test fixtures with on-demand API calls. curl and wget both work out of the box.

You receive HTTP 429 with a JSON error body. Wait 60 seconds and retry. The limit resets per minute per IP.