Skip to main content
To check a PDF programmatically, upload it and ask for operation: "review". With no AI, Doconda returns the same PDF with the safe fixes applied (for example, a text layer on scanned pages) and a report with every problem left and which page it’s on.

Steps

  1. Store your API key in DOCONDA_API_KEY and install the SDK (pip install doconda or npm install @doconda/sdk).
  2. Upload the PDF with files.upload.
  3. Ask for the review, read the report and download the fixed PDF.

What it checks in a PDF

  • Fixed automatically: scanned pages with no text (pdf.no_text_layer, an invisible text layer is added so you can search and copy), missing title (pdf.title_missing) and missing language (pdf.language_missing).
  • Reported: fonts not embedded, blank pages, mixed page sizes, sideways text, images under 150 dpi, untagged PDF (accessibility), broken internal links, empty form fields and leftover comments.
  • In every format, an amount in words that doesn’t match the figure (money.words_mismatch).

What you get back

  • status: ready (no problems, or all fixed), ready_with_warnings (minor warnings) or needs_review (something is left that can’t be fixed without changing your content).
  • The report: ledger with each fix (applied or rejected, and why) and issues with what’s left, with its pages in location.pages.
  • It never changes your text or your values: a mistyped amount is flagged, not corrected.

Limits

  • Password-protected PDFs and files that aren’t the format they claim are rejected.
  • Whatever is removed for safety (actions on open, embedded files…) is listed in sanitized.removed.

FAQ

No. The review uses no AI.
Yes, with the same call. Each format has its own list of checks in Review.
Use extract: it returns the PDF as Markdown, with OCR for scanned pages.

Keep reading