Skip to main content

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 invalid
  • 403: key is revoked, expired, inactive, or the account is not eligible
  • 409: Idempotency-Key payload mismatch
  • 413: file or output package is too large
  • 422: malformed PDF or batch size/shape is unacceptable
  • 500: 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-Key on 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-Id only for tracing/support correlation
  • remember that create-side 429 responses can still happen before replay lookup

Validation Errors

  • confirm you uploaded pdf and doqlo_file
  • confirm you provided exactly one of rows_json or csv_file
  • if .doqlo validation 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.json inside the ZIP artifact for row-level warnings and errors
  • confirm the PDF is valid and within current size/page limits

Threshold Failures

  • inspect error.details on the failed job envelope
  • compare failed_row_percent against your submitted max_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