API Errors
Use this page when a Public API request fails and you need the fastest path to the likely fix.
Start With The Status Code
401: auth header missing or invalid403: key is revoked, expired, inactive, or the account is not eligible409:Idempotency-Keypayload mismatch413: file or output package is too large422: malformed PDF or batch size/shape is unacceptable500: retry after checking delivery or server-side failure details
Common Fixes
BF_EXPORT_API_KEY_REQUIRED or BF_EXPORT_API_KEY_INVALID
- confirm the request uses
Authorization: Bearer <token> - confirm the token was copied exactly once from the create response
INVALID_IDEMPOTENCY_KEY or IDEMPOTENCY_KEY_PAYLOAD_MISMATCH
- send
Idempotency-Keyon create requests - generate a new idempotency key for a new logical request
- do not reuse a previous idempotency key for a changed payload
- use
X-Request-Idonly for tracing/support correlation - remember that create-side
429responses can still happen before replay lookup
Validation Errors
- confirm you uploaded
pdfanddoqlo_file - confirm you provided exactly one of
rows_jsonorcsv_file - if
.doqlovalidation fails, re-export the package from the web Bulk Fill editor and confirm the package itself is valid - static QR/barcode overlay issues are not reported as create-time schema
errors on the public API; they are skipped later and reported in
manifest.json - if the PDF cannot be opened, confirm it is a readable PDF and still within current size and page limits
- if row data is malformed, validate the JSON or CSV before resubmitting
- if the job completes but some rows are missing or incomplete, inspect
manifest.jsoninside the ZIP artifact for row-level warnings and errors - confirm the PDF is valid and within current size/page limits
Threshold Failures
- inspect
error.detailson the failed job envelope - compare
failed_row_percentagainst your submittedmax_failed_row_percent - remember the threshold counts failed rows, not skipped overlays inside a produced row
- no download artifact is exposed for a threshold-failed job
Download Errors
- if
DELIVERY_NOT_FOUND, the job may still be readable but the current delivery is no longer available - if
DELIVERY_TEMPORARILY_UNAVAILABLE, retry the download request later