Real-Time Eligibility Check (270/271) JSON
Submit a real-time 270/271 eligibility check in JSON format
/eligibility-checkReal-time eligibility checks are ideal for in-person patient visits, telehealth appointments, and other scenarios where you need immediate information about a patient's coverage.
- Call this endpoint with a JSON payload. The required information can vary depending on the circumstances, but we recommend starting with a basic eligibility request.
- Stedi translates your request to the X12 270 EDI format and sends it to the payer.
- The endpoint returns a synchronous response from the payer in both JSON and raw X12 EDI format. The response contains the patient's eligibility and benefits information. Note that our documentation lists all enums officially allowed in the eligibility response. Some payers return non-compliant values, which Stedi passes through as is.
Test your integration with eligibility mock requests.
A Stedi API Key for authentication. Supports both test and production API keys.
Headers
(CMS requests only): Starting November 8, 2025, the Centers for Medicare & Medicaid Services (CMS) requires submitters to include network IP addresses from an eligibility request's point of origin through receipt by the HETS system. To comply with this requirement, you may need to include this header in requests to CMS.
When present, this header should contain a comma-separated list of upstream IP addresses, starting with the originating system and continuing through every intermediary. You can exclude your IP address from the list. Note that Stedi blocks eligibility requests to CMS when any IP address in the chain – the originating IP address or any in the X-Forwarded-For header – is located outside the United States.
Visit CMS traceability requirements for details and examples.
Body
A dependent for which you want to retrieve benefits information.
- You can only submit one dependent per eligibility check.
- Only include the patient's information here when they are listed as a dependent on the subscriber's insurance plan AND the payer cannot uniquely identify them through information outside the subscriber's policy. For example, if the dependent has their own member ID number, you should identify them in the
subscriberobject instead. This includes member IDs that differ only by a suffix, such as01, because the patient can still be uniquely identified. - Most Medicaid plans don't support dependents, with a few exceptions. Sending this information to payers that don't support dependents will either cause an error, or the payer may ignore the information and return results for the subscriber instead.
- Each payer has different requirements, so you should supply the fields necessary for each payer to identify the dependent in their system. However, we strongly recommend including the dependent's date of birth in the request when available because many payers return errors without it.
- Enter the patient's name exactly as written on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Visit patient names for all best practices to avoid unnecessary failures.
Show attributes
An identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an eligibility search.
Details about the eligibility or benefit information you are requesting for the patient.
- You can optionally include service type codes (STCs) or procedure codes to request benefits for specific services.
- You can specify either a single service date or a date range using
dates.service. The payer defaults to using the current date in their timezone if you don't include one. - When checking eligibility for today, omit the service date to ensure consistent behavior across payers.
- We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers such as the Centers for Medicare and Medicaid Services (CMS) do support requests for dates further in the future - especially the next calendar month. Check the payer's documentation to determine their specific behavior.
Show attributes
A unique identifier for the patient that Stedi uses to identify and correlate historical eligibility checks for the same individual. We recommend including this value in all requests.
The payer ID. Visit the Payer Network for a complete list.
- You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record.
- You must include leading
0characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use00540for SISCO, not540.
The payer's name, such as Cigna or Aetna.
Information about the entity requesting the eligibility check. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider.
- You must provide the provider's name as either a person (with
name.person) or an organization (withname.organization). - You must also provide an identifier - this is typically the provider's National Provider Identifier (
npi). If the provider doesn't have an NPI, you can supply an alternative, such as theirtinorssn. - Don't include additional properties, such as
tinoraddress, unless they are specifically required or suggested by the payer.
Show attributes
The primary policyholder for the insurance plan or a dependent with a unique member ID. If a dependent has a unique member ID, include their information here and leave dependent empty.
- At a minimum, our API requires that you supply at least one of these fields in the request:
memberId,dateOfBirth, orname.person.lastName. However, each payer has different requirements, so you should supply the fields necessary for each payer to identify the subscriber in their system. - When you provide all four of
memberId,dateOfBirth,name.person.firstName, andname.person.lastName, payers must return a response if the member is in their database. Some payers may be able to search with less information, but this varies by payer. - We recommend always including the patient's member ID when possible.
- Enter the patient's name exactly as written on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Visit patient names for all best practices to avoid unnecessary failures.
Show attributes
Response
Information about the dependent from the eligibility check request. Note that the payer may return the dependent in the subscriber object instead. When present, this object will always include the dependent's name for identification, but many payers also include the date of birth and other identifying information. Some payers truncate names to fit their own technical limits, so the payer may not return the dependent's full legal name.
Show attributes
An identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an eligibility search.
This property is for use by Stedi tools only, such as Stedi's MCP server.
AAA rejection errors from the payer. AAA errors specify the reasons for the rejection and any recommended follow-up actions.
Array item
A globally unique identifier for this eligibility check across all Stedi accounts. It's formatted as ec_<uuid>. For example: ec_550e8400-e29b-41d4-a716-446655440000. You can use this ID to track this eligibility check and to construct deep links to eligibility checks in the Stedi portal.
Metadata about the response. Stedi uses this data for tracking and troubleshooting.
Show attributes
Information about the payer providing the benefits information. The response will always include the payer's business name and an identifier, such as the payer's tax ID. Most payers also include contact information.
Show attributes
The primary payer ID from the Stedi Payer Network. This ID is consistent across eligibility and claims systems and matches the payer ID printed on the member's ID card. You can use it as the payerId in subsequent eligibility check requests.
The patient's insurance plans, grouped by plan name. Each plan contains the benefits that apply to the patient.
Array item
Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's NPI, tax ID, or EIN.
Show attributes
Information about the primary policyholder for the insurance plan listed in the original eligibility check request. The response will always include either the subscriber's name or member ID for identification, but most payers will also return the subscriber's date of birth and other identifying information. Some payers truncate names to fit their own technical limits, so the payer may not return the subscriber's full legal name.
Show attributes
Issues with your eligibility request that could affect the results, or information about the response. For example, warnings can help explain why the request was rejected.
Array item
Typically this property contains the raw X12 EDI 271 Eligibility Benefit Response from the payer.
In some circumstances, this property may contain a 999 Implementation Acknowledgment instead of a 271. A 999 indicates validation errors in the X12 EDI transaction, such as improper formatting or missing or invalid values.
If this property contains a 999, many of the other response properties will be empty, as Stedi populates them with information from the 271.
curl --request POST \ --url "https://healthcare.us.stedi.com/2026-06-01/eligibility-check" \ --header "Authorization: <api_key>" \ --header "Content-Type: application/json" \ --data '{ "encounter": { "services": [ { "system": "STC", "value": "30" } ] }, "payerId": "61101", "provider": { "name": { "organization": "Provider Name" }, "npi": "1999999984" }, "subscriber": { "dateOfBirth": "1975-05-05", "memberId": "HUMANA123", "name": { "person": { "firstName": "Jane", "lastName": "Doe" } } } }'{
"eligibilitySearchId": "01a06d4a-a0fa-77d2-8b49-caa0546ed292",
"id": "ec_01a06d4a-a0fa-77d2-8b49-ca9a74c9888a",
"meta": {
"outboundTraceId": "01M1PMN87VXMME0ZV6SHJP3B9V",
"subscriberTraceNumbers": [
{
"originatingCompanyIdentifier": "0101010101",
"referenceIdentification": "000011112222333",
"type": "CURRENT_TRANSACTION"
}
],
"traceId": "01M1PMN87VXMME0ZV6SHJP3B9V"
},
"payer": {
"identification": "61101",
"name": {
"organization": "HUMANA"
},
"type": "PAYER"
},
"payerId": "61101",
"plans": [
{
"benefits": {
"benefitDisclaimer": [
{
"coverageLevel": "INDIVIDUAL",
"messages": [
"THIS IS ONLY AN ESTIMATION OF BENEFITS, AND ALL PAYMENTS ARE SUBJECT TO POLICY GUIDELINES, MEDICAL NECESSITY, AND MEMBER ELIGIBILITY AT THE TIME SERVICES ARE PERFORMED."
],
"network": {
"indicator": "IN_AND_OUT_OF_NETWORK"
}
}
],
"coInsurance": [
{
"coverageLevel": "INDIVIDUAL",
"insuranceType": "PREFERRED_PROVIDER_ORGANIZATION_PPO",
"messages": [
"INPATIENT HOSPITAL ROOM AND BOARD"
],
"network": {
"indicator": "IN_NETWORK"
},
"percent": "0",
"service": {
"definition": "Hospital - Room and Board",
"system": "STC",
"value": "49"
},
"timePeriod": "ADMISSION"
}
],
"coPayment": [
{
"amount": "2000",
"coverageLevel": "INDIVIDUAL",
"insuranceType": "PREFERRED_PROVIDER_ORGANIZATION_PPO",
"messages": [
"INPATIENT HOSPITAL ROOM AND BOARD"
],
"network": {
"indicator": "IN_NETWORK"
},
"service": {
"definition": "Hospital - Room and Board",
"system": "STC",
"value": "49"
},
"timePeriod": "ADMISSION"
},
{
"amount": "100",
"coverageLevel": "INDIVIDUAL",
"insuranceType": "PREFERRED_PROVIDER_ORGANIZATION_PPO",
"messages": [
"ER"
],
"network": {
"indicator": "IN_NETWORK"
},
"service": {
"definition": "Emergency Services",
"system": "STC",
"value": "86"
},
"timePeriod": "EPISODE"
}
],
"deductible": [
{
"amount": "0",
"coverageLevel": "INDIVIDUAL",
"insuranceType": "PREFERRED_PROVIDER_ORGANIZATION_PPO",
"messages": [
"INPATIENT HOSPITAL ROOM AND BOARD"
],
"network": {
"indicator": "IN_NETWORK"
},
"service": {
"definition": "Hospital - Room and Board",
"system": "STC",
"value": "49"
}
}
],
"limitations": [
{
"coverageLevel": "INDIVIDUAL",
"messages": [
"MAX DEPENDENT AGE"
],
"network": {
"indicator": "IN_AND_OUT_OF_NETWORK"
},
"quantity": {
"qualifier": "YEARS",
"value": "26"
},
"service": {
"definition": "Health Benefit Plan Coverage",
"system": "STC",
"value": "30"
}
}
],
"nonCovered": [
{
"amount": "0",
"coverageLevel": "INDIVIDUAL",
"insuranceType": "PREFERRED_PROVIDER_ORGANIZATION_PPO",
"messages": [
"VIEW CONTRACT FOR COVERAGE DETAILS"
],
"network": {
"indicator": "IN_NETWORK"
},
"service": {
"definition": "Dental Care",
"system": "STC",
"value": "35"
}
}
],
"otherSourceOfData": [
{
"coverageLevel": "INDIVIDUAL",
"messages": [
"NO DESCRIPTION PROVIDED"
],
"network": {
"indicator": "IN_AND_OUT_OF_NETWORK"
}
}
],
"outOfPocket": [
{
"amount": "8000",
"coverageLevel": "INDIVIDUAL",
"insuranceType": "PREFERRED_PROVIDER_ORGANIZATION_PPO",
"network": {
"indicator": "IN_NETWORK"
},
"service": {
"definition": "Health Benefit Plan Coverage",
"system": "STC",
"value": "30"
},
"timePeriod": "CALENDAR_YEAR"
}
],
"primaryCareProvider": [
{
"coverageLevel": "INDIVIDUAL",
"network": {
"indicator": "IN_AND_OUT_OF_NETWORK"
},
"relatedEntities": [
{
"address": {
"addressLine1": "202 Main St",
"city": "Tulsa",
"postalCode": "74008",
"state": "OK"
},
"contacts": [
{
"phoneNumbers": [
"9999999999"
]
}
],
"name": {
"person": {
"firstName": "Dough",
"lastName": "John"
}
},
"type": "PRIMARY_CARE_PROVIDER"
}
]
}
],
"statuses": [
{
"coverageLevel": "EMPLOYEE_ONLY",
"insuranceType": "PREFERRED_PROVIDER_ORGANIZATION_PPO",
"messages": [
"000 111",
"Medicare PPO",
"Member cannot be balanced billed for medical copayments, coinsurance or deductibles on this Plan. Member is cost-share protected by the state Medicaid. In WA if Medicaid is not cost-share protecting members, Humana will process the claim paying member cost share.",
"THIS MEMBER MAY BE ELIGIBLE FOR A FREE FITNESS MEMBERSHIP."
],
"network": {
"indicator": "IN_AND_OUT_OF_NETWORK"
},
"service": {
"definition": "Health Benefit Plan Coverage",
"system": "STC",
"value": "30"
},
"status": "ACTIVE_COVERAGE"
}
]
},
"name": "Humana Gold Plan"
}
],
"provider": {
"name": {
"organization": "MEDICAL PROVIDER"
},
"npi": "1999999984",
"type": "PROVIDER"
},
"subscriber": {
"additionalInformation": {
"group": {
"name": "HUMANA INSURANCE COMPANY",
"number": "11223344"
},
"mbi": "1A22BB3CC44"
},
"address": {
"addressLine1": "101 MAIN ST",
"city": "ATLANTA",
"postalCode": "303010001",
"state": "GA"
},
"dateOfBirth": "1975-05-05",
"dates": {
"plan": {
"start": "2024-01-01"
},
"service": {
"start": "2024-09-17"
}
},
"gender": "FEMALE",
"memberId": "HUMANA123",
"name": {
"person": {
"firstName": "JANE",
"lastName": "DOE",
"middleName": "L"
}
}
},
"x12": "ISA*00* *00* *ZZ*STEDI *01*117151744 *260904*1640*^*00501*263887373*0*T*`~GS*HB*STEDI*117151744*20260904*164002*1*X*005010X279A1~ST*271*0001*005010X279A1~BHT*0022*11*01M1PMN87VXMME0ZV6SHJP3B9V*20260325*0901~HL*1**20*1~NM1*PR*2*HUMANA*****PI*61101~HL*2*1*21*1~NM1*1P*2*MEDICAL PROVIDER*****XX*1999999984~HL*3*2*22*0~TRN*1*000011112222333*0101010101~NM1*IL*1*DOE*JANE*L***MI*HUMANA123~REF*6P*11223344~REF*6P*11223344*HUMANA INSURANCE COMPANY~REF*F6*1A22BB3CC44~N3*101 MAIN ST~N4*ATLANTA*GA*303010001~DMG*D8*19750505*F~DTP*346*D8*20240101~DTP*472*D8*20240917~EB*1*EMP*30*PR*Humana Gold Plan*******W~MSG*000 111~MSG*Medicare PPO~MSG*Member cannot be balanced billed for medical copayments, coinsurance or deductibles on this Plan. Member is cost-share protected by the state Medicaid. In WA if Medicaid is not cost-share protecting members, Humana will process the claim paying member cost share.~MSG*THIS MEMBER MAY BE ELIGIBLE FOR A FREE FITNESS MEMBERSHIP.~EB*L***********W~LS*2120~NM1*P3*1*John*Dough~N3*202 Main St~N4*Tulsa*OK*74008~PER*IC**TE*9999999999~LE*2120~EB*F**30******YY*26**W~MSG*MAX DEPENDENT AGE~EB*F**30******YY*31**W~MSG*MAX STUDENT AGE~EB*L****AFFILIATION/CENTER*******W~LS*2120~NM1*GW*2*OK EMP PPO*****PI*34343434~LE*2120~EB*W***********W~MSG*NO DESCRIPTION PROVIDED~EB*1**1^54^33^98^88^UC^47^50^AL^MH^35^86^48*********W~EB*1*IND*1*PR***0*****Y~EB*A*IND*49*PR**36**0****Y~MSG*INPATIENT HOSPITAL ROOM AND BOARD~EB*B*IND*49*PR**36*2000*****Y~MSG*INPATIENT HOSPITAL ROOM AND BOARD~EB*C*IND*49*PR***0*****Y~MSG*INPATIENT HOSPITAL ROOM AND BOARD~EB*A*IND*48*PR**23**0****Y~MSG*INPATIENT HOSPITAL~EB*C*IND*48*PR***0*****Y~MSG*INPATIENT HOSPITAL~EB*A*IND*86*PR**23**0****Y~MSG*ER~EB*B*IND*86*PR**26*100*****Y~MSG*ER~EB*A*IND*86*PR**23**0****Y~MSG*ANESTHESIA~EB*B*IND*86*PR**26*100*****Y~MSG*ANESTHESIA~EB*C*IND*86*PR***0*****Y~MSG*ER~EB*C*IND*86*PR***0*****Y~MSG*ANESTHESIA~EB*I*IND*35*PR***0*****Y~MSG*VIEW CONTRACT FOR COVERAGE DETAILS~EB*A*IND*MH^98*PR**23**0****Y~MSG*TELEHEALTH VISIT PCP~III*ZZ*10~EB*A*IND*MH*PR**23**0****Y~MSG*TELEHEALTH VISIT SPECIALIST~III*ZZ*10~EB*C*IND*MH^98*PR***0*****Y~MSG*TELEHEALTH VISIT PCP~III*ZZ*10~EB*C*IND*MH^98*PR***0*****Y~MSG*TELEHEALTH VISIT SPECIALIST~III*ZZ*10~EB*1*IND*MH*PR***0*****Y~MSG*PHYSICIAN OFFICE VISIT SPECIALIST~EB*A*IND*AL*PR**23**0****Y~MSG*ROUTINE VISION EXAM~EB*F*IND*AL*PR**23*40*****Y~MSG*ROUTINE VISION EXAM~EB*C*IND*AL*PR***0*****Y~MSG*ROUTINE VISION EXAM~EB*A*IND*50*PR****.2****Y~MSG*OUTPATIENT HOSPITAL SURGERY~EB*A*IND*50*PR****.2****Y~MSG*OUTPATIENT HOSPITAL ANESTHESIA~EB*A*IND*50*PR****.2****Y~MSG*OUTPATIENT HOSPITAL MRI SCAN~EB*A*IND*50*PR****.2****Y~MSG*OUTPATIENT HOSPITAL CAT SCAN~EB*C*IND*50*PR***250*****Y~MSG*OUTPATIENT HOSPITAL SURGERY~EB*C*IND*50*PR***250*****Y~MSG*OUTPATIENT HOSPITAL ANESTHESIA~EB*C*IND*50*PR***250*****Y~MSG*OUTPATIENT HOSPITAL MRI SCAN~EB*C*IND*50*PR***250*****Y~MSG*OUTPATIENT HOSPITAL CAT SCAN~EB*1*IND*47*PR***0*****Y~MSG*INPATIENT HOSPITAL~EB*A*IND*UC*PR****.2****Y~MSG*PHYSICIAN OFFICE URGENT CARE~EB*A*IND*UC*PR****.2****Y~MSG*PHYSICIAN OFFICE PREFERRED URGENT CARE~EB*A*IND*UC*PR****.2****Y~MSG*TELEHEALTH URGENT CARE~EB*C*IND*UC*PR***0*****Y~MSG*PHYSICIAN OFFICE URGENT CARE~EB*C*IND*UC*PR***0*****Y~MSG*PHYSICIAN OFFICE PREFERRED URGENT CARE~EB*C*IND*UC*PR***0*****Y~MSG*TELEHEALTH URGENT CARE~EB*C**88****550*****Y~EB*C**88****0*****Y~EB*B**88****35*****Y~MSG*LEVEL 3~EB*B**88****35*****Y~EB*A*IND*98*PR****.2****Y~MSG*PHYSICIAN OFFICE VISIT PCP~EB*A*IND*98*PR****.2****Y~MSG*PHYSICIAN OFFICE VISIT SPECIALIST~EB*A*IND*98*PR****.2****Y~MSG*PHYSICIAN OFFICE VISIT FREESTANDING RAD CTR~EB*A*IND*98*PR****.2****Y~MSG*PHYSICIAN OFFICE VISIT COMP OUTPT REHAB FACILITY~EB*B*IND*98*PR**23*0*****Y~MSG*TELEHEALTH VISIT PCP~III*ZZ*10~EB*F*IND*98*PR**23**1****Y~MSG*TELEHEALTH VISIT PCP~III*ZZ*10~EB*A*IND*98*PR****.2****Y~MSG*TELEHEALTH VISIT SPECIALIST~III*ZZ*10~EB*C*IND*98*PR***250*****Y~MSG*PHYSICIAN OFFICE VISIT PCP~EB*C*IND*98*PR***250*****Y~MSG*PHYSICIAN OFFICE VISIT SPECIALIST~EB*C*IND*98*PR***250*****Y~MSG*PHYSICIAN OFFICE VISIT FREESTANDING RAD CTR~EB*C*IND*98*PR***250*****Y~MSG*PHYSICIAN OFFICE VISIT COMP OUTPT REHAB FACILITY~EB*I*IND*98*PR***0*****Y~MSG*PHYSICIAN OFFICE DOCTOR ON DEMAND NOT COVERED~EB*A*IND*33*PR****.2****Y~MSG*MEDICARE COVERED MANIPULATIONS~EB*I*IND*33*PR***0*****Y~MSG*MANIPULATIONS~EB*I*IND*33*PR***0*****Y~MSG*RADIOLOGY~EB*C*IND*33*PR***250*****Y~MSG*MEDICARE COVERED MANIPULATIONS~EB*C*IND*30*PR**23*250*****Y~MSG*SEE EXACT BENEFIT TO VERIFY IF DEDUCTIBLE APPLIES~EB*G*IND*30*PR**23*8000*****Y~EB*G*IND*30***24*200*****W~EB*G*IND*30***29*8500*****W~EB*G*IND*30***24*200*****Y~EB*G*IND*30***29*4000*****Y~EB*F*IND*30***24*30000*****W~EB*F*IND*30***29*9000000*****W~EB*C*IND*30***24*250*****W~EB*C*IND*30***29*0*****W~EB*F*IND*30***24*10000*****W~EB*F*IND*30***29*9000000*****W~EB*G*IND*30***24*400*****W~EB*G*IND*30***29*12000*****W~EB*G*IND*30***24*400*****Y~EB*G*IND*30***29*7500*****Y~EB*P***********W~MSG*THIS IS ONLY AN ESTIMATION OF BENEFITS, AND ALL PAYMENTS ARE SUBJECT TO POLICY GUIDELINES, MEDICAL NECESSITY, AND MEMBER ELIGIBILITY AT THE TIME SERVICES ARE PERFORMED.~SE*175*0001~GE*1*1~IEA*1*263887373~"
}