API Overview
Use this page to understand what the Bulk Fill Public API is, why it behaves the way it does, and how it fits with the Doqlo web editor.
What The Public API Is
The Bulk Fill Public API is an execution API. You prepare the layout and field
mapping in the web Bulk Fill editor, export a .doqlo package, then submit
that package to the API with a source PDF, row data, and execution options.
The API is not a second authoring surface. It does not accept field placements or mapping definitions directly, and it does not replace the editor workflow that creates the package you execute.
What .doqlo Is For
.doqlo is the reusable configuration package exported from the Bulk Fill web
editor. It carries the layout, field mapping, and execution configuration that
the API runs against your incoming data.
For public execution, .doqlo is:
- a sealed Doqlo-produced package
- reusable across similar PDFs where the same placements still make sense
- not a raw editor-state dump
- not a promise that one exact PDF fingerprint is the only valid input
Why The API Is Flexible
Real-world document operations are rarely perfectly uniform. A PDF may keep the same practical layout while changing minor metadata, pagination details, or other compatible structure.
Doqlo is designed to stay useful in those cases:
- package and input validation stay strict
- accepted jobs execute best-effort
- some placements may be skipped instead of failing the whole job
- rows can succeed, partially succeed, or fail independently
manifest.jsonexplains what happened
Static QR/barcode overlays are a narrow defensive exception on the public API:
if an uploaded package still contains empty, invalid, or malformed static code
overlay data, those overlays are skipped and reported in manifest.json
instead of failing the accepted job.
That flexibility is a product feature. It exists to help teams keep producing usable output while staying explicit about partial results.
Read Reuse .doqlo Project Files Across PDFs for the product rationale and practical examples behind this flexibility.
Threshold And Billing At A Glance
Every request must include max_failed_row_percent. That number is not a
hidden default or a low-level tuning flag. It is your explicit acceptance
boundary for failed rows.
Two rules matter most:
- if the job stays within your declared threshold, it completes and uses normal input-row quota semantics
- if the job exceeds your declared threshold, it fails, no output is delivered, and it does not consume quota
That means threshold control does not turn the API into a pay-only-for-produced-files model. It lets you decide when partial loss is acceptable.
How Results Stay Transparent
Completed jobs download a ZIP artifact that contains:
- one produced row PDF for each
successorpartialrow manifest.jsonwith top-level diagnostics, row-level status, warning details, and aggregate counts
If a job fails because it exceeded your threshold, there is no ZIP artifact. Instead, the failed job response and any failed webhook surface the threshold diagnostics directly.
When To Use The API Versus The Web App
Use the Public API when:
- another system needs to trigger exports
- you want server-to-server delivery
- you need polling or webhook-based job handling
- you want to reuse editor-authored packages in operational workflows
Use the Bulk Fill web app when:
- a person is placing fields and previewing rows visually
- you want to iterate on the layout before automating it
- you only need occasional manual exports
High-Level Flow
- Create the layout in the web Bulk Fill editor.
- Export the
.doqlopackage from that editor workflow. - Submit the package, the source PDF, row data, and your threshold.
- Poll the job or wait for a webhook.
- Download the ZIP and inspect
manifest.json, or inspect failed-job diagnostics if the threshold was exceeded.
Read Next
- Use Doqlo with Make if you want a no-code automation path that uses Make instead of calling the Public API directly
- Use Doqlo with n8n if you want a no-code automation path that uses standard n8n workflow nodes instead of calling the Public API directly
- Use Doqlo with Zapier if you want a no-code automation path that uses Zapier instead of calling the Public API directly
- API Quickstart for the end-to-end workflow and cURL examples
- Manifest And Diagnostics for how to read
manifest.json - Billing And Quota for requested vs produced vs billed semantics
- Authentication for API key rules and auth failures
- Idempotency for create replay and tracing behavior
- Job Lifecycle for status transitions and handling
- Webhooks for terminal event delivery and signature verification
- API Reference for endpoint, field, and schema details
- Plans & Limits for plan eligibility and current limits