Upload a fillable PDF, auto-detect all fields, submit values as JSON, and download the completed form. Works with Python, JavaScript, cURL, Go, Ruby, and any language that speaks HTTP.
"I was never sure if my IRS forms like W-9 were filled correctly. Now, I can complete the forms accurately without any external help."Sarah Mitchell, Operations Manager
Pre-configured fillable PDF templates for the most common forms. Upload your own or use one of ours.
Three API calls. Upload your template, detect fields, submit values as JSON, and download the filled PDF.
Copy any example below and run it. Replace the API key with your own from the dashboard.
# Step 1: upload the fillable PDF, get a form_id back curl -X POST https://docuqueue.com/api/v1/forms/upload \ -H "api-key: YOUR_API_KEY" \ -F "file=@w9-form.pdf" # Step 2: fill it — returns the filled PDF bytes directly curl -X POST https://docuqueue.com/api/v1/forms/{form_id}/fill \ -H "api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"data": {"name": "Jane Smith", "tax_id": "123-45-6789"}}' \ -o filled-w9.pdf
import requests # Step 1: upload the fillable PDF form = requests.post( "https://docuqueue.com/api/v1/forms/upload", headers={"api-key": "YOUR_API_KEY"}, files={"file": open("w9-form.pdf", "rb")}, ).json() form_id = form["id"] # Step 2: fill it — response is the filled PDF bytes r = requests.post( f"https://docuqueue.com/api/v1/forms/{form_id}/fill", headers={"api-key": "YOUR_API_KEY"}, json={"data": {"name": "Jane Smith", "tax_id": "123-45-6789"}}, ) with open("filled-w9.pdf", "wb") as f: f.write(r.content)
# Step 1 — POST /api/v1/forms/upload returns: { "id": "a1b2c3d4-...", "name": "w9-form.pdf", "field_count": 12, "method": "pdf_form", "fields": [ {"name": "topmostSubform[0].Page1[0].f1_01[0]", "type": "TextField", "page": 0}, {"name": "topmostSubform[0].Page1[0].c1_01[0]", "type": "Checkbox", "page": 0} ] } # Step 2 — POST /api/v1/forms/{form_id}/fill returns the filled PDF bytes # (Content-Type: application/pdf, Content-Disposition: attachment)
Full API reference at /redoc. Batch fill up to 50 forms per request by POSTing a JSON array to the fill-batch endpoint.
Upload any fillable PDF. The API detects field names, types, positions, and confidence scores. No manual mapping needed.
Accepts alphanumeric input. Auto-validates format.
Masked input with format validation (XXX-XX-XXXX).
Signature field with timestamp and audit trail.
Boolean toggle. Supports single and group selections.
Predefined options. Validates against allowed values.
Date picker with format validation (MM/DD/YYYY).
The API handles most fillable PDFs out of the box. Here is what to expect with different form types.
Upload returns every field's name, type, and page (TextField, Checkbox, ChoiceField) before you fill anything, so you can map your data to real field names.
Send keys that are either the raw field names or human-friendly aliases; the filler matches them to the detected AcroForm fields.
If a batch record has no recognized fields, the response reports it by index instead of failing the whole batch.
Form filling is synchronous: the filled PDF comes back in the response. Webhook callbacks apply to the document-generation endpoint, not the form-fill endpoints.
// Webhook payload from POST /api/v1/create-document (if callback_url is set) { "pdf_url": "https://docuqueue.com/api/v1/download/{job_id}", "job_id": "job_abc123", "record_id": null, "status": "completed" }
The /fill and /fill-batch endpoints are synchronous — the filled PDF(s) come back in the response. No webhook needed; just handle the response.
The async document-generation endpoint (/api/v1/create-document) accepts an optional callback_url and POSTs the payload above to your server when the document is ready.
DocuQueue integrates with Claude, Cursor, ChatGPT, and other AI agents via MCP (Model Context Protocol). Let your AI detect fields, fill forms, and route documents through natural language.
Your agent can upload a PDF template, detect all fields, fill them with data from your systems, and download the completed form. No code required, just conversation.
// MCP config for Claude Desktop { "mcpServers": { "docuqueue": { "command": "npx", "args": [ "-y", "@docuqueue/mcp-server" ], "env": { "DOCUQUEUE_API_KEY": "your_api_key" } } } }
// Then talk to your agent: "Fill the W-9 form for Jane Smith, SSN 123-45-6789, and download it" // The agent will: // 1. Upload your W-9 template // 2. Detect all 12 fields // 3. Fill name, SSN, date // 4. Return the completed PDF
No software to install. No complex setup. Just upload, fill, and download.
Upload any PDF and the API detects every fillable field automatically. Text fields, checkboxes, radio buttons, dropdowns, and signatures. Zero manual mapping.
Native AcroForm PDFs: government forms (W-9, W-4, I-9, 1099), contracts, leases, and insurance forms. Text, checkbox, radio, and dropdown fields are auto-detected and filled.
Fill up to 50 records per request via the fill-batch endpoint — one filled PDF per record, 1 credit each. Loop through 50-record chunks for larger runs.
REST API works with Python, JavaScript, Go, Ruby, PHP, cURL, and any HTTP client. No SDK required. Just POST JSON.
Get notified when documents are processed. Connect to CI/CD pipelines, automation workflows, and backend systems for async PDF generation.
All data encrypted at rest and in transit. Filled PDFs deleted immediately after processing. GDPR compliant. Bank-level encryption. API keys for every request.
Teams across every industry use DocuQueue to automate document workflows at scale.
Start free. Pay only when you need more volume.
25 free credits. Fill up to 50 forms. No credit card required. Perfect for testing the API and small projects.
$9/month for 250 credits. Batch processing, template fill, form filling. Ideal for growing teams.
Custom volume. Dedicated infrastructure. SLA guarantees. Contact sales for high-throughput document automation.
POST a JSON array of 1–50 records to the fill-batch endpoint. Each record is matched against the template's auto-detected AcroForm fields and produces one filled PDF, at 1 credit per record. The filled PDFs come back in the response. For larger runs, loop through 50-record chunks.
The fill-batch endpoint takes a JSON array of records, fills each one against your template's AcroForm fields, and returns the filled PDFs in the same response. Trigger it from a nightly cron job, your CRM, or your HR system — anything that can POST JSON. Flat PDFs without form fields (scans or images) need OCR or a template first; the filler works on native AcroForm fields.
# Step 1: upload the fillable PDF once, keep the form_id curl -X POST https://docuqueue.com/api/v1/forms/upload \ -H "api-key: YOUR_API_KEY" \ -F "file=@w9-form.pdf" # Step 2: batch-fill up to 50 records in one call curl -X POST https://docuqueue.com/api/v1/forms/{form_id}/fill-batch \ -H "api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "records": [ {"name": "Acme Corp", "tax_id": "12-3456789"}, {"name": "Globex LLC", "tax_id": "98-7654321"} ] }'
The fill-batch call is synchronous: the response carries the filled PDFs, the total count, and a message. Records with no recognized fields are reported by index instead of failing the whole batch.
// Response from POST /api/v1/forms/{form_id}/fill-batch { "forms": [ {"id": "...", "file_size": 12345, "r2_key": "forms/filled/....pdf"}, {"id": "...", "file_size": 12389, "r2_key": "forms/filled/....pdf"} ], "total": 2, "message": "Batch fill complete. 2 filled, 0 errors." }
Key endpoints for form filling and batch processing. See the full API documentation for request schemas, rate limits, and error codes.
| Endpoint | Method | Description |
|---|---|---|
| /api/v1/forms/upload | POST | Upload template, auto-detect fields |
| /api/v1/forms/{form_id}/fill | POST | Fill a single form (returns PDF bytes) |
| /api/v1/forms/{form_id}/fill-batch | POST | Batch fill up to 50 records |
| /api/v1/status/{job_id} | GET | Check job status |
| /api/v1/download/{job_id} | GET | Download completed PDF |
How DocuQueue stacks up against other PDF form filling solutions for developers.
| Feature | DocuQueue | Anvil | Nutrient | Instafill |
|---|---|---|---|---|
| Auto-detect fields | Yes | Yes | Yes | Yes |
| Batch processing | 50/request | Limited | Enterprise | No |
| MCP server | Yes | No | No | No |
| Free tier | 25 credits | 14 days | No | No |
| Starting price | $9/mo | $0 + usage | Enterprise | $29/mo |
| Setup time | 2 min | 5 min | Hours | 5 min |
| Webhooks | Built-in | Yes | Built-in | No |
Why DocuQueue? Most PDF form filling APIs specialize in one area. DocuQueue combines auto-detection, batch processing, MCP integration, and a $9/mo starter plan in a single managed API. No Docker, no infrastructure, no per-document fees.
callback_url is available on the async template/convert endpoints if you're generating documents from a queue.)
For a comparison of PDF APIs, see our best PDF generation APIs guide.
Written by Arun, Founder of DocuQueue