DocPro ยท Developers

PTAS DocPro API

Documents in, structured JSON with field-level confidence out. Real-time or batch, with webhooks for the rest.

Developer typing on a laptop with a code editor open on screen at a desk

Input

What you send: a document and its type

Two things are required. Everything else describes how your system wants to hear back.

Required

The document

A PDF, a scan, a phone photo or an email attachment, sent as your system received it. A multi-page file stays one document, so a line table that runs onto page two comes back as one table.

Required

Its type

Invoice, receipt, bank statement, KYC or identity document, purchase order, or a custom type defined during onboarding. The type tells DocPro which agent, schema and rules to apply.

Your choice

How you hear back

Wait for the record, poll for it, or have it sent to your system when it is final. A reference of your own can travel with the document, so the record matches up with the transaction that sent it.

Illustrative example: what one request carries

The documentRequired
Filemeridian_MC-2026-04871.pdf · 2 pages
Sent byYour AP application
The type you expectRequired
Document typeTax invoiceDeclared
Agent that runsInvoice Agent, your schema
How you hear backYour choice
Your referenceAP-2026-0913
DeliverySent to your system when finalCallback

Illustrative data. The file and its type are what DocPro needs; the rest describes how your system wants the answer. Field names for a live integration come with the technical reference issued with access.

The type matters more than it looks. It decides which fields DocPro looks for, which checks run and which thresholds apply. Classification still runs before a single field is read, so the type is settled from the page itself as well as from your request. A credit note sent in the invoice queue comes back as a credit note.

Output

What comes back: values, scores, checks and a status

The same two-page invoice as above, as your system receives it. Four parts make up every record, whatever the document type.

Part of the recordWhat it tells your system
Structured JSON One record per document. Dates as dates, amounts as numbers with a currency code, line items as an ordered array in printed order.
A confidence score per field A value between 0 and 1 on every field. Your threshold for each field, set during onboarding, decides what passes unattended.
Validation results Each check named with its result. A total that does not recompute comes back as a failed check, with the printed and recomputed figures side by side.
Review status Whether the record is final, which fields are held and why. On the final record, every field a person settled carries a marker.

Illustrative example: the record that comes back

FieldsTyped, each one scored
invoice_numberMC-2026-04871 · 0.99Clear
invoice_date2026-08-14 · 0.98Clear
total_amount270220.00 INR · 0.99Clear
lines[8].quantity6 · 0.71Below threshold
ValidationEach check named
Totals recompute14 lines + GST = grand totalPassed
Supplier GSTIN format06AAACM0000M1Z3Passed
Vendor masterV-1180Matched
Review statusRead this first
RecordNot final: one field with a reviewerIn review
Held field and reasonRow 9 quantity, handwritten amendmentHeld

Illustrative data. A record with a held field is a normal answer, not an error. Your system checks the review status before it acts on the values.

Read the review status before the values. A record can be complete and still not final: here, every field but one cleared its threshold, and the one that did not is named with its reason.

Calling patterns

Single, batch or callback

Pick the pattern that matches who is waiting. The extraction, the rules and the thresholds are identical in all three.

Single

One document, someone waiting

An employee submits an expense claim and the form fills in from the receipt. Your system sends one document and waits for the record. This suits a person at a screen and modest volume.

Batch

Many documents, nobody waiting

A month-end folder, a box of scanned bills, the backlog from an acquired entity. Each document becomes its own record with its own review status, so one unreadable page does not hold up the other four hundred.

Callback

Submit and carry on

Your system sends the document and moves on. When the record is final, including any review, DocPro sends it to an address you registered. Where your network does not accept inbound calls, your system polls for the record instead.

One company can run two of these at once. Its expense app calls DocPro while the employee waits, and its supplier invoices go in batches with a callback as each record becomes final. Both run against one schema per document type, so a receipt read at noon and one read in the overnight batch come back in the same shape.

The connection itself follows the conventions on our REST API and Webhooks pages, which apply to every PTAS AI product.

Review in an API flow

How review fits into an API flow

A held field is a state the record passes through. Your integration should expect it from the first day.

Illustrative example: one invoice, submitted to final

What happenedStatusWho acted
Invoice sent with its type and your referenceReceivedYour AP application
Classified, read, scored and validatedIn reviewDocPro
Row 9 quantity held: handwritten, scored 0.71In reviewReview queue
Reviewer confirms 6 against the delivery noteIn reviewAP reviewer
Final record sent, row 9 marked as reviewedFinalDocPro to your system
One final record Your system acts once, on the final record. There are never two versions to reconcile.

Illustrative data. Review adds waiting time, not a second integration: the reviewed record arrives the same way an unattended one would.

When a field scores below its threshold or fails a check, DocPro holds that field and sends it to the review queue with the reason attached. The reviewer sees the page and the field in doubt, with the reason beside it. The correction is logged against the field and the reviewer, and the record continues.

For the system on the other end, this means one rule: act on final records only. A callback integration gets that for free, because the record is sent when it is final. A polling integration reads the status and comes back later. Neither needs its own review screen, because the queue is part of DocPro.

Review is a control you configure, and the thresholds decide how often it happens. Set them high on the fields that move money and the queue shows you those fields whenever the page is unclear. That is the trade we would recommend.

Limits

What this page leaves out, and what the API does not do

There are no endpoint addresses, authentication details or rate limits here. They differ between a cloud deployment, a private cloud account and an on-premise installation, and capacity is sized to your volume during onboarding. Publishing one set would describe an environment you may never use. You receive the reference for yours with access.

The API reads documents and returns records. It does not approve an invoice, match it to a purchase order or post it to a ledger by itself. Those steps belong to your own workflow, to an integration scoped during assessment, or to FinSuite.

The public DocPro test is not the API. It is a web page that reads one invoice or UPI payment receipt and shows the fields beside the image, so you can judge the reading before any integration work starts.

Access

How to get access

API access is arranged per customer, after the documents and the deployment are scoped. Tell us what you plan to send and we will come back with the questions that scope it.

Request API access
  1. 01

    Tell us what you will send

    Document types, rough monthly volume, where the documents come from and which system needs the record. The contact form is enough to start.

  2. 02

    Scope it with us

    Schema and thresholds per document type, the calling pattern, who works the review queue, and the deployment model. Every DocPro rollout goes through this onboarding.

  3. 03

    Receive access

    Credentials and the technical reference for your environment, issued once the scope is agreed. Testing starts on your own sample documents.

FAQ

Questions developers and architects ask

Can we try the API without talking to anyone?

Not the API itself. Access is arranged per customer, because the schema, the thresholds and the deployment are set for your documents first. What you can try today is the public DocPro test, which reads one invoice or UPI payment receipt in the browser and lays the fields beside the page. It does not return confidence scores or validation results.

Why is there no endpoint list or rate limit on this page?

Both depend on your deployment. A cloud deployment, a private cloud account and an on-premise installation have different addresses and different capacity, and throughput is sized to your volume during onboarding. The technical reference you receive with access describes your environment.

Is the confidence score for the document or for each field?

For each field. The invoice number can score 0.99 while a handwritten quantity on row nine scores 0.71, and the record says so. Thresholds are set per field and per document type, so a grand total can require a higher score than a remarks line before it passes unattended.

What does our system receive when a field needs review?

A record whose status says it is in review, with the held fields and the reason for each. When the reviewer settles them in the DocPro queue, the final record is delivered the same way an unattended one would be, with a marker on every field a person touched. Your system acts on that final record and never has to reconcile two versions.

Can one integration handle real-time and batch?

Yes. One document while someone waits and a folder of thousands overnight go through the same extraction, rules and thresholds. What changes is how your system sends the work and how it hears back.

Which document types can the API read?

Those the six DocPro agents cover: invoices, receipts, bank statements, KYC and identity documents, purchase orders, and custom document types defined during onboarding. A custom type is sent the same way as a standard one; only the schema behind it differs.

Next step

Send the documents your integration will actually see

Try one in the public test now, or bring a sample set to a demo and we will walk through the record your system would receive for each.