SayPDF REST API

Ship PDF-to-Office, OCR, and invoice extraction in your product. Experience our lightning-fast API with zero risk. Try a free real conversion, test in sandbox, or start a 3-day free trial on any plan (Mini $1 included).

Bearer API keys Multipart uploads Webhooks & async Health & queue metrics
Same engine as the SayPDF web tools Paddle secure checkout X-Sandbox: true for zero-cost integration tests

Quick start

1

Create an account

Use Login in the header (Google or email). No subscription is required to create API keys.

2

Create an API key

Open Dashboard → API Keys → create a key and copy it once.

3

Call the API

Send Authorization: Bearer <your_key> with a multipart upload to POST /api/v1/convert. Poll status, then fetch the result URL.

4

Optional: sandbox

Add header X-Sandbox: true for mock responses that do not use credits—ideal for CI and local dev.

ZERO RISK

Try the real API before you pay

You do not need a paid plan to generate an API key. For production traffic you will need a subscription or credits—but you can validate quality first.

  • One free real conversion per API key and client IP every rolling 24 hours (not a fixed calendar midnight—think “about once per day” from your last free call).
  • Unlimited sandbox calls with X-Sandbox: true to exercise your integration without spending quota.
  • Web tools on saypdf.com stay free for manual tries; the API is billed separately.

Create your first API key (checklist)

  1. Click Login → sign in.
  2. Go to Dashboard.
  3. Open the API Keys section → Create → copy the secret (shown once).
  4. Run a sandbox request, then one real conversion to see end-to-end behavior.
  5. When you are ready, pick a plan or credits below—checkout opens on this page.

Authentication

API key

All /api/v1 endpoints expect:

Authorization: Bearer YOUR_API_KEY

Never expose keys in browsers or public repos.

Sandbox mode

Add:

X-Sandbox: true

Validates the request and returns a mock success response—no credits consumed.

API endpoints

POST

/api/v1/convert

Convert PDF or image. Usage is based on PDF pages processed.

Request

POST /api/v1/convert Content-Type: multipart/form-data Authorization: Bearer YOUR_API_KEY file: [binary] typeConvert: pdf_to_word lang: eng (optional) imageFormat: png (optional) webhookUrl: https://... (optional) clientReference: batch_001 (optional) priority: high (optional)

Response

{ "success": true, "fileId": "uuid", "url": "https://...", "previewUrl": "https://...", "pages": 10 }
GET

/api/v1/convert/:id/status

Poll job status using the fileId from the convert response.

GET /api/v1/convert/123e4567-e89b-12d3-a456-426614174000/status
GET

/api/v1/convert/:id/result

Download URL and final payload when processing completes.

GET

/api/v1/usage

Quota, usage, and credit balance for the authenticated account.

GET

/api/v1/health

Queue depth, workers, and latency hints for monitoring.

{ "status": "Optimal", "queue": { "waiting": 0, "active": 1 }, "averageProcessingTimeMs": 4200 }

Code examples

Node.js

const FormData = require('form-data'); const fs = require('fs'); const fetch = require('node-fetch'); const formData = new FormData(); formData.append('file', fs.createReadStream('document.pdf')); formData.append('typeConvert', 'pdf_to_word'); const response = await fetch('https://api.saypdf.com/api/v1/convert', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', ...formData.getHeaders() }, body: formData }); const result = await response.json(); console.log(result);

Python

import requests url = 'https://api.saypdf.com/api/v1/convert' headers = { 'Authorization': 'Bearer YOUR_API_KEY' } files = { 'file': open('document.pdf', 'rb') } data = { 'typeConvert': 'pdf_to_word' } response = requests.post(url, headers=headers, files=files, data=data) print(response.json())

cURL

curl -X POST https://api.saypdf.com/api/v1/convert \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "file=@document.pdf" \ -F "typeConvert=pdf_to_word"

Conversion types

These typeConvert values match the OpenAPI/Swagger schema for POST /api/v1/convert.

PDF → Office & documents

  • pdf_to_word
  • pdf_to_doc
  • pdf_to_excel
  • pdf_to_xls
  • pdf_to_ppt
  • pdf_to_pptx
  • pdf_to_rtf
  • pdf_to_odt
  • pdf_to_epub
  • pdf_to_fb2
  • pdf_to_csv
  • pdf_to_txt

PDF → image

Use optional imageFormat: png, jpg, or tiff (see Swagger).

  • pdf_to_png
  • pdf_to_jpg
  • pdf_to_tiff

OCR, text & invoices

  • image_to_text
  • handwriting_to_text
  • text_from_pdf
  • pdf_to_invoice
  • invoice_to_excel
  • image_to_invoice

PDF passwords

  • pdf_remove_password
  • pdf_add_password

Convert to PDF

Office documents, images, and web pages → PDF. Processed locally via LibreOffice / Puppeteer — no ABBYY required.

  • word_to_pdf
  • excel_to_pdf
  • ppt_to_pdf
  • rtf_to_pdf
  • odt_to_pdf
  • ods_to_pdf
  • odp_to_pdf
  • html_to_pdf
  • txt_to_pdf
  • image_to_pdf
  • svg_to_pdf
  • vsd_to_pdf
  • xps_to_pdf

API subscriptions

Choose a monthly plan and complete checkout here (same flow as Pricing). Log in if prompted.

Start testing in seconds. Cancel anytime.
Every subscription plan includes a 3-day free trial—including Mini ($1/month). Scale with confidence.
Mini
$1.00/month
  • 3,000 pages/month
  • 900 bonus credits/month (30% of pages)
  • 3-day free trial
  • All conversion types
  • Unlimited API keys
  • Email support
Basic
$5.00/month
  • 42,500 pages/month
  • 12,750 bonus credits/month (30% of pages)
  • All conversion types
  • Unlimited API keys
  • Email support
  • 3-day free trial
Starter
$9.99/month
  • 100,000 pages/month
  • 30,000 bonus credits/month (30% of pages)
  • All conversion types
  • Unlimited API keys
  • Email support
  • 3-day free trial
Risk-Free Trial
Business
$99.99/month
  • 2,000,000 pages/month
  • 600,000 bonus credits/month (30% of pages)
  • Unlimited API keys
  • Priority support
  • 3-day free trial

Pay-as-you-go credits

Credits never expire. Click a pack to pay via Paddle (log in if required). Full comparison: Pricing.

Note: Credit packs cost about 30% more per page than subscriptions—plans are the best value for steady volume.
4
$1
~67 pages*
9
$2
~150 pages*
23
$5
~380 pages*
288
$50
+20% bonus
~4,800 pages*
672
$100
+40% bonus
~11,200 pages*
3,840
$500
+60% bonus
~64,000 pages*

Credit usage (per page)

Basic conversions (PDF↔Office, →PDF) ~0.06 credits/page
OCR ~0.12 credits/page
Invoice / complex ~0.18 credits/page

*Basic rate applies to PDF-to-Office and Convert-to-PDF (Word/Excel/Image/HTML→PDF). For Convert-to-PDF, every 10 actual output pages = 1 billed page.

Error handling

{ "statusCode": 400, "message": "Error message", "error": "Bad Request" }
  • 400 — bad input or quota
  • 401 — missing/invalid key
  • 404 — unknown resource
  • 500 — server error

Support