Getting Started
Go from zero to your first PDF conversion in under 5 minutes.
Create your account
Sign up for a free PDFPipe account at pdfpipe.dev/signup. The free tier includes 10 requests per month with JSON and text output formats - no credit card required.
Generate an API key
Once logged in, go to Dashboard → API Keys and click Create Key. Give it a name (e.g. "My first key") and optionally restrict it to specific IP addresses.
Copy the key immediately - it starts with pk_live_ and is only shown once. You'll use it in the Authorization header of every API request.
Make your first request
Send a POST request to the convert endpoint with the URL of any publicly accessible PDF:
curl -X POST https://api.pdfpipe.dev/v1/convert \
-H "Authorization: Bearer pk_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/report.pdf",
"format": "json"
}'url(required) - the HTTP/HTTPS URL of the PDFformat- output format: json, text, markdown, xml, csv, base64, binary, png, jpg, webp (default: json)type- force detection: "inline" or "attachment" (omit to auto-detect)async- set to true to always process asynchronously (default: false)returnMethod- "file" (presignedresultUrl, default) or "inline" (embed converted output in the JSON body)timeout- optional 1–60: max seconds to try synchronous processing before the job is queued (async)
Handle the response
For small files (<10 MB), you'll get a synchronous 200 response with the result URL:
{
"requestId": "req_01J9X7K2M...",
"status": "complete",
"format": "json",
"pagesProcessed": 3,
"creditsUsed": 1,
"resultUrl": "https://pdfpipe-results.s3...",
"expiresAt": "2026-02-23T12:00:00.000Z"
}Fetch the resultUrl to download the converted output. The URL is a time-limited presigned link.
With returnMethod: "inline", a successful sync response includes content, contentType, and (for binary image/encoded formats) contentEncoding: "base64". If inline delivery hits a size limit, the API may fall back to a file URL and set returnMethodFallback with returnMethodFallbackReason.
{
"requestId": "req_01J9X7K2M...",
"status": "complete",
"format": "json",
"pagesProcessed": 3,
"creditsUsed": 1,
"returnMethod": "inline",
"contentType": "application/json",
"content": { "pages": [ { "page": 1, "text": "..." } ] },
"returnMethodFallback": false
}For larger files or when async: true, you'll get a 202 response with a poll URL:
{
"requestId": "req_01J9X7K2M...",
"status": "pending",
"pollUrl": "/v1/status/req_01J9X7K2M..."
}Poll GET /v1/status/:requestId until the status changes to complete. Add ?returnMethod=inline to receive content and contentType in the status payload when the job finishes:
{
"requestId": "req_01J9X7K2M...",
"status": "complete",
"format": "json",
"pagesProcessed": 3,
"creditsUsed": 1,
"resultUrl": "https://pdfpipe-results.s3...",
"expiresAt": "2026-02-23T12:00:00.000Z",
"processingDurationMs": 4230
}Download the result
The resultUrl is a presigned S3 URL. Simply fetch it with any HTTP client - no authentication needed. The link expires based on your tier (1 hour for Free, up to 7 days for Pro, 30 days for Business). Result access is not extended beyond your plan's retention window from request creation.
Dashboard AI Help (paid plans)
On Starter, Pro, or Business, open Dashboard → AI Help for a streaming assistant (Anthropic Claude) grounded in PDFPipe documentation. Ask about endpoints, formats, webhooks, batch jobs, and integrations. It is not on the Free tier.
Fair use: 50 questions per user per calendar day (UTC). Do not paste API keys into the chat. Upgrade from Free anytime on the pricing page.
What's next?
- API Reference - full endpoint documentation with request/response schemas
- Output Formats - detailed docs for all 10 output formats
- Guides - integrate with Power Automate, Zapier, Make, and more
- Dashboard AI Help - paid plans: Claude assistant in the dashboard (see step 6 above)