Optum Eligibility Requests API

Submit new real-time eligibility transactions. These endpoints accept either a normalized JSON request or a JSON request body with `x12` set to the X12 270 payload, and return a normalized JSON eligibility response. When a customer is enrolled in integrated Coverage Discovery, these operations may also return related discovery task links in the response headers.

Business capability
Eligibility & Benefits Verification BC-2800.30

Operations 2

POST /rcm/eligibility/v1 Submit a new eligibility request #
POST /rcm/eligibility/v1/real-time/x12 Submit a new X12 270 eligibility request #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/optum-eligibility-requests-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

optum-eligibility-requests-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Enhanced Eligibility Eligibility Requests API
  description: 'Enhanced Eligibility provides real-time eligibility verification for medical benefit inquiries and optional Coverage Discovery workflows when additional coverage needs to be researched asynchronously.


    Timing guidance:

    - Real-Time Eligibility is synchronous, but payer and clearinghouse response time dominate the end-to-end latency.

    - The OI Enterprise gateway times out at 110 seconds for this API.

    - Request deduplication is customer-configurable and determines whether a request is sent to the clearinghouse or short-circuited by replaying a prior transaction response.

    - RTCOB and Coverage Insight also use a separate non-configurable 72-hour request cache. When that cache is hit, the path is marked as skipped instead of creating a new downstream submission.

    - Coverage Discovery is asynchronous because some paths involve chained clearinghouse work and additional connected workflow dependencies.

    - Most non-Coverage-Insight discovery paths are near real time relative to traditional discovery workflows.

    - Customers with strict turnaround sensitivity should evaluate Coverage Insight enrollment carefully.

    - Coverage Discovery paths and add-ons are enabled per customer and are not included automatically.


    Primary integration patterns:

    1. Submit a real-time eligibility request as normalized JSON or as a JSON request body with `x12` set to the X12 270 payload, and receive a normalized JSON response.

    2. If enrolled in Coverage Discovery, inspect the real-time response `link` header for related discovery task resources when discovery is automatically triggered from the real-time request/response.

    3. For advanced use cases, submit Coverage Discovery requests directly when you already possess a processed canonical eligibility request and, when needed, a processed eligibility response, and want asynchronous follow-up processing using a callback URL or by polling the discovery task resource.

    4. When using direct discovery, the X12 workflow is often easier than the canonical JSON workflow because it accepts the processed `x12-270` and `x12-271` rather than requiring mapping into both canonical models.

    '
  version: v0.2.0
servers:
- url: https://sandbox-apigw.optum.com
  description: Sandbox server (uses test data)
- url: https://apigw.optum.com
  description: Production server (uses live data)
tags:
- name: Eligibility Requests
  description: 'Submit new real-time eligibility transactions. These endpoints accept either a normalized JSON request or a JSON request body with `x12` set to the X12 270 payload, and return a normalized JSON eligibility response. When a customer is enrolled in integrated Coverage Discovery, these operations may also return related discovery task links in the response headers.

    '
paths:
  /rcm/eligibility/v1:
    post:
      operationId: postEligibility
      tags:
      - Eligibility Requests
      summary: Submit a new eligibility request
      security:
      - oAuth:
        - create_txn
      description: "## Overview\nProvided a valid request, this endpoint submits a new real-time transaction for processing.\nThe submitted provider NPI must be a valid NPI and follow standard NPI validation rules. If no valid NPI is identified for the request, the transaction returns `status.value` of `processing_error` with this message: `No valid NPI identified for this request. Please reach out to the Enhanced Eligibility team if assistance is needed.`\nThe response is JSON and includes the raw `x12-271` response string so clients can extract the payer's original EDI response if needed.\nReal-time response time is driven primarily by payer and clearinghouse latency. The OI Enterprise gateway times out at 110 seconds for this API.\nIf your organization is enrolled in deduplication, that feature is evaluated before clearinghouse submission. Deduplication is customer-configurable, including the lookback window and whether prior-month requests are excluded. When a duplicate is found, the clearinghouse is skipped and the transaction `sourceType` is `duplicate`.\n## Coverage Discovery Integration\nIf you are enrolled in Coverage Discovery at the time of the request and your configured discovery conditions are met, the Coverage Discovery workflow will be started automatically. Common examples include real-time responses with `status.value` of `ineligible` or `patient_unknown`, or response-side HMO plan information that qualifies an HMO discovery path. In this scenario, the response `link` header contains one or more related Coverage Discovery task resource paths, e.g.:\n`</coverage-discovery/0716e3e8-87ee-11ee-b9d1-0242ac120002>; title=\"coverage discovery - Task 1\"; rel=\"related\", </coverage-discovery/0e565a58-87ee-11ee-b9d1-0242ac120002>; title=\"coverage discovery - Task 2\"; rel=\"related\"`\nParse this header as RFC 8288-style link values. When more than one discovery task is created, multiple related links may be returned in the same header.\nWhen discovery is triggered from this JSON real-time endpoint, the submitted request body is used as the `canonicalEligibilityRequest` later referenced by Coverage Discovery. If response-side facts are needed, the normalized real-time response body is used as `canonicalEligibilityResponse`.\nEach related resource can be retrieved through the `/coverage-discovery/{id}` endpoint.\nIf conditions are not met, the `link` response header will not contain any related `/coverage-discovery` references.\n### Callback Solution With Consolidated Real-Time Eligibility and Coverage Discovery Responses\nIf you are enrolled in the consolidated callback capability, you may receive the **Real-Time Eligibility (RTE)** response together with the **Coverage Discovery** response.\nWhen enabled, the abbreviated eligibility transaction will be included in the corresponding Coverage Discovery record.\n\n ⚠️ **Note:** This integrated response is **only available via callback** and **only if your organization is enrolled in this capability**.\n\nRefer to the `/coverage-discovery/{id}` response examples for data model references.\nFor predictable Sandbox canned-response testing, use the Sandbox Mock Scenarios guidance. JSON Sandbox requests continue to use the normal supported Sandbox request values."
      parameters:
      - $ref: '#/components/parameters/header-correlation-id'
      - $ref: '#/components/parameters/header-subtenant-id'
      - in: header
        name: x-optum-eligibility-disable-value-add
        schema:
          type: array
          items:
            type: string
            enum:
            - deduplication
            example: deduplication
          example: deduplication
        description: (Optional) A comma-delimited list of strings that disable value-added features on a request-by-request basis. `deduplication` disables the customer-configured request deduplication feature for that request only. If you specify a value-added feature that you are not enrolled in, it will be ignored.
      requestBody:
        $ref: '#/components/requestBodies/EligibilityRequest'
      responses:
        '200':
          $ref: '#/components/responses/EligibilityResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/PermissionDeniedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        5XX:
          $ref: '#/components/responses/UnexpectedError'
  /rcm/eligibility/v1/real-time/x12:
    post:
      operationId: postEligibilityX12
      tags:
      - Eligibility Requests
      summary: Submit a new X12 270 eligibility request
      security:
      - oAuth:
        - create_txn
      description: "## Overview\nProvided a valid request, this endpoint accepts a JSON body whose `x12` field contains the raw EDI X12 270 payload and submits a new real-time transaction for processing.\nThe provider NPI sent in the X12 270 must be a valid NPI and follow standard NPI validation rules. If no valid NPI is identified for the request, the transaction returns `status.value` of `processing_error` with this message: `No valid NPI identified for this request. Please reach out to the Enhanced Eligibility team if assistance is needed.`\nThe response uses the same normalized JSON model returned by the JSON real-time endpoint. Both real-time endpoints return JSON, and that JSON includes the raw `x12-271` response string so clients can extract the payer's original EDI response if needed.\nReal-time response time is driven primarily by payer and clearinghouse latency. The OI Enterprise gateway times out at 110 seconds for this API.\nIf your organization is enrolled in deduplication, that feature is evaluated before clearinghouse submission. Deduplication is customer-configurable, including the lookback window and whether prior-month requests are excluded. When a duplicate is found, the clearinghouse is skipped and the transaction `sourceType` is `duplicate`.\n## Coverage Discovery Integration\nIf you are enrolled in Coverage Discovery at the time of the request and your configured discovery conditions are met, the Coverage Discovery workflow will be started automatically. Common examples include real-time responses with `status.value` of `ineligible` or `patient_unknown`, or response-side HMO plan information parsed from the returned `x12-271`. In this scenario, the response `link` header contains one or more related Coverage Discovery task resource paths, e.g.:\n`</coverage-discovery/0716e3e8-87ee-11ee-b9d1-0242ac120002>; title=\"coverage discovery - Task 1\"; rel=\"related\", </coverage-discovery/0e565a58-87ee-11ee-b9d1-0242ac120002>; title=\"coverage discovery - Task 2\"; rel=\"related\"`\nParse this header as RFC 8288-style link values. When more than one discovery task is created, multiple related links may be returned in the same header.\nWhen discovery is triggered from this X12 real-time endpoint, the submitted `x12` value is used to derive the `canonicalEligibilityRequest` used by Coverage Discovery. If response-side facts are needed, the normalized JSON response and its embedded `x12-271` are used as `canonicalEligibilityResponse`.\nEach related resource can be retrieved through the `/coverage-discovery/{id}` endpoint.\nIf conditions are not met, the `link` response header will not contain any related `/coverage-discovery` references.\n### Callback Solution With Consolidated Real-Time Eligibility and Coverage Discovery Responses\nIf you are enrolled in the consolidated callback capability, you may receive the **Real-Time Eligibility (RTE)** response together with the **Coverage Discovery** response.\nWhen enabled, the abbreviated eligibility transaction will be included in the corresponding Coverage Discovery record.\n\n ⚠️ **Note:** This integrated response is **only available via callback** and **only if your organization is enrolled in this capability**.\n\nRefer to the `/coverage-discovery/{id}` response examples for data model references.\n## Sandbox Mock Testing\nIn the Sandbox environment, you can optionally send `x-optum-rcmelig-mock-scenarios` to trigger a canned X12 mock response. This header is Sandbox-only, the value must be an exact case-sensitive match, and the payer id in `NM1*PR*2 ... PI*` must align to the selected scenario."
      parameters:
      - $ref: '#/components/parameters/header-correlation-id'
      - $ref: '#/components/parameters/header-subtenant-id'
      - in: header
        name: x-optum-rcmelig-mock-scenarios
        required: false
        schema:
          type: string
        description: (Sandbox only) Optional canned-response selector for X12 mock testing. The value must be an exact case-sensitive scenario string.
      - in: header
        name: x-optum-eligibility-disable-value-add
        schema:
          type: array
          items:
            type: string
            enum:
            - deduplication
            example: deduplication
          example: deduplication
        description: (Optional) A comma-delimited list of strings that disable value-added features on a request-by-request basis. `deduplication` disables the customer-configured request deduplication feature for that request only. If you specify a value-added feature that you are not enrolled in, it will be ignored.
      requestBody:
        $ref: '#/components/requestBodies/EligibilityRequestX12'
      responses:
        '200':
          $ref: '#/components/responses/EligibilityResponseX12'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/PermissionDeniedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        5XX:
          $ref: '#/components/responses/UnexpectedError'
components:
  schemas:
    EligibilityRequest:
      type: object
      description: Standalone JSON representation of a standard 270 eligibility request. This schema is fully inlined into this spec so the API definition stands on its own.
      required:
      - subscriber
      - encounter
      properties:
        submitterTransactionIdentifier:
          type: string
          description: BHT03
        controlNumber:
          type: string
          minLength: 9
          maxLength: 9
          description: 'Segment: ISA, Element: ISA13, Notes: Optional. If omitted, Enhanced Eligibility generates the Interchange Control Number. When supplied, it must be exactly 9 positive unsigned numeric characters.'
          example: '123456789'
        tradingPartnerServiceId:
          type: string
          minLength: 0
          maxLength: 80
          description: 'Loop: 2100A Segment: NM1, Element: NM109, Notes: we send this as MN108 as PI'
          example: serviceId
        tradingPartnerName:
          type: string
          minLength: 0
          maxLength: 80
          description: 'Loop: 2100A, Segment: NM1, Element: NM103, Notes: organizational name'
        provider:
          type: object
          properties:
            organizationName:
              type: string
              minLength: 0
              maxLength: 60
              description: 'Loop: 2100B Segment: NM1, Element: NM103'
              example: provider_name
            firstName:
              type: string
              minLength: 0
              maxLength: 35
              description: 'Loop: 2100B Segment: NM1, Element: NM104'
            lastName:
              type: string
              minLength: 0
              maxLength: 60
              description: 'Loop: 2100B Segment: NM1, Element: NM103'
            npi:
              type: string
              minLength: 0
              maxLength: 80
              description: 'Loop: 2100B Segment: NM1, Element: NM109, Notes: NM108=XX Centers for Medicare and Medicaid Services National Provider Identifier. The submitted value must be a valid NPI and follow standard NPI validation rules.'
              example: '1234567893'
            serviceProviderNumber:
              type: string
              minLength: 0
              maxLength: 80
              description: 'Loop: 2100B Segment: NM1, Element: NM109, Notes: NM108=SV Service Provider Number'
              example: '54321'
            payorId:
              type: string
              minLength: 0
              maxLength: 80
              description: 'Loop: 2100B Segment: NM1, Element: NM109, Notes: NM108=PI Payor Identification'
            taxId:
              type: string
              minLength: 0
              maxLength: 80
              description: 'Loop: 2100B Segment: NM1, Element: NM109, Notes: NM108=FI Federal Taxpayer''s Identification Number'
            ssn:
              type: string
              minLength: 0
              maxLength: 80
              description: 'Loop: 2100B Segment: NM1, Element: NM109, Notes: NM108=34 Social Security Number'
            pharmacyProcessorNumber:
              type: string
              minLength: 0
              maxLength: 80
              description: 'Loop: 2100B Segment: NM1, Element: NM109, Notes: NM108=PP Pharmacy Processor Number'
            servicesPlanID:
              type: string
              minLength: 0
              maxLength: 80
              description: 'Loop: 2100B Segment: NM1, Element: NM109, Notes: NM108=XV Centers for Medicare and Medicaid Services PlanID'
            employersId:
              type: string
              minLength: 0
              maxLength: 80
              description: 'Loop: 2100B Segment: NM1, Element: NM109, Notes: NM108=24 Employer''s Identification Number'
            providerCode:
              type: string
              description: 'Loop: 2100B Segment: PRV, Element: PRV01'
              example: AD
              enum:
              - AD
              - AT
              - BI
              - CO
              - CV
              - H
              - HH
              - LA
              - OT
              - P1
              - P2
              - PC
              - PE
              - R
              - RF
              - SB
              - SK
              - SU
            referenceIdentification:
              type: string
              description: 'Loop: 2100B Segment: PRV, Element: PRV03'
              example: 54321g
            providerType:
              type: string
              description: 'Loop: 2100B Segment: NM1, Element: NM101'
              enum:
              - payer
              - third-party administrator
              - employer
              - hospital
              - facility
              - gateway provider
              - plan sponsor
              - provider
        portalUsername:
          type: string
          minLength: 0
          maxLength: 50
          description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: User Identification REF01=JD'
        portalPassword:
          type: string
          minLength: 0
          maxLength: 50
          description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: Personal Identification Number (PIN) REF01=4A'
        informationReceiverName:
          type: object
          properties:
            stateLicenceNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=0B State License Number'
            medicareProviderNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=1C Medicare Provider Number'
            medicaidProviderNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=1D Medicaid Provider Number'
            facilityIdNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=1J Facility ID Number'
            contactNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=CT Contact Number'
            devicePinNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=EL Electronic Device Pin Number'
            submitterIdNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=EO Submitter Identification Number'
            nationalProviderIdentifier:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=HPI Centers for Medicare and Medicaid Services National Provider Identifier'
            providerPlanNetworkIdNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=N5 Provider Plan Network Identification Number'
            facilityNetworkIdNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=N7 Facility Network Identification Number'
            priorIdentifierNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=Q4 Prior Identifier Number'
            socialSecurityNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=SY Social Security Number'
            federalTaxpayerIdentificationNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF02, Notes: REF01=TJ Federal Taxpayer''s Identification Number'
            informationReceiverAdditionalIdentifierState:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100B, Segment: REF, Element: REF03, Notes: REF01=0B REF02=stateLicenceNumber'
            address:
              type: object
              properties:
                address1:
                  type: string
                  minLength: 0
                  maxLength: 55
                  description: 'Segment: N3, Element: N301, Notes: Required, Address Information'
                  example: 123 address1
                address2:
                  type: string
                  minLength: 0
                  maxLength: 55
                  description: 'Segment: N3, Element: N302, Notes: Address Information'
                city:
                  type: string
                  minLength: 0
                  maxLength: 30
                  description: 'Segment: N4, Element: N401, Notes: Required, city'
                  example: city1
                state:
                  type: string
                  minLength: 0
                  maxLength: 2
                  description: 'Segment: N4, Element: N402, Notes: state example: TN, WA'
                  example: wa
                postalCode:
                  type: string
                  minLength: 0
                  maxLength: 15
                  description: 'Segment: N4, Element: N403'
                  example: '981010000'
                countryCode:
                  type: string
                  description: 'Segment: N4, Element: N404'
                locationIdentifier:
                  type: string
                  description: 'Segment: N4, Element: N406'
                countrySubDivisionCode:
                  type: string
                  description: 'Segment: N4, Element: N407, Notes: Country SubDivision Code'
        subscriber:
          type: object
          properties:
            birthSequenceNumber:
              type: string
              minLength: 0
              maxLength: 9
              pattern: ^[0-9]+$
              description: 'Loop: 2100C Segment: INS, Element: INS17, Notes: Birth Sequence Number'
            caseNumber:
              type: string
              minLength: 0
              maxLength: 50
              pattern: ^[A-Za-z0-9]+$
              description: 'Loop: 2100C Segment: REF, Element: REF02, Notes: REF01=3H Case Number'
            medicaidRecipientIdentificationNumber:
              type: string
              minLength: 0
              maxLength: 80
              pattern: ^[A-Za-z0-9]+$
              description: 'Loop: 2110C Segment: REF, Element: REF02, Notes: REF01=NQ Medicaid Recipient Identification Number'
            spendDownAmount:
              type: string
              minLength: 0
              maxLength: 18
              description: 'Loop: 2110C Segment: ATM, Element: ATM02, Notes: ATM01=R Spend Down'
            spendDownTotalBilledAmount:
              type: string
              minLength: 0
              maxLength: 18
              description: 'Loop: 2110C Segment: ATM, Element: ATM02, Notes: ATM01=PB Billed Amount'
            coverageLevelCode:
              type: string
              minLength: 0
              maxLength: 3
              description: 'Loop: 2110C Segment: EQ, Element: EQ03, Notes: Retired, Not Used'
            memberId:
              type: string
              minLength: 0
              maxLength: 80
              pattern: ^[A-Za-z0-9-]+$
              description: 'Loop: 2100C and 2100D, Segment: NM1, Element: NM109, Notes: NM108=MI'
              example: '0000000000'
            firstName:
              type: string
              minLength: 0
              maxLength: 35
              description: 'Loop: 2100C and 2100D, Segment: NM1, Element: NM104'
              example: johnOne
            middleName:
              type: string
              minLength: 0
              maxLength: 25
              description: 'Loop: 2100C and 2100D, Segment: NM1, Element: NM105'
            lastName:
              type: string
              minLength: 0
              maxLength: 60
              description: 'Loop: 2100C and 2100D, Segment: NM1, Element: NM103'
              example: doeOne
            suffix:
              type: string
              minLength: 0
              maxLength: 10
              description: 'Loop: 2100C and 2100D, Segment: NM1, Element: NM107'
            gender:
              type: string
              minLength: 0
              maxLength: 1
              description: 'Loop: 2100C and 2100D, Segment: DMG, Element: DMG03'
              example: M
              enum:
              - M
              - F
            dateOfBirth:
              type: string
              description: 'Loop: 2100C and 2100D, Segment: DMG, Element: DMG02, Notes: date of birth in YYYYMMDD'
              example: '18800102'
            ssn:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100C and 2100D, Segment: REF, Element: REF02, Notes: REF01=SY Social Security Number'
            groupNumber:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100C and 2100D, Segment: REF, Element: REF02, Notes: REF01=6P Group Number'
              example: '1111111111'
            idCard:
              type: string
              minLength: 0
              maxLength: 50
              description: 'Loop: 2100C and 2100D, Segment: REF, Element: REF02, Notes: REF01=HJ Identity Card Number'
            providerCode:
              type: string
              description: 'Loop: 2100C and 2100D, Segment: PRV, Element: PRV01'
              enum:
              - AD
              - AT
              - BI
              - CO
              - CV
              - H
              - HH
              - LA
              - OT
              - P1
              - P2
              - PC
              - PE
              - R
              - RF
              - SK
              - SU
            referenceIdentificationQualifier:
              type: string
              description: 'Loop: 2100C and 2100D, Segment: PRV, Element: PRV02'
              enum:
              - 9K
              - D3
              - EI
              - HPI
              - PXC
              - SY
              - TJ
            providerIdentifier:
              type: string
              minLength: 0
              maxLength: 50
              pattern: ^[A-Za-z0-9]+$
              description: 'Loop: 2100C and 2100D, Segment: PRV, Element: PRV03, Notes: Provider Identifier'
            beginningCardIssueDate:
              type: string
              description: 'Loop: 2110C and 2110D, Segment: DTP, Element: DTP03, Notes: DTP01=102, DTP02=RD8 Retired'
            endCardIssueDate:
              type: string
              description: 'Loop: 2110C and 2110D, Segment: DTP, Element: DTP03, Notes: DTP01=102, DTP02=RD8 Retired'
            idCardIssueDate:
              type: string
              description: 'Loop: 2110C and 2110D, Segment: DTP, Element: DTP03, Notes: DTP01=102, DTP02=D8 Retired'
            planIssueDate:
              type: string
              description: 'Loop: 2110C and 2110D, Segment: DTP, Element: DTP03, Notes: DTP01=291, DTP02=D8 Retired'
            beginningPlanIssueDate:
              type: string
              description: 'Loop: 2110C and 2110D, Segment: DTP, Element: DTP03, Notes: DTP01=291, DTP02=RD8 Retired'
            endPlanIssueDate:
              type: string
              description: 'Loop: 2110C and 2110D, Segment: DTP, Element: DTP03, Notes: DTP01=291, DTP02=RD8 Retired'
            healthCareCodeInformation:
              type: array
              minItems: 0
              maxItems: 8
              description: 'Loop: 2100C and 2100D, Segment: HI, Notes: Health Care Diagnosis'
              items:
                type: object
                properties:
                  diagnosisTypeCode:
                    type: string
                    description: 'Loop: 2100C and 2100D, Segment: HI, Element: HI01-1, Notes: Diagnosis Type Code'
                    enum:
                    - BK
                    - ABK
                    - BF
                    - ABF
                  diagnosisCode:
                    type: string
                    minLength: 0
                    maxLength: 30
                    pattern: ^[A-Za-z0-9]+$
                    description: 'Loop: 2100C and 2100D, Segment: HI, Element: HI01-2, Notes: Diagnosis Code'
            address:
              type: object
              properties:
                address1:
                  type: string
                  minLength: 0
                  maxLength: 55
                  description: 'Segment: N3, Element: N301, Notes: Required, Address Information'
                  example: 123 address1
                address2:
                  type: string
                  minLength: 0
                  maxLength: 55
                  description: 'Segment: N3, Element: N302, Notes: Address Information'
                city:
                  type: string
                  minLength: 0
                  maxLength: 30
                  description: 'Segment: N4, Element: N401, Notes: Required, city'
                  example: city1
                state:
                  type: string
                  minLength: 0
                  maxLength: 2
                  description: 'Segment: N4, Element: N402, Notes: state example: TN, WA'
                  example: wa
                postalCode:
                  type: string
                  minLength: 0
                  maxLength: 15
                  description: 'Segment: N4, Element: N403'
                  example: '981010000'
                countryCode:
                  type: string
                  description: 'Segment: N4, Element: N404'
                locationIdentifier:
                  type: string
                  description: 'Segment: N4, Element: N406'
                countrySubDivisionCode:
                  type: string
                  description: 'Segment: N4, Element: N407, Notes: Country SubDivision Code'
            additionalIdentification:
              type: object
              properties:
                planNumber:
                  type: string
                  minLength: 0
                  maxLength: 50
                  description: 'Loop: 2100C and 2100D, Segment: REF, Element: REF02, Notes: REF01=18 Plan Number'
                policyNumber:
                  type: string
                  minLength: 0
                  maxLength: 50
                  description: 'Loop: 2100C and 2100D, Segment: REF, Element: REF02, Notes: REF01=1L Group or Policy Number'
                memberIdentificationNumber:
                  type: string
                  minLength: 0
                  maxLength: 50
                  description: 'Loop: 2100C and 2100D, Segment: REF, Element: REF02, Notes: REF01=1W Member Identification Number'
                contractNumber:
                  type: string
                  minLength: 0
                  maxLength: 50
                  description: 'Loop: 2100C and 2100D, Segment: REF, Element: REF02, Notes: REF01=CT Contract Number'
                medicalRecordIdentificationNumber:
                  type: string
       

# --- truncated at 32 KB (107 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optum/refs/heads/main/openapi/optum-eligibility-requests-api-openapi.yml