aPresskit API

API Documentation

Generate PDFs, invoices, and QR codes with a single API call. Track QR scans with real-time analytics. Host pages and forms.

Quick Start
curl -X POST https://apresskit.app/v1/pdf/generate \
  -H "Authorization: Bearer pk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{"content": "# Hello World\nYour first PDF.", "content_type": "markdown"}' \
  -o hello.pdf

Authentication

API Key auth — for document generation endpoints (/v1/pdf/*, /v1/invoice/*, /v1/qr/*):

  1. Create an account at /dashboard/register
  2. Verify your email (click the magic link)
  3. Go to Dashboard → API Keys → Create Key
  4. Use the key in the Authorization header:
Authorization: Bearer pk_live_xxxxxxxxxxxxxxxx

JWT auth — for tracked QR and pages endpoints (/v1/qr-track/*, /v1/pages/*):

Use the access_token returned from POST /auth/login or POST /auth/register.

Endpoints

Document Generation (API Key)

Privacy by Design

Zero storage
Your documents are generated, streamed back, and forgotten. We never write your content to disk. Nothing to leak, nothing to subpoena.
No logging of content
We log metadata only: which key, which endpoint, response time, file size. Never the content itself. Your invoices, receipts, and PDFs are yours alone.
Stateless pipeline
Content in, document out. No database writes, no temp files, no caches. The server has no memory of your request after the response is sent.

Response Headers

X-aPresskit-Request-Id Unique request identifier for debugging
X-aPresskit-Credits-Remaining API calls remaining this billing period
X-aPresskit-Response-Ms Server-side processing time in milliseconds

Rate Limits

Burst limit: 10 requests/second per API key

Monthly limits by plan:

Free
0
dashboard only
Pro
500
calls/mo
Agency
5,000
calls/mo
Unlimited
50,000
calls/mo

Error Codes

401 Invalid or missing API key / JWT token
403 Email not verified (for API key creation)
404 Resource not found
413 Input or output exceeds size limit
422 Invalid request body (check required fields)
429 Rate limit exceeded (burst or monthly)
500 Internal server error