{"title":"PDFStack API","version":"1.1.0","docsUrl":"http://pdfstack.dev/docs","openApiUrl":"http://pdfstack.dev/api/openapi.yaml","baseUrl":"http://pdfstack.dev/api/v1","authFlow":["POST /api/v1/auth/signup","Verify email from confirmation link","POST /api/v1/auth/login","POST /api/v1/auth/create-key","Use returned API key in X-API-Key header"],"gettingStarted":{"goal":"First successful API call in under 5 minutes","steps":["Create account: POST /api/v1/auth/signup","Verify email","Login: POST /api/v1/auth/login","Create key: POST /api/v1/auth/create-key","First call: POST /api/v1/pdf/convert"],"successCheckpoint":"Receive { success: true, data: ... } and usage increments by 1 in billing status"},"limitations":{"ocr":"Scanned PDF OCR is not currently supported. /pdf/convert is text-layer extraction only.","monthlyReset":"Usage resets on monthly bucket (YYYY-MM) at UTC month rollover.","overagePolicy":"No auto-overage billing. Requests above monthly quota return HTTP 429 USAGE_LIMIT_EXCEEDED until reset or plan upgrade.","planLimits":{"free":{"monthlyConversions":50,"maxFileSizeMb":5},"starter":{"monthlyConversions":500,"maxFileSizeMb":25},"pro":{"monthlyConversions":5000,"maxFileSizeMb":100}}},"errorShape":{"success":false,"error":{"code":"ERROR_CODE","message":"Human-readable message","details":{"optional":"context"}}},"quickstarts":{"javascript":{"description":"Node.js fetch example for /pdf/convert","env":["PDFSTACK_API_KEY"],"snippet":"const form = new FormData(); form.append(\"file\", fileBlob, \"document.pdf\"); form.append(\"format\", \"text\"); await fetch(\"https://pdfstack.dev/api/v1/pdf/convert\", { method: \"POST\", headers: { \"X-API-Key\": process.env.PDFSTACK_API_KEY }, body: form });"},"python":{"description":"requests example for /pdf/convert","env":["PDFSTACK_API_KEY"],"snippet":"requests.post(\"https://pdfstack.dev/api/v1/pdf/convert\", headers={\"X-API-Key\": os.environ[\"PDFSTACK_API_KEY\"]}, files={\"file\": open(\"document.pdf\",\"rb\")}, data={\"format\":\"text\"}, timeout=60)"}},"endpointExamples":{"POST /auth/signup":{"body":{"name":"Jane Developer","email":"dev@example.com","password":"strongpassword"}},"POST /auth/login":{"body":{"email":"dev@example.com","password":"strongpassword"}},"GET /auth/me":{"headers":{"Authorization":"Bearer <access_token>"}},"POST /auth/create-key":{"headers":{"Authorization":"Bearer <access_token>"}},"POST /auth/regenerate-key":{"headers":{"Authorization":"Bearer <access_token>"}},"DELETE /auth/revoke-key":{"headers":{"Authorization":"Bearer <access_token>"}},"GET /auth/verify":{"query":{"apiKey":"<api_key>"}},"GET /auth/my-keys":{"headers":{"Authorization":"Bearer <access_token>"}},"POST /auth/profile":{"headers":{"Authorization":"Bearer <access_token>"},"body":{"name":"Jane Developer","company":"Acme Inc"}},"DELETE /auth/delete-account":{"headers":{"Authorization":"Bearer <access_token>"}},"POST /pdf/convert":{"headers":{"X-API-Key":"<api_key>"},"formData":{"file":"<pdf file>","format":"text|docx"}},"POST /pdf/merge":{"headers":{"X-API-Key":"<api_key>"},"formData":{"files":["<pdf1>","<pdf2>"]}},"POST /pdf/split":{"headers":{"X-API-Key":"<api_key>"},"formData":{"file":"<pdf file>","pages":"1,3,5"}},"POST /pdf/compress":{"headers":{"X-API-Key":"<api_key>"},"body":{"pdf":"data:application/pdf;base64,...","quality":"medium"}},"POST /pdf/to-image":{"headers":{"X-API-Key":"<api_key>"},"body":{"pdf":"data:application/pdf;base64,...","format":"png","dpi":150}},"POST /pdf/from-image":{"headers":{"X-API-Key":"<api_key>"},"body":{"images":["data:image/png;base64,..."],"layout":"single"}},"POST /screenshot":{"headers":{"X-API-Key":"<api_key>"},"body":{"url":"https://example.com","format":"png","fullPage":true}},"POST /html-to-pdf":{"headers":{"X-API-Key":"<api_key>"},"body":{"html":"<h1>Hello</h1>","options":{"format":"A4"}}},"GET /billing/plans":{},"GET /billing/status":{"query":{"apiKey":"<api_key>"}},"GET /billing/usage-breakdown":{"query":{"apiKey":"<api_key>"}},"POST /billing/create-checkout-session":{"headers":{"Authorization":"Bearer <access_token>"},"body":{"tier":"starter","apiKey":"<api_key>"}},"POST /billing/create-portal-session":{"headers":{"Authorization":"Bearer <access_token>"},"body":{}},"GET /admin/analytics/funnel":{"headers":{"Authorization":"Bearer <admin_access_token>"},"query":{"from":"<ISO date>","to":"<ISO date>"}},"GET /admin/analytics/activation":{"headers":{"Authorization":"Bearer <admin_access_token>"},"query":{"from":"<ISO date>","to":"<ISO date>"}},"GET /admin/analytics/health":{"headers":{"Authorization":"Bearer <admin_access_token>"},"query":{"from":"<ISO date>","to":"<ISO date>"}}},"endpoints":{"auth":["POST /api/v1/auth/signup","POST /api/v1/auth/login","GET /api/v1/auth/me","POST /api/v1/auth/create-key","POST /api/v1/auth/regenerate-key","DELETE /api/v1/auth/revoke-key","GET /api/v1/auth/verify","GET /api/v1/auth/my-keys","POST /api/v1/auth/profile","DELETE /api/v1/auth/delete-account"],"pdf":["POST /api/v1/pdf/convert","POST /api/v1/pdf/merge","POST /api/v1/pdf/split","POST /api/v1/pdf/compress","POST /api/v1/pdf/to-image","POST /api/v1/pdf/from-image"],"rendering":["POST /api/v1/screenshot","POST /api/v1/html-to-pdf"],"billing":["GET /api/v1/billing/plans","GET /api/v1/billing/status","GET /api/v1/billing/usage-breakdown","POST /api/v1/billing/create-checkout-session","POST /api/v1/billing/create-portal-session"],"admin":["GET /api/v1/admin/analytics/funnel","GET /api/v1/admin/analytics/activation","GET /api/v1/admin/analytics/health"]}}