Quickstart
Convert your first flat PDF in two minutes.
1. Get an API key
Create a free account, open the dashboard, and create a key. You'll see it
once — copy it. Keys look like sk_live_… (or sk_test_… for testing).
2. Convert a PDF
Send the file as multipart form data to POST /v1/convert.
curl -X POST https://api.createafillablepdf.com/v1/convert \
-H "Authorization: Bearer sk_live_•••" \
-F "file=@applicant.pdf" \
-F "detect=fields"
// Node 18+ (official npm package coming soon — this uses the built-in fetch)
import { readFileSync } from "node:fs";
const form = new FormData();
form.append("file", new Blob([readFileSync("applicant.pdf")], { type: "application/pdf" }), "applicant.pdf");
form.append("detect", "fields");
const res = await fetch("https://api.createafillablepdf.com/v1/convert", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CAFP_KEY}` },
body: form,
});
const result = await res.json();
console.log(result.fields, result.document_url);
# pip install requests (official PyPI package coming soon)
import os, requests
with open("applicant.pdf", "rb") as f:
res = requests.post(
"https://api.createafillablepdf.com/v1/convert",
headers={"Authorization": f"Bearer {os.environ['CAFP_KEY']}"},
files={"file": ("applicant.pdf", f, "application/pdf")},
data={"detect": "fields"},
)
result = res.json()
print(result["fields"], result["document_url"])
3. Read the response
{
"status": "converted",
"document_url": "https://cdn.createafillablepdf.com/…/out.pdf",
"conversion_id": "c_123",
"fields": 23,
"confidence": 0.997,
"ms": 880,
"pages": 1,
"schema": [
{ "name": "applicant_legal_name", "type": "text", "page": 0 },
{ "name": "is_us_citizen", "type": "checkbox", "page": 0 }
]
}
Download the fillable PDF from document_url (a signed link, valid 24 hours), or store the
schema and fill it with values later.