Skip to main content
The BillReview API accepts plain JSON request bodies — no special compression setup is needed in Postman. Send your payload as raw JSON with standard headers.
A future version of the API will require gzip-compressed request bodies. If you are building a production integration, implement gzip compression now so you won’t need to retrofit it later. See Authentication for details.

Step 1 — Get a Bearer token

Create a new POST request in Postman to your Token URL.
SettingValue
MethodPOST
URLYour Token URL (provided at onboarding)
Authorization tabBasic Auth — enter your Client ID as username, Client Secret as password
Body tabx-www-form-urlencoded with the key/value pairs below
Required body parameters:
KeyValue
grant_typeclient_credentials
audienceapi.billsentry.net
Send the request. You should receive:
{
  "access_token": "eyJhbGciOiJSUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600
}
Copy the access_token value — you will use it in Step 2.
Tokens are valid for ~1 hour. You need to re-fetch a new token after it expires.

Step 2 — Call /v1/review

1. Create a new POST request:
SettingValue
MethodPOST
URL{your_api_endpoint}/v1/review
2. Add headers:
HeaderValue
AuthorizationBearer {paste your access_token here}
x-api-keyYour API key
Content-Typeapplication/json
3. Set the Body tab to rawJSON, and paste your bill payload (see Sample Payloads below). That’s it — send the request. Postman automatically sends Accept-Encoding: gzip for responses, so the response body will be decompressed and displayed normally.

Sample Payloads

Institutional bill — CA Inpatient (DRG)

Use this to test a California inpatient hospital bill with a DRG code. This is a complete, working payload.
{
  "Bill": {
    "UniqueID": "3",
    "ControlNumber": 2080,
    "ProviderType": 2,
    "ZipCode": "93291",
    "ZipPlusFour": "93291",
    "BillReviewState": "CA",
    "JurisdictionState": "CA",
    "MedicareNumber": "050057",
    "DRG": "473",
    "ClaimsOfficeReceivedDate": "2025-07-15T00:00:00",
    "ProcessedDate": "2025-07-15T00:00:00",
    "AdmitDate": "2025-07-15T00:00:00",
    "DischargeDate": "2025-07-15T00:00:00",
    "ModifyDate": "2025-08-25T22:51:48",
    "ProviderTaxID": "123456789",
    "BucketList": []
  },
  "BillOptions": {
    "IsLateFee": true,
    "IsMedicareTreatment": true,
    "IsIgnoreTimelyFiling": true
  },
  "Services": [
    {
      "Line": 1,
      "CPT1": "120",
      "CPT2": "",
      "ServiceDate": "2025-07-15T00:00:00",
      "QuantityBilled": 1.0,
      "POS": "21",
      "Charge": 2316.25,
      "BucketList": [],
      "ControlNumber": 2080
    }
  ],
  "Claim": {
    "DisplayID": "123-123",
    "State": "CA",
    "ZipCode": "92882",
    "StateOfJurisdiction": ""
  },
  "Provider": {
    "TaxID": "123-123",
    "PracticeState": "CA",
    "PracticeZipCode": "",
    "BillingZipCode": ""
  },
  "BillHistory": []
}

Professional bill — CA Physician (CMS-1500)

{
  "Bill": {
    "ControlNumber": 1001,
    "ProviderType": 1,
    "ZipCode": "90210",
    "BillReviewState": "CA",
    "JurisdictionState": "CA",
    "ProviderTaxID": "123456789",
    "BucketList": []
  },
  "BillOptions": {
    "IsLateFee": false,
    "IsIgnoreTimelyFiling": false
  },
  "Services": [
    {
      "Line": 1,
      "CPT1": "99213",
      "CPT2": "",
      "ServiceDate": "2025-07-15T00:00:00",
      "QuantityBilled": 1.0,
      "POS": "11",
      "Charge": 175.00,
      "BucketList": [],
      "ControlNumber": 1001
    }
  ],
  "Claim": {
    "DisplayID": "CLM-001",
    "State": "CA",
    "ZipCode": "90210",
    "StateOfJurisdiction": "CA"
  },
  "Provider": {
    "TaxID": "123456789",
    "PracticeState": "CA",
    "PracticeZipCode": "90210",
    "BillingZipCode": ""
  },
  "BillHistory": []
}

Expected response

A successful 200 response returns a gzip-compressed JSON body. Postman automatically decompresses this for display. You should see:
{
  "qrCodeID": "3868-4256",
  "qrCodeURL": "https://app.billsentry.net/ID/3868-4256",
  "bill": {
    "totalCharge": 2316.25,
    "totalAllowance": 519.15,
    "totalReduction": 1797.10,
    ...
  },
  "services": [
    {
      "line": 1,
      "allowance": 519.15,
      "reduction": 1797.10,
      "reasonCodesDTO": [ ... ]  // reason code detail objects
    }
  ]
}
The qrCodeURL is a live link to the full RuleTrace™ report for this review.

Common errors in Postman

ErrorLikely cause
401 Missing Bearer tokenAuthorization header missing or malformed — must be Bearer {token} with a space
401 Invalid tokenToken has expired (1-hour TTL) — re-fetch from the Token URL
403 Bad API keyx-api-key header value is wrong or missing
403 Bad API key (malformed)The KV entry for this API key contains invalid JSON — contact BillSentry support
403 Token not valid for this API keyYou are using sandbox credentials with a production API key or vice versa
400 Invalid request bodyBody is not valid JSON — check for syntax errors
400 unauthorized_clientToken request rejected — ensure Body is x-www-form-urlencoded with grant_type=client_credentials and audience=api.billsentry.net, and that the Client Secret has no extra characters