Klippa DocHorizon
Document ProcessingKlippa DocHorizon, now presented as Doxis AI.dp, extracts structured data from invoices, receipts, identity documents, and bank statements. Agents capture documents with pretrained or custom models, prompt for their own fields, manipulate files, and route results to a human reviewer before release.
What This Integration Enables
Klippa DocHorizon, which the vendor now presents as Doxis AI.dp, takes a different position from most extraction platforms: you do not build an extractor, you pick a model. Financial reads invoices and receipts, Identity reads identity documents, Salary Slip and Bank Statement read their own document types, and Generic reads anything without a fixed schema. When the pretrained set does not cover a document, Prompt Builder holds a prompt-driven extraction of your own and Model Builder holds a trained model, both addressed by slug and both listed through the same connector. Get Capture Model Schema returns exactly what a model produces, so a flow can be built against real field names rather than against a guess, and List Capture Presets shows the saved configurations that narrow or extend a base model.
Around that sits a document toolkit that does the preparation: merging, splitting by page range, rendering pages as images at whatever sizes you need, and converting mixed incoming formats into one type before any of them are read. Storage matters more here than it looks, because Upload File To Storage returns a file id that every other operation accepts in place of the file, so a document that has to meet three models is sent once and referenced three times. Klippa can also route an extraction to its own reviewer before releasing it, and a job in that state reports back as hitl. FlowRunner treats that as one input among several rather than as the whole answer, because Orchestration as a Service is about where a decision belongs in the process, not about which vendor happens to own the review screen.
Without FlowRunner
With FlowRunner
Use Case Scenarios
-
Inbox to ledger without a keying step
Supplier invoices arrive as attachments in Gmail in every format a supplier might use. Convert Document normalizes them to PDF, Upload File To Storage puts each one in Klippa storage and hands back a file id, and Capture Document Async queues each with the Financial model rather than holding a request open. The agent polls Get Capture Job Status until done, reads the fields with Get Capture Job Result, and posts amounts, tax, dates and line items into Xero or Acumatica with the source file attached to the bill. A digest of what posted and what did not goes to Slack. Get Usage Statistics runs on a schedule so the finance team sees what the pipeline is spending while the month is still open.
-
One document, several questions
An onboarding packet contains a salary slip, a bank statement and an identity document, and each one needs a different model. Rather than sending the content three times, the agent calls Upload File To Storage once per document and reuses the file ids. Get Capture Model Schema is read first so the flow knows the exact field names each model returns, and List Enabled Models confirms which models the project may actually call, since a model that is not enabled is refused before a request is spent. Capture Document To Spreadsheet handles the case where the output is going to a person rather than to a system, returning the extracted data as a spreadsheet instead of JSON. Where the project is hosted matters here: Klippa serves a default host and a German one, and a project exists in one region only, which is worth setting deliberately when the documents carry personal data.
-
When Klippa's own reviewer says no
Capture Document Async can carry a Human in the Loop configuration, which routes the extracted data to a Klippa reviewer before it is released. A job in that state reports hitl, and when the reviewer refuses it the job reports rejected with the reason recorded alongside it. The agent reads both, and instead of retrying blindly it acts on the reason. A poor scan goes back to the supplier for a better copy. A wrong document type is rerouted to the model that should have read it. A genuine dispute goes to the AP lead with the rejection text quoted. Get Capture Job Logs is where a job that reached error explains itself, so failures produce a cause rather than a retry loop. One detail governs all of this: a job that reaches closed has had its data purged from Klippa servers, and Cancel Capture Job removes a job and its data too, so the flow reads the result before it does either.
Human-in-Loop Highlight
Klippa treats several files sent in one capture call as pages of the same document and returns a single result. That is exactly right for a two-page invoice and exactly wrong for a batch scan cut in the wrong place. A split boundary that is one page off does not produce an error: the last page of invoice seven joins invoice eight, one blended record comes back carrying two suppliers and a total that belongs to neither, and every automated check it faces passes, because it is a well-formed result. Every capture is metered per page, so rerunning the batch spends again. FlowRunner's human-in-the-loop step therefore lands before the split rather than after the extraction. The agent reads the batch with Get Document Info, renders every page with Render Document, proposes the boundaries, and posts to the finance channel: "Batch scan 2261, 46 pages, 11 invoices proposed. Pages 22 to 24 read as either one invoice with a continuation sheet or two invoices from the same supplier. Confirm the split, or mark 22 to 24 for manual handling." The AP lead answers from a contact sheet in about the time it takes to scroll it, and only then does Split Document run and the metered captures begin.
Agent Capabilities
27 actionsDocument Toolkit
5- Get Document Info Returns what Klippa can tell about a document without extracting anything from it: content type, metadata, the dimensions of every page, and the permissions the file carries. A cheap first step for deciding how to route a document.
- Merge Documents Merges several documents into one file in the order given, optionally taking only selected page ranges from each. The result comes back as content or is written into Klippa storage for reuse by file id.
- Split Document Splits one document into several files by page range, so a single call can cut an invoice batch into one file per invoice. Each range produces its own file.
- Render Document Renders pages as images at the sizes given, and several sizes can be produced in one call. The operation behind a contact sheet a person can scan quickly.
- Convert Document Converts a document into a PDF or a PNG. Used to normalize mixed incoming formats into one type before anything reads them.
Storage
2- Upload File To Storage Uploads a file and returns the file id that every other operation accepts in place of the file itself. Upload once and reference the id when the same document has to meet several models.
- Get Storage File Returns a file previously uploaded to Klippa storage, by its file id.
Document Capturing
15- Capture Document Extracts structured data and waits for the result. The model chosen decides what is extracted, from the pretrained Financial, Identity, Salary Slip and Bank Statement models through Generic, and on to Prompt Builder and Model Builder for configurations and models of your own.
- Capture Document Async Queues a document for extraction and returns a job id immediately instead of holding the request open. A Human in the Loop configuration can be attached, which routes the result to a reviewer before release, and a webhook URL can be supplied for the callback.
- Capture Document To Spreadsheet Runs the Generic model over a document and returns the extracted data as a spreadsheet rather than as JSON. Used when the output is going to a person rather than to another system.
- List Capture Jobs Lists the asynchronous capture jobs of one model, newest first, optionally filtered by status, with paging data reporting the total.
- Get Capture Job Status Returns the state of one job: in_queue, processing, hitl while it waits for a reviewer, done, error, rejected, or closed once the data has been purged. Review details and any rejection reason come back with it.
- Get Capture Job Result Returns the extracted data of a finished job. Read it once the status reports done, and read it before anything moves the job toward closed.
- Get Capture Job Logs Returns the processing log of one job. This is where a job in the error state explains itself, so it is the first thing to read when a capture fails.
- Cancel Capture Job Cancels a job that has not finished, or removes one that has. The job and its data are gone afterwards, so fetch the result first if it is still wanted.
- Get Capture Model Schema Returns the JSON schema of what a capture model produces, so a flow can be built against the exact field names it will receive.
- List Capture Presets Lists the saved presets of a capture model, each with the components it turns on. A preset slug replaces spelling out a configuration on every call.
- Get Capture Preset Schema Returns the JSON schema produced by one preset. A preset can narrow or extend the base model, so this is the schema to build against when one is in use.
- List Enabled Models Lists the capture models enabled on the project. A model that is not enabled cannot be called, so this is the first thing to check when a capture is refused.
- List Prompt Builder Configurations Lists the Prompt Builder configurations on the project, each a prompt-driven extraction of your own addressed by slug.
- List Custom Models Lists the Model Builder models on the project with their slugs and whether each is published. Unpublished models can be included, which helps while one is still being trained.
- List Custom Model Versions Lists the versions of one Model Builder model, reporting which is the default, which is deployed, and each version's training status. Pass a version to pin it rather than following the deployed one.
Account
5- Get API Key Info Returns what the configured key is, which organization and project it belongs to, and what it may do. The cheapest authenticated call in the API, so it doubles as a connection check.
- Get Usage Statistics Returns platform usage for the project, which is what the account is billed on. Results can be grouped, ordered and narrowed with filters, so spend is readable during the month rather than after it.
- List Human In The Loop Configurations Lists the review configurations on the project. A configuration slug attached to an asynchronous capture routes the extracted data to a Klippa reviewer before it is released.
- Create API Key Mints a new key on an existing credential and returns it. The key is shown only in that response, so whatever reads it has to store it there and then.
- Delete API Key Revokes a key. Anything still authenticating with it stops working immediately, and the key cannot be restored.
Frequently Asked Questions
What can FlowRunner do with Klippa DocHorizon?
FlowRunner agents can run Get Document Info, Merge Documents, and Split Document in Klippa DocHorizon, plus 24 more actions.
Does connecting Klippa DocHorizon to FlowRunner require OAuth?
No. Klippa DocHorizon connects to FlowRunner with an API key, no OAuth flow required.
Can Klippa DocHorizon trigger a FlowRunner workflow automatically?
Klippa DocHorizon doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with Klippa DocHorizon
Free plan, no card required. Connect in minutes.