Skip to main content

Cases

A case is a group of two or more documents connected through shared transaction or reference entities, such as a contract number or PO number. Cases let you review related documents together: an invoice alongside its purchase order and contract, instead of each file in isolation. Documents connected only through identity entities (names) form an entity group rather than a case.

The case detail page

The case detail page is organized into tabs:

ParameterTypeDescription
OverviewtabAI narration, anomaly banner, entity summary cards, and documents grid.
AnomaliestabSeverity filter pills, dismissable anomaly cards, show-dismissed toggle. Advanced mode only.
EvidencetabValidation badges (colored dots), filter bar (status/document/category/search), group-by-document collapsible sections.
TimelinetabChronological event log for the case.

Cases display an AI-generated case label as the primary title and include anomaly count badges in the header. The label is generated by analyzing the documents and entities in the case to produce a human-readable summary, for example "ACME Corp Invoice #4521 → PO #8890". You can rename a case manually if the AI label does not capture the right context. Evidence and Timeline tabs support export to MD, CSV, and JSON for offline review or compliance reporting.

Case operations and lifecycle

Additional case operations: merge two cases into one, split a case into separate groups, pin or remove documents, and confirm or reject individual linking edges. Merging is useful when two cases refer to the same real-world transaction but were not connected by the linking engine, for example when a vendor uses slightly different names across documents. Splitting breaks apart a case that was over-connected by a high-frequency entity value. Edge confirmation and rejection feed back into the linking model, improving future case formation accuracy.

Cases follow a lifecycle: discovered when the linking engine first identifies a cluster, confirmed when a reviewer validates the grouping, active during ongoing work, and Closed when all documents have been reviewed and processed (in API payloads the Closed state is carried by the status value resolved). Update the status from the case detail header, or via PATCH /v1/cases/{key}/status in the public API. Filtering the cases list by status makes it easy to focus on cases that need attention.

  • AI-generated case labels with manual rename option
  • Four tabs: Overview, Anomalies (Advanced mode), Evidence, and Timeline
  • Merge, split, pin, remove, confirm, and reject operations
  • Lifecycle tracking: discovered → confirmed → active → Closed
  • Anomaly count badges in the case header for quick triage
  • Export Evidence and Timeline to MD, CSV, or JSON
List cases via the public API
# Filter by label text or minimum document count:
curl -s "https://api.talonic.com/v1/cases?search=acme&min_documents=2" \
  -H "Authorization: Bearer $TALONIC_API_KEY"

# Response:
# {
#   "data": [
#     {
#       "id": "1f0c4a4e-…",
#       "case_key": "8c1ca050535e3ea3",
#       "label": "ACME Corp Invoice #4521 → PO #8890",
#       "document_count": 3,
#       "created_at": "2026-04-18T10:00:00Z",
#       "links": { "self": "/v1/cases/1f0c4a4e-…" }
#     }
#   ]
# }
Get case detail with documents and narrative
# Cases are addressed by their stable UUID (the "id" field):
curl -s https://api.talonic.com/v1/cases/1f0c4a4e-… \
  -H "Authorization: Bearer $TALONIC_API_KEY"

# Response:
# {
#   "id": "1f0c4a4e-…",
#   "case_key": "8c1ca050535e3ea3",
#   "label": "ACME Corp Invoice #4521 → PO #8890",
#   "narrative": "Invoice 4521 from ACME Corp references PO 8890…",
#   "documents": [
#     { "id": "…", "filename": "Invoice_4521.pdf", "document_type": "Invoice" },
#     { "id": "…", "filename": "PO_8890.pdf", "document_type": "Purchase Order" }
#   ],
#   "anomaly_count": 1
# }

# Update the lifecycle status:
curl -X PATCH https://api.talonic.com/v1/cases/1f0c4a4e-…/status \
  -H "Authorization: Bearer $TALONIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "status": "resolved" }'

Cases are the primary unit of holistic document review. The AI-generated case label gives you immediate context at a glance, the anomaly count badge in the header lets you prioritize cases that need attention, and lifecycle tracking ensures nothing falls through the cracks as your team processes the queue.

Case formation runs automatically after entity linking completes. You do not need to create cases manually: the system discovers them from the document-entity graph. Use merge, split, and edge operations to refine cases when the automatic grouping needs adjustment. In the API, cases are keyed by their stable UUID (id); the content-derived case_key hash is informational.

Frequently asked questions

What is a case in Talonic?+
A case is a group of 2 or more documents connected through transaction or reference entities (contract numbers, PO numbers, etc.). Entity groups are documents connected through identity-only entities.
What does a case detail page show?+
The case detail page has four tabs: Overview (AI narration, anomaly banner, entity cards, documents), Anomalies (severity filters, dismissable cards), Evidence (validation badges, filters, group-by-document), and Timeline.
Can I merge or split cases?+
Yes. Merge two cases into one (POST /v1/cases/merge absorbs case B into case A; B is tombstoned, never deleted), or split a case by moving a subset of its documents into a new case (POST /v1/cases/{key}/split). You can also pin or remove individual documents and confirm or reject linking edges.
How do I track case lifecycle status?+
Cases progress through four stages: discovered (linking engine first identified the cluster), confirmed (reviewer validated the grouping), active (ongoing work), and Closed (all documents reviewed; the API status value is resolved). Update the status from the case detail header or via PATCH /v1/cases/{key}/status, and filter the cases list by status to focus on cases needing attention.