Skip to main content

Authentication

Generated from the specifications. Every scheme and header below is declared in one of them.

Session

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
REQUEST-IDyesREQUEST-ID is a fresh UUID that you generate for every call. Sending the same one twice is the mistake to avoid; generate it, do not copy it from an example.
TIMESTAMPyesTIMESTAMP is the current time in UTC, ISO 8601 with milliseconds and a trailing Z, as in 2026-09-04T06:15:51.975Z. A clock that has drifted will be refused, so take the time from the system rather than constructing it by hand. How to produce it in each language is at the end of this chapter.
X-CM-IDyesX-CM-ID names the environment. It is sbx on the sandbox. The mirror and the adapter both use lowercase.

Coverage eligibility

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-request_idnoOne per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-workflow_idnoWhich step, or which case. See the two readings below. Optional on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.
x-hcx-ben-abha-idyesThe beneficiary's ABHA number. Mandatory on every exchange, including those with no beneficiary in the payload. Mandatory on the envelope.
x-hcx-debug_flagnoError, Info or Debug. A server may ignore it. Optional on the envelope.

Pre-authorisation

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-request_idnoOne per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-workflow_idnoWhich step, or which case. See the two readings below. Optional on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.
x-hcx-ben-abha-idyesThe beneficiary's ABHA number. Mandatory on every exchange, including those with no beneficiary in the payload. Mandatory on the envelope.
x-hcx-use_casenoValues differ by exchange, see below. Optional on the envelope.
x-hcx-debug_flagnoError, Info or Debug. A server may ignore it. Optional on the envelope.

Predetermination

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.

Claim

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-request_idnoOne per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-workflow_idnoWhich step, or which case. See the two readings below. Optional on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.
x-hcx-ben-abha-idyesThe beneficiary's ABHA number. Mandatory on every exchange, including those with no beneficiary in the payload. Mandatory on the envelope.
x-hcx-use_casenoValues differ by exchange, see below. Optional on the envelope.
x-hcx-debug_flagnoError, Info or Debug. A server may ignore it. Optional on the envelope.

Payment notice

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-request_idnoOne per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-workflow_idnoWhich step, or which case. See the two readings below. Optional on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.
x-hcx-ben-abha-idyesThe beneficiary's ABHA number. Mandatory on every exchange, including those with no beneficiary in the payload. Mandatory on the envelope.
x-hcx-debug_flagnoError, Info or Debug. A server may ignore it. Optional on the envelope.

Communication

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-request_idnoOne per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-workflow_idnoWhich step, or which case. See the two readings below. Optional on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.
x-hcx-ben-abha-idyesThe beneficiary's ABHA number. Mandatory on every exchange, including those with no beneficiary in the payload. Mandatory on the envelope.

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-request_idnoOne per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.
x-hcx-ben-abha-idyesThe beneficiary's ABHA number. Mandatory on every exchange, including those with no beneficiary in the payload. Mandatory on the envelope.

Insurance plan

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-request_idnoOne per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-workflow_idnoWhich step, or which case. See the two readings below. Optional on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.
x-hcx-ben-abha-idyesThe beneficiary's ABHA number. Mandatory on every exchange, including those with no beneficiary in the payload. Mandatory on the envelope.

Participant registry

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.

Onboarding

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
sourceyesSent on this call, as the package's request carries it.

PMJAY adjudicator

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.

Other

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
bearer_authyesIt is bearer_auth, not Authorization, on NHCX's own endpoints.
x-hcx-sender_codeyesYour participant code. Mandatory on the envelope.
x-hcx-recipient_codeyesThe recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope.
x-hcx-api_call_idyesFresh on every message, including responses. Mandatory on the envelope.
x-hcx-request_idnoOne per originating request. The Open Protocol page marks it Mandatory; the Technical Specifications page marks it Optional. Optional on the envelope.
x-hcx-correlation_idyesThe thread. See the rule below. Mandatory on the envelope.
x-hcx-workflow_idnoWhich step, or which case. See the two readings below. Optional on the envelope.
x-hcx-timestampyesSee the format note below. Mandatory on the envelope.
x-hcx-statusyesWhere this message stands. Values below. Mandatory on the envelope.
x-hcx-ben-abha-idyesThe beneficiary's ABHA number. Mandatory on every exchange, including those with no beneficiary in the payload. Mandatory on the envelope.

ABHA biometric authentication

bearerAuth, http bearer. On every NHCX call, the token goes in a header called bearer_auth, with the word Bearer and a space in front. The sources are not unanimous: the authentication page and the FAQ both write the example as Authorization, and the notification endpoint uses Authorization. The safe course, and what the adapter does, is to send both headers with the same value.

HeaderRequiredWhat it is
processyesNo source puts process or payerid on faceauth/init or capture/pid.
payeridyespayerid is the insurer's own participant code. Every insurer has one, even when it works through a TPA.
R-tokenyesSent on this call, as the package's request carries it.
REQUEST-IDyesREQUEST-ID is a fresh UUID that you generate for every call. Sending the same one twice is the mistake to avoid; generate it, do not copy it from an example.
TIMESTAMPyesTIMESTAMP is the current time in UTC, ISO 8601 with milliseconds and a trailing Z, as in 2026-09-04T06:15:51.975Z. A clock that has drifted will be refused, so take the time from the system rather than constructing it by hand. How to produce it in each language is at the end of this chapter.