Convert
POST /v1/convert — turn a flat PDF into a fillable AcroForm.
POST https://api.createafillablepdf.com/v1/convert
Send a PDF as multipart/form-data. Returns a fillable PDF (as a signed URL) and the detected
field schema.
Request
Content-Type: multipart/form-data
| Field | Required | Type | Description |
|---|---|---|---|
file | yes | file | The flat PDF to convert. Max 25 MB; max pages per file depends on your plan. |
detect | no | string | fields (default) for full detection, or fields_fast to skip the extra completeness pass. |
curl -X POST https://api.createafillablepdf.com/v1/convert \
-H "Authorization: Bearer sk_live_•••" \
-F "file=@applicant.pdf" \
-F "detect=fields"
Response 200
| Field | Type | Description |
|---|---|---|
status | string | converted on success. |
document_url | string | Signed URL to the fillable PDF (valid 24 hours). |
conversion_id | string | ID to fetch or fill later. |
fields | number | Number of fields detected. |
confidence | number | Average confidence (0–1). |
pages | number | Pages processed (and billed). |
ms | number | Processing time in milliseconds. |
schema | array | The detected fields (see Field types & schema). |
{
"status": "converted",
"document_url": "https://cdn.createafillablepdf.com/…/out.pdf",
"conversion_id": "c_123",
"fields": 23,
"confidence": 0.997,
"pages": 1,
"ms": 880,
"schema": [{ "name": "applicant_legal_name", "type": "text", "page": 0 }]
}
Errors
| Status | type | When |
|---|---|---|
| 400 | invalid_request | Missing file or malformed request. |
| 401 | authentication_error | Missing/invalid key. |
| 402 | quota_exceeded | Free plan out of included pages. |
| 415 | unsupported_file | Not a PDF, too large, or over your per-file page limit. |
| 429 | rate_limit_error | Too many requests this minute. |
| 502 | engine_error | The file couldn't be processed. |
See Errors for the full list.