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:
| Parameter | Type | Description |
|---|---|---|
| Overview | tab | AI narration, anomaly banner, entity summary cards, and documents grid. |
| Anomalies | tab | Severity filter pills, dismissable anomaly cards, show-dismissed toggle. Advanced mode only. |
| Evidence | tab | Validation badges (colored dots), filter bar (status/document/category/search), group-by-document collapsible sections. |
| Timeline | tab | Chronological 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
# 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-…" }
# }
# ]
# }# 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.
id); the content-derived case_key hash is informational.