Reading as Everyone

API-first. Everything the screen does, an integration can do.

The web interface is a client of the same REST API you get. On top of it sit five ways to extend the platform, from a ten-line script to a compiled plugin with its own tables and endpoints.

Build capture into your own product: call the API from your backend, embed the review and scan screens in your front end, and ship your own connectors as plugins.

150+REST controllers, described in OpenAPI 3
3Script languages
5Plugin extension points
100+MCP tools for AI agents
REST API

One API, documented from the code.

Projects, templates, workflows, documents, batches, verification, exports, users and administration are all reachable over REST. The specification is generated from the running application, so it cannot drift from what is deployed.

OpenAPI 3 and a built-in console
Download the specification or try calls in the console at /api-docs. The console only shows the operations your account is allowed to call.
OpenAPI 3 · permission-trimmed console
Authentication
Integrations authenticate with a bearer token. Refresh tokens rotate and reuse of an old one is detected. API keys exist for specific lanes — embedded hubs, mobile devices, dataset loading and MCP — and are stored as a SHA-256 digest, shown once at creation.
JWT bearer · refresh rotation · scoped API keys
Paging, sorting, filtering
List endpoints page, sort and filter on the server. Nothing asks you to pull a whole table to find one row.
server-side paging · sort · filter
Errors you can act on
Refusals say what was missing: a 403 names the scope it wanted; a 409 explains the conflicting state.
explicit status codes · named scopes
Call logging
Inbound and outbound API calls are logged, separately from the business activity log, with retention you set per level.
inbound · outbound · retention policy
Status by polling or callback
The interface updates by polling; there is no WebSocket or server-sent event stream. For integrations, batches can call you back on completion.
polling · batch completion callback
Capture in one call

Post a file. Get fields back.

For a single document you do not need to design a workflow. Post it, optionally name a template and pin its version, and read the result — in the response, or from a job you poll.

# read one invoice with a pinned template version
curl -X POST https://capture.example.com/api/capture \
  -H "Authorization: Bearer $TOKEN" \
  -F file=@invoice.pdf \
  -F templateId=$TEMPLATE_ID \
  -F templateVersion=4 \
  -F engine=HYBRID \
  -F language=nld

# or queue it and poll
curl -X POST "https://capture.example.com/api/capture?async=true" \
  -H "Authorization: Bearer $TOKEN" -F file=@scan.tiff
curl https://capture.example.com/api/capture/$JOB_ID \
  -H "Authorization: Bearer $TOKEN"

# download the document in another format
curl -O https://capture.example.com/api/capture/$JOB_ID/download/$FORMAT \
  -H "Authorization: Bearer $TOKEN"
Parameters
All optional except the file.
projectId · templateId · templateVersion · engine · llmConfigurationId · language · async · includeWordConfidences
Why pin a version
A designer can keep improving the template. Your integration keeps getting the field set it was built against until you move it.
templateVersion
Scripts

Small logic belongs in a script, not a project.

Scripts run as workflow steps, validation rules, extraction methods, import sources, export goals and mapping functions. They are written and tested in the browser.

Three languages, two trust levels
JavaScript and Groovy run in a sandbox. Java runs unsandboxed and is meant for trusted code written by your own administrators.
JavaScript (sandboxed) · Groovy (sandboxed) · Java (trusted)
Editor with test runs
An in-browser editor runs a script against a sample document and shows the result before it touches live work. An assistant can draft or explain a script.
editor · test run · AI assistance
Limits
Each run has a timeout and a memory limit, so a bad loop costs one document, not the server.
timeout · memory limit
Access to reference data
Scripts can read the project's datasets — look up a supplier, check a cost centre, derive a ledger code.
datasets · field values · document properties
Plugins

When a script is not enough, ship a JAR.

The plugin SDK lets compiled code join the platform as a first-class part: it appears in the designers next to the built-in steps and connectors.

Five extension points
Add what the platform does not have, without forking it.
workflow step · import connector · export connector · email provider · LLM provider
Scope and permissions
Install a plugin for the whole platform, one organisation or one project. A plugin declares the permissions it needs.
platform · organisation · project · declared permissions
Own tables, endpoints and screens
A plugin can bring its own database tables, REST endpoints and interface extensions.
DB migrations · REST endpoints · UI extensions
Build it inside the product
An in-app plugin builder works with Git and Maven repositories, with an assistant for the boilerplate.
plugin builder · Git · Maven · assistant
Three sample projects
Working examples to copy from: a general plugin, an email provider and an LLM provider.
example · example-email · example-llm
Embedded hubs

Our review screen, inside your product.

The Verification Hub and the Scan Hub can run in an iframe in your application, for a person who has no KognitCapture account. It is the same hub operators use, with navigation, branding and sign-in removed.

Embed when a person has to look at a page and decide. For everything a machine can do, use the API.

  1. Your server asks
    It requests a hub session with an API key and gets a URL back. The key never leaves your server.
  2. Your page frames
    It puts that URL in an iframe on an origin you registered for the key.
  3. The hub reports
    It posts events to your page as the user works, and tells you when they are done.
The security split
A session URL is a credential for exactly one document or one scan session, for an hour by default, from the origins you named. A leaked session costs you one document until it expires — not the project.
one document · one hour · named origins
Scopes and origins on the key
A key must carry the right scope and an allow-list of origins. Without either, the session call is refused with a clear status rather than returning a URL that silently fails to render.
embed:verify · embed:scan · allowed origins
Choose the controls
Hub options decide which buttons and panels the embedded user sees.
hub options · events · commands
Generated instructions
An Embed button in the product writes the integration steps against your actual project, key and address, ready to copy.
copyable snippet
MCP server

Built for agents, with the brakes on.

KognitCapture includes a Model Context Protocol server, so an AI agent can work with the platform through curated tools instead of scraping screens or guessing at endpoints.

It ships switched off. You turn it on at platform, tenant and organisation level.

More than a hundred tools
Curated, named and grouped — not a raw dump of the REST API.
projects · templates · workflows · documents · batches · verification · OCR · classifiers · datasets · import · export · scripts · cluster · users · audit
OAuth 2.1 with consent
Agents connect over streamable HTTP at /mcp and authorise through OAuth 2.1 with an explicit consent screen, or with an API key promoted for the purpose.
streamable HTTP · OAuth 2.1 · consent screen · promoted API key
A separate audit channel
What an agent does is recorded apart from what people do — including what it read, not only what it changed.
agent reads and writes · searchable
Revocable sessions
List the open agent sessions and revoke one at any moment.
session list · revoke
Resources and prompts
Besides tools, the server exposes documents and fields as resources, and ready-made prompts for common jobs.
resources · prompts
# a sample of the tool namespace
kc.documents.search      kc.documents.fields      kc.documents.rendition
kc.verification.queue    kc.verification.set_field  kc.verification.approve
kc.templates.create      kc.templates.add_field   kc.templates.publish
kc.workflows.graph       kc.workflows.validate    kc.workflows.publish
kc.import.poll_now       kc.export.run            kc.ocr.run
kc.cluster.nodes         kc.cluster.drain         kc.audit.search
Vector search

Captured documents as a retrieval source.

The same pipeline that extracts fields can prepare documents for semantic search and retrieval-augmented applications.

Chunking with provenance
Chunks carry the page, the position on the page and the recognition confidence, so an answer can point back to where it came from.
document · page · block · window · field · table row
Ten vector stores
Write to the store you already operate.
pgvector · Qdrant · Weaviate · Milvus · Pinecone · Chroma · Elasticsearch · OpenSearch · Azure AI Search · Typesense
Search endpoint
Query embedded chunks through the API.
vector similarity search
Stack

Boring technology, on purpose.

One application, one database, one filesystem. Nothing exotic to learn before you can run or extend it.

RuntimeJava 25, Spring Boot 4, a single self-contained JAR
DatabasePostgreSQL only, schema managed by 200+ versioned Flyway migrations; pgvector optional
OCRTesseract 5 in-process through pooled engines
ModelsGGUF text models in-process; vision models through a managed local model server
Machine learningWeka, Tribuo, OpenNLP, Smile — all in-process
ScriptingGraalVM JavaScript and Groovy, sandboxed; Java for trusted code
InterfaceServer-rendered pages with vanilla ES modules; every asset served locally, no CDN calls
QualityMore than 20,000 automated unit tests in the build
PlatformLinux x86-64 is the supported, self-contained platform

Want to try the API against your own documents?

Tell us what you are integrating with and we set up a session with an engineer.Talk to an engineer →
One question before you read

What is your role?

An accounts payable lead and a platform engineer need different answers. Pick a role and every page puts what matters to you first. Nothing is hidden for good, and you can change it at any time.

08Become a partner Sell and implement KognitCapture for your own clients. Opens the partner programme.
Stored only in this browser. No account, no tracking, no cookie.
Machine translation

Read this site in your language.

The site is written in English. Google Translate can show it in the languages below. The translation is automatic and not reviewed by us: for prices, licence terms and legal text the English page is the one that counts.

Translation by Google. Choosing a language loads Google Translate, sends the text of the pages you open to Google and stores one cookie in this browser. English switches all of that off. What is sent and stored