Claims
Get a claim's timeline
GET/api/v1/claims/{id}/timeline
What happened to the claim, oldest first, in plain words: created, validated, queued, submitted (with the file and the claim's place in it), the 997 and 277 statuses, rejections, corrections and voids. Each entry has structured detail (the file, control numbers, the status category and code).
Needs a key with read permission.
Request
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | A claim ID (clm_...). |
Response
The timeline. Status 200.
| Name | Type | Description |
|---|---|---|
| object | string | Always `claim_timeline`. |
| claim_id | string | An ID that starts with clm_. |
| data | array of object | |
| data[].type | string | One of: `created`, `edited`, `validated`, `needs_attention`, `queued`, `requeued`, `submitted`, `accepted_clearinghouse`, `accepted_payer`, `rejected`, `status_recorded`, `void_requested`, `voided`, `attachment_linked`, `attachment_unlinked`, `attachment_discarded`, `payer_request_received`, `payer_request_answered`, `paid`, `denied`, `reconciled`, `payment_corrected`, `payment_reversed`, `payment_matched`, `returned`, `converted`, `correction_cancelled`. |
| data[].occurred_at | string (date-time) | |
| data[].summary | string | What happened, in plain words. |
| data[].detail | object | Structured detail: the file, control numbers, status category and code. |
| data[].actor | object or null | Who caused it, when someone did: a person of your organization, or an API key (its key_ id). |
| data[].actor.kind | string | One of: `user`, `api_key`. |
| data[].actor.id | value |
Errors
| HTTP status | Code | What it means |
|---|---|---|
| 401 | UNAUTHORIZED | A valid API key is required. Send it as "Authorization: Bearer <key>". |
| 403 | PERMISSION_DENIED | This API key is not allowed to do that. |
| 404 | NOT_FOUND | Not found. |
| 422 | INVALID_REQUEST | The request is not valid. |
| 504 | TIMEOUT | The request took too long to finish. It may still have taken effect: look it up before sending it again with a new Idempotency-Key. What it made is found with GET /api/v1/eligibility?request_id=<this request_id>, and the same filter on /api/v1/claims and /api/v1/attachments (a key with read permission). |
| 500 | INTERNAL | Something went wrong on our side. Quote the request ID if you contact us. |
Example
Example request
curl "https://sandbox.myclaimhouse.com/api/v1/claims/clm_01JM000000E00800000000002G/timeline" \
-H "Authorization: Bearer $CLAIMHOUSE_KEY"Example response: 200
{
"object": "claim_timeline",
"claim_id": "clm_01JM000000E00800000000002G",
"data": [
{
"type": "created",
"occurred_at": "2026-09-24T21:00:00.120000+00:00",
"summary": "Claim created",
"detail": {
"via": "api_key"
},
"actor": {
"kind": "api_key",
"id": "key_01JM000000E008000000000002"
}
},
{
"type": "validated",
"occurred_at": "2026-09-24T21:00:00.300000+00:00",
"summary": "Validated · 0 errors, 0 warnings",
"detail": {
"errors": 0,
"warnings": 0
},
"actor": null
},
{
"type": "queued",
"occurred_at": "2026-09-24T21:00:00.310000+00:00",
"summary": "Queued for the next batch",
"detail": {},
"actor": null
},
{
"type": "submitted",
"occurred_at": "2026-09-24T21:00:30.000000+00:00",
"summary": "Submitted to network · batch 20260924210030000.837, claim 1 of 1",
"detail": {
"file_name": "20260924210030000.837",
"position": 1,
"interchange_control_number": "000000042"
},
"actor": null
},
{
"type": "accepted_clearinghouse",
"occurred_at": "2026-09-24T21:01:00.000000+00:00",
"summary": "Accepted by clearinghouse · 997",
"detail": {
"file_name": "20260924210030000.837"
},
"actor": null
},
{
"type": "accepted_payer",
"occurred_at": "2026-09-24T21:01:30.000000+00:00",
"summary": "Accepted by payer front end · 277 · STC A1:20",
"detail": {
"payer_claim_number": "990000001042"
},
"actor": null
}
]
}