Skip to the page
Chapters

Usage and statements

Get a month of usage

GET/api/v1/usage

The usage of the key's organization in a billing month, in the key's mode: for each product the billable transactions and those not billed (with the reason for each kind), the rate and the amount; for eligibility each tier's checks and price; the fees, the monthly minimum, and the amount due (the greater of the fees and the minimum, plus adjustments). A month still open is computed from the usage records as of now; a month that has been closed is read from its statement, which never changes. Months are calendar months in America/Denver for every partner. The default is the current month. An organization that is not live yet owes nothing (billing is pre_production, live is false); 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

Query parameters
NameTypeRequiredDescription
monthstringoptionalA 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])$`.

Response

The month's usage. Status 200.

Response fields
NameTypeDescription
objectstringAlways `usage`.
statement_idstring or nullThe statement of the month, once it is closed.
monthstringThe billing month, YYYY-MM.Matches `^\d{4}-\d{2}$`.
time_zonestringThe time zone months are counted in.
modestringOne of: `test`, `live`.
livebooleantrue when this month is billed: live mode, in a month the organization was live. false for test activity and for a pre-production organization.
billingstringbilled; pre_production (live usage of an organization not yet live: not billed); test_activity (test mode: never billed).One of: `billed`, `pre_production`, `test_activity`.
notevalueIn words, why the month is not billed; null when it is billed.
statestringopen: computed from the usage records as of now; issued: read from the stored statement, which never changes.One of: `open`, `issued`.
productsarray of object
products[].productstringOne of: `eligibility`, `claims`, `attachments`, `eras`.
products[].billableintegerBillable transactions of the month.At least -9007199254740991.
products[].not_billedobjectTransactions of the month that are not billed, with the reason for each kind.
products[].not_billed.totalintegerAt least -9007199254740991.
products[].not_billed.reasonsarray of object
products[].not_billed.reasons[].reasonstring
products[].not_billed.reasons[].labelstring
products[].not_billed.reasons[].countintegerAt least -9007199254740991.
products[].ratestringThe rate in words, from the price table in force.
products[].amountstringThe product's fees for the month; 0.00 when the month is not billed.Matches `^\d+\.\d{2}$`.
products[].tiersarray of object or nullEligibility only, when the month is billed: the checks and amount of each tier.
products[].tiers[].fromintegerThe first check of the month this tier covers.At least -9007199254740991.
products[].tiers[].tointeger or nullThe last check of the month this tier covers; null for the last tier.At least -9007199254740991.
products[].tiers[].ratestringThe price of one check in this tier, in dollars.Matches `^\d+\.\d{2,6}$`.
products[].tiers[].checksintegerHow many of the month's billable checks fell in this tier.At least -9007199254740991.
products[].tiers[].amountstringMatches `^\d+\.\d{2}$`.
adjustmentsarray of objectUsage of an earlier, closed month that arrived after its statement was issued, added to this month.
adjustments[].usage_monthstringMatches `^\d{4}-\d{2}$`.
adjustments[].descriptionstring
adjustments[].productsarray of object
adjustments[].products[].productstringOne of: `eligibility`, `claims`, `attachments`, `eras`.
adjustments[].products[].billableintegerAt least -9007199254740991.
adjustments[].products[].not_billedobject
adjustments[].products[].not_billed.totalintegerAt least -9007199254740991.
adjustments[].products[].not_billed.reasonsarray of object
adjustments[].products[].not_billed.reasons[].reasonstring
adjustments[].products[].not_billed.reasons[].labelstring
adjustments[].products[].not_billed.reasons[].countintegerAt least -9007199254740991.
adjustments[].amountstringMatches `^\d+\.\d{2}$`.
feesstringThe sum of the products' fees.Matches `^\d+\.\d{2}$`.
adjustments_amountstringMatches `^\d+\.\d{2}$`.
minimumobject or nullThe monthly minimum that applies; null when the month is not billed.
minimum.amountstringMatches `^\d+\.\d{2}$`.
minimum.introductorybooleantrue for the lower minimum of an organization's first live months.
minimum_appliedbooleantrue when the minimum, not the fees, set the amount due.
amount_duestringThe greater of the fees and the minimum, plus adjustments; 0.00 when the month is not billed.Matches `^\d+\.\d{2}$`.

Errors

Errors
HTTP statusCodeWhat it means
401UNAUTHORIZEDA valid API key is required. Send it as "Authorization: Bearer <key>".
403PERMISSION_DENIEDThis API key is not allowed to do that.
422INVALID_REQUESTThe request is not valid.
504TIMEOUTThe 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).
500INTERNALSomething went wrong on our side. Quote the request ID if you contact us.

Example

Example request

Shell
curl "https://sandbox.myclaimhouse.com/api/v1/usage?month=2026-09" \
  -H "Authorization: Bearer $CLAIMHOUSE_KEY"

Example response: 200

JSON
{
  "object": "usage",
  "statement_id": null,
  "month": "2026-09",
  "time_zone": "America/Denver",
  "mode": "live",
  "live": true,
  "billing": "billed",
  "note": null,
  "state": "open",
  "products": [
    {
      "product": "eligibility",
      "billable": 4000,
      "not_billed": {
        "total": 118,
        "reasons": [
          {
            "reason": "cache_hit",
            "label": "answer reused from a recent check",
            "count": 118
          }
        ]
      },
      "rate": "$0.30 for checks 1-250, $0.15 for 251-3,500, $0.10 for 3,501-10,000, $0.08 after",
      "amount": "612.50",
      "tiers": [
        {
          "from": 1,
          "to": 250,
          "rate": "0.30",
          "checks": 250,
          "amount": "75.00"
        },
        {
          "from": 251,
          "to": 3500,
          "rate": "0.15",
          "checks": 3250,
          "amount": "487.50"
        },
        {
          "from": 3501,
          "to": 10000,
          "rate": "0.10",
          "checks": 500,
          "amount": "50.00"
        },
        {
          "from": 10001,
          "to": null,
          "rate": "0.08",
          "checks": 0,
          "amount": "0.00"
        }
      ]
    },
    {
      "product": "claims",
      "billable": 1240,
      "not_billed": {
        "total": 0,
        "reasons": []
      },
      "rate": "$0.20 per claim",
      "amount": "248.00",
      "tiers": null
    },
    {
      "product": "attachments",
      "billable": 410,
      "not_billed": {
        "total": 0,
        "reasons": []
      },
      "rate": "$0.30 per attachment",
      "amount": "123.00",
      "tiers": null
    },
    {
      "product": "eras",
      "billable": 900,
      "not_billed": {
        "total": 3,
        "reasons": [
          {
            "reason": "estimate_only",
            "label": "estimate only",
            "count": 3
          }
        ]
      },
      "rate": "$0.05 per ERA",
      "amount": "45.00",
      "tiers": null
    }
  ],
  "adjustments": [],
  "fees": "1028.50",
  "adjustments_amount": "0.00",
  "minimum": {
    "amount": "500.00",
    "introductory": true
  },
  "minimum_applied": false,
  "amount_due": "1028.50"
}