Usage and statements
List usage records
GET/api/v1/usage/units
The usage records of a billing month in the key's mode, oldest first: one for each check, claim, attachment or ERA, with whether it is billable and why, and for a billable check of a billed month the price of its place in the month's tiers. A record names its resource by ID only: nothing about a patient. Filter by product, or by billable. The same records the month's figures are counted from. Months are calendar months in America/Denver for every partner. The default is the current month. A test key sees test activity only: it is never priced, and a test key sees no statements.
Needs a key with read permission.
Request
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | optional | How many items to return, from 1 to 100. Default 25.At least 1.At most 100. |
| cursor | string | optional | The next_cursor of the previous page, to get the page after it. Opaque: pass it back unchanged. |
| month | string | optional | A billing month, YYYY-MM, not after the current one. Default: the current billing month.Matches `^[1-9][0-9]{3}-(0[1-9]|1[0-2])$`. |
| product | string | optional | Only records of this product.One of: `eligibility`, `claims`, `attachments`, `eras`. |
| billable | string | optional | true: only billable records; false: only records not billed.One of: `true`, `false`. |
Response
A page of usage records. Status 200.
| Name | Type | Description |
|---|---|---|
| data | array of object | |
| data[].object | string | Always `usage_unit`. |
| data[].time | string (date-time) | |
| data[].product | string | One of: `eligibility`, `claims`, `attachments`, `eras`. |
| data[].resource_id | string | The ID of the check, claim, attachment or ERA the record is for. |
| data[].billable | boolean | |
| data[].reason | string | Why the record is or is not billable. |
| data[].label | string | The reason in words. |
| data[].tier_price | string or null | A billable check of a billed month: the price of its place in the month's tiers, in dollars.Matches `^\d+\.\d{2,6}$`. |
| next_cursor | value | Pass as cursor to get the next page; null when there is no next page. |
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. |
| 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/usage/units?month=2026-09&limit=25" \
-H "Authorization: Bearer $CLAIMHOUSE_KEY"Example response: 200
{
"data": [
{
"object": "usage_unit",
"time": "2026-09-01T15:02:11.120000+00:00",
"product": "eligibility",
"resource_id": "elg_01JM000000E00800000000000G",
"billable": true,
"reason": "answered",
"label": "the payer answered",
"tier_price": "0.30"
},
{
"object": "usage_unit",
"time": "2026-09-01T15:04:40.870000+00:00",
"product": "eligibility",
"resource_id": "elg_01JM000000E00800000000000H",
"billable": false,
"reason": "cache_hit",
"label": "answer reused from a recent check",
"tier_price": null
},
{
"object": "usage_unit",
"time": "2026-09-01T16:30:02.400000+00:00",
"product": "claims",
"resource_id": "clm_01JM000000E00800000000000J",
"billable": true,
"reason": "transmitted",
"label": "handed to the network",
"tier_price": null
}
],
"next_cursor": null
}