AdemeroHelp

Integrate your own system with the Paige API

Create a Paige API key, call the same REST API the Paige web app uses, and pull finished documents, their field values, and their PDFs into your own database or application — or push files in for processing.

Integrators1 hourVerified 2026-09-05

Before you begin

  • A Paige user account with access to the company and scan job you'll read from
  • A developer, or a tool that can make HTTPS requests with a bearer token (curl, Postman, Power Automate's HTTP action, a script)

At the end of this guide you'll have an API key, a working request that lists the finished documents in a scan job, and the two follow-up requests that fetch each document's field values and PDF — the three calls every custom integration is built from.

The API is the same one the Paige web app uses, so anything you can see in Paige you can read programmatically. The reference is published as OpenAPI: interactive docs at https://client-api.paige.app/api/v1/docs, and the machine-readable spec at https://client-api.paige.app/api/v1/openapi.json (or openapi.yaml). Point a code generator at the spec and you get a typed client for free.

Export or API: which one do you want?

You want to…Use
Drop finished documents into a folder, a DMS, or an accounting app without writing codeExport — see the Zapier, Make, and Power Automate guide
Query Paige from your own application on your own scheduleThe API
Send files into Paige from another systemThe API (or Folder Monitor if the other system can write to a Windows folder)
Both — export the PDFs by SFTP, but read the data liveBoth. They don't conflict.

Create an API key

  1. In Paige, open the avatar menu at the top right and choose API Keys.

  1. Enter a name in Enter API key name — name it for the system that will use it, like ERP sync — and click Create API Key.

  1. Copy the key immediately and store it in your application's secret store. The page means it: "Make sure to copy your API key now. You won't be able to see it again!" A lost key isn't a crisis — create a new one and delete the old.

Figure

The API Keys page with one named key listed and the create form above it

The key acts as the user who created it: it can read and change exactly what that user can, in that user's current company. Each user can hold up to 10 keys. For an integration, create the key from a dedicated Paige user with the narrowest role that can see the scan job — not from an administrator's personal account — so you can retire it without touching anyone's login.

Authenticate

Send the key as a bearer token on every request:

Authorization: Bearer <your API key>

Check it works:

bash
curl -H "Authorization: Bearer YOUR_KEY" https://client-api.paige.app/api/v1/user/profile

What you should see: a JSON object describing the key's user, including the current company. If you get 401, the key is wrong or was deleted.

Find your IDs

Every document call is scoped by company and scan job.

  1. Company ID: GET /api/v1/user/companies lists the companies the key's user belongs to, with each company's ID.

  2. Scan job ID: GET /api/v1/companies/{companyId}/scanJobs lists the scan jobs the user can see. Each scan job in the response also carries its document types and their fields, with the field IDs you'll need to name values later — save this response.

The three calls that make an integration

1. List finished documents

GET /api/v1/companies/{companyId}/scanJobs/{scanJobId}/documentPages

Returns the first pages of the documents in the scan job — in Paige a document is identified by its first page. Each page in the response carries what you need to decide and to fetch more:

FieldUse it for
ID, BatchIDThe pair every later call needs
DocumentTypeIDWhich document type the AI (or a person) assigned
DocumentReviewedtrue once a person has reviewed it in Paige
DocumentExportedtrue once any Paige export has sent it
DocumentPageCountHow many pages the document has
WorkflowStageWhere it is in processing; wait for the export stage before you take it

Results are paged: pass pageSize (up to 100) and keep sending back the returned Cursor until it comes back empty. Record the page IDs you've processed so you never import a document twice.

2. Get a document's field values

GET /api/v1/companies/{companyId}/scanJobs/{scanJobId}/batches/{batchId}/pages/{pageId}/fieldValues

Returns every field value on the document. Each value has a fieldId, the value as extracted or corrected (always a string), a confidence from 0 to 1, and, for line-item fields, lineItemColumnId and lineItemRow. Field IDs map to the names you gave them in the scan job's document type — that's the mapping you saved from the scan jobs call.

3. Get the document's pages and PDF

GET /api/v1/companies/{companyId}/scanJobs/{scanJobId}/batches/{batchId}/documentPages/{startPageId}

Lists the pages that make up the document. Then, per batch:

EndpointReturns
…/batches/{batchId}/pageImagesSigned URLs for the page images
…/batches/{batchId}/pageOCR_PDFSigned URLs for the per-page OCR text layers
…/batches/{batchId}/pageImages_300dpi_bw_tiffSigned URLs for 300 dpi black-and-white TIFFs, for systems that want archival TIFF

Signed URLs are temporary; download promptly and don't store the URL.

Note

If all you need is a finished, searchable PDF per document, don't rebuild it from pages — turn on SFTP export for the scan job and let Paige write the PDF, then use the API only for the data. The JSON file Paige writes next to each PDF contains the same field values as call 2.

Pushing documents into Paige

The API can also feed Paige:

  1. POST /api/v1/companies/{companyId}/scanJobs/{scanJobId}/batches creates a batch.

  2. GET …/batches/{batchId}/newPages reserves a new page and returns a SignedURL to upload the image or file to, plus the ContentType to send. Upload the file to that URL, then PUT …/newPages/{pageId} to finalize it and mark it as having a file.

  3. Paige processes the batch exactly as if it had been scanned: separation, document types, field extraction, then export.

For most systems, though, Folder Monitor is the easier way in — it does these calls for you for any file that lands in a Windows folder.

Polling, not webhooks

Paige does not send webhooks. An integration polls: list the documents, compare against what you've already taken, fetch the new ones. Every few minutes is plenty; documents take minutes to process anyway. If you'd rather be pushed, use SFTP export and let your SFTP server or an automation platform fire on the new file.

When it doesn't work

ResponseMeaning
401Missing or invalid key. Keys deleted on the API Keys page stop working immediately.
403The key's user isn't a user of that scan job. Add them under Settings > the scan job > Users.
404 on a documentWrong batch or page ID pairing — a page ID is only valid inside its batch.
Empty list from documentPagesThe scan job has no finished documents yet, or you're filtering them all out.

If you're stuck, contact Ademero support with the request path, the status code, and the time of the request — never the key itself.