Skip to main content
All endpoints require both auth headers (Authorization and x-api-key). Request bodies may be plain JSON or gzip-compressed JSON unless noted otherwise - see Authentication.

POST /v1/review

Primary endpoint. Submit a bill and receive a full pricing decision with RuleTrace™ calculation detail. Body: plain or gzip JSON.

POST /v1/validate

Validate codes and determine the review jurisdiction before submitting for full review. Same request body as /v1/review. Body: plain or gzip JSON.

POST /v1/facility

Return a list of hospitals or outpatient/surgery centers for accurate institutional pricing. Body: plain JSON only (not gzip).

POST /v1/duplicates

Identify duplicate or potential duplicate service lines. Same request body as /v1/review. Body: plain or gzip JSON.

POST /v1/customcodes

When no CPT or HCPCS code exists (for example, shipping and handling expenses), BillSentry has created custom codes to allow for entry and payment. This API retrieves the list of custom codes used by BillSentry. No request body required.
All paths are appended to your API Endpoint URL - e.g. {your_api_endpoint}/v1/review.
Key naming convention: Request body fields use PascalCase (e.g. Bill, TypeOfBill, CPT1). The API is case-insensitive for inbound requests. Response fields are returned in camelCase.
Schemas and enums on this page are a summary of the values and fields most integrations use. This is not a complete catalog of every request/response class or enum. For the full contract definitions, use the API sample project provided during onboarding (Contracts/DTO and Contracts/Enums) as the definitive reference.

Request Body - /v1/review, /v1/validate, /v1/duplicates

The request is a JSON object. Bill, Services, Claim, and Provider are required. BillOptions and BillHistory are optional.

NPI fields - which box goes where

The request carries several NPI fields. Map them from the CMS-1500 as follows: Provider.NPI should be the rendering provider NPI, or the billing provider NPI if the rendering NPI is not available.

Bill object


BillOptions object

All fields are optional and override your tenant’s default configuration.

Services array - per service line


Claim object


Provider object


BillHistory array

Pass prior bills from the same claim to enable duplicate detection and visit-limit enforcement. Each entry contains a Bill object (set Historical_BillReviewState to the prior review state), optional ProviderTaxID / ProviderNPI identifying the historical bill’s provider, and a Services array whose lines include Historical_QuantityUsed, Historical_ServiceState, and Historical_BucketTotalList from the prior review.

Common enum values

The tables below cover the enum values most integrations need day to day. Additional enums and DTO fields live in the API sample project provided during onboarding - treat that project as the complete list.

TypeOfBill values


ProviderType values


ProviderSpecialty values

Optional refinement of ProviderType. Values 37–39 were added in the latest API release.

Request Body - /v1/facility

This endpoint accepts plain JSON - do not gzip-compress the body or set Content-Encoding: gzip.

Request Body - /v1/customcodes

No request body. Send auth headers only (Authorization and x-api-key). The response returns the list of custom codes used by BillSentry (for example, shipping and handling) when no standard CPT®/HCPCS code exists.

Response notes - secondary endpoints

Full field-level response documentation is provided below for POST /v1/review (the primary integration path). For secondary endpoint response samples during onboarding, contact support@billsentry.com.

Response Structure - /v1/review

A successful review returns HTTP 200 with a gzip-compressed JSON body (Content-Encoding: gzip). Most HTTP clients decompress this automatically - ensure your client sends Accept-Encoding: gzip or handles decompression explicitly.

Top-level response fields


bill response fields


services[] response fields - per line


Reason Code fields


Rule Trace Entry fields

Each entry in bucketList represents one step in the pricing calculation.

Rule Trace - bucketSource values


Duplicate Result fields

POST /v1/duplicates returns a DuplicateResultDTO containing DuplicateResultsByService, a map keyed by service line number:
CPT® © 2025 American Medical Association. All Rights Reserved.Fee schedules, relative value units, conversion factors and/or related components are not assigned by the AMA, are not part of CPT, and the AMA is not recommending their use. The AMA does not directly or indirectly practice medicine or dispense medical services. The AMA assumes no liability for data contained or not contained herein.CPT is a registered trademark of the American Medical Association.U.S. Government Rights - This product includes CPT and/or CPT® Changes which are commercial technical data, which was developed exclusively at private expense by the American Medical Association, 330 North Wabash Avenue, Chicago, Illinois 60611. The American Medical Association does not agree to license CPT to the Federal Government based on the license in FAR 52.227-14 (Data Rights - General) and DFARS 252.227-7015 (Technical Data - Commercial Items) or any other license provision. The American Medical Association reserves all rights to approve any license with any Federal agency.