Candid Health Eligibility API

Real-time eligibility verification via Availity and Change Healthcare. Supports batch eligibility checks, polling, payer search, and eligibility recommendations for insurance coverage verification.

OpenAPI Specification

candid-health-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API Reference
  version: 1.0.0
paths:
  /eligibility-checks/v1:
    post:
      operationId: post
      summary: Post
      description: Sends real-time eligibility checks to payers through Stedi.
      tags:
        - >-
          subpackage_pre-encounter.subpackage_pre-encounter/eligibilityChecks.subpackage_pre-encounter/eligibilityChecks/v1
      parameters:
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:EligibilityResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:EligibilityRequest'
  /eligibility-checks/v1/batch:
    post:
      operationId: batch
      summary: Batch
      description: Sends a batch of eligibility checks to payers through Stedi.
      tags:
        - >-
          subpackage_pre-encounter.subpackage_pre-encounter/eligibilityChecks.subpackage_pre-encounter/eligibilityChecks/v1
      parameters:
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:BatchEligibilityResponse'
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:EligibilityRequest'
  /eligibility-checks/v1/batch/{batch_id}:
    get:
      operationId: poll-batch
      summary: Poll Batch
      description: Polls the status of a batch eligibility check.
      tags:
        - >-
          subpackage_pre-encounter.subpackage_pre-encounter/eligibilityChecks.subpackage_pre-encounter/eligibilityChecks/v1
      parameters:
        - name: batch_id
          in: path
          required: true
          schema:
            type: string
        - name: page_token
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:PageToken'
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:EligibilityCheckPage'
  /eligibility-checks/v1/payer/search:
    get:
      operationId: payer-search
      summary: Payer Search
      description: Searches for payers that match the query parameters.
      tags:
        - >-
          subpackage_pre-encounter.subpackage_pre-encounter/eligibilityChecks.subpackage_pre-encounter/eligibilityChecks/v1
      parameters:
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
        - name: page_token
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:PageToken'
        - name: query
          in: query
          required: false
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:PayerSearchResponse'
  /eligibility-checks/v1/recommendation:
    get:
      operationId: recommendation
      summary: Recommendation
      description: >-
        Gets recommendation for eligibility checks based on filters. This endpoint will retrieve all the latest
        eligibility recommendations for each 

        eligibility recommendation type for the given filters. If you want to get a specific recommendation type, you
        can use the `type` query parameter.
      tags:
        - >-
          subpackage_pre-encounter.subpackage_pre-encounter/eligibilityChecks.subpackage_pre-encounter/eligibilityChecks/v1
      parameters:
        - name: filters
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:FilterQueryString'
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:EligibilityRecommendation'
    post:
      operationId: create-recommendation
      summary: Create Recommendation
      description: Create an eligibiilty recommendation based on the request.
      tags:
        - >-
          subpackage_pre-encounter.subpackage_pre-encounter/eligibilityChecks.subpackage_pre-encounter/eligibilityChecks/v1
      parameters:
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:EligibilityRecommendation'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:PostEligibilityRecommendationRequest'
  /eligibility-checks/v1/recommendation/{recommendation_id}/{version}/vote:
    put:
      operationId: vote-recommendation
      summary: Vote Recommendation
      description: >-
        Submit user feedback on an eligibility recommendation. The path must contain the next version number to prevent
        race conditions. For example, if the current version of the recommendation is n, you will need to send a request
        to this endpoint with `/{recommendation_id}/{n+1}/vote` to update the vote.
      tags:
        - >-
          subpackage_pre-encounter.subpackage_pre-encounter/eligibilityChecks.subpackage_pre-encounter/eligibilityChecks/v1
      parameters:
        - name: recommendation_id
          in: path
          required: true
          schema:
            type: string
        - name: version
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:EligibilityRecommendation'
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - NotFoundError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
        '409':
          description: Error response with status 409
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - VersionConflictError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:VersionConflictErrorBody'
                required:
                  - errorName
                  - content
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:Vote'
  /eligibility-checks/v1/get-multi/:
    get:
      operationId: get-multi
      summary: Get Multi
      tags:
        - >-
          subpackage_pre-encounter.subpackage_pre-encounter/eligibilityChecks.subpackage_pre-encounter/eligibilityChecks/v1
      parameters:
        - name: page_token
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:PageToken'
        - name: limit
          in: query
          required: false
          schema:
            type: integer
        - name: subscriber_member_id
          in: query
          required: false
          schema:
            type: string
        - name: payer_id
          in: query
          required: false
          schema:
            type: string
        - name: provider_npi
          in: query
          required: false
          schema:
            type: string
        - name: date_of_service
          in: query
          required: false
          schema:
            type: string
        - name: initiated_at_min
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: initiated_at_max
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/eligibilityChecks/v1:EligibilityCheckPage'
  /appointments/v1:
    post:
      operationId: create
      summary: Create
      description: Adds an appointment.  VersionConflictError is returned when the placer_appointment_id is already in use.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/appointments.subpackage_pre-encounter/appointments/v1
      parameters:
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/appointments/v1:Appointment'
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - NotFoundError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
        '409':
          description: Error response with status 409
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - VersionConflictError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:VersionConflictErrorBody'
                required:
                  - errorName
                  - content
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter/appointments/v1:MutableAppointment'
  /appointments/v1/visits:
    get:
      operationId: get-visits
      summary: Get Visits
      description: >-
        Gets all Visits within a given time range. The return list is ordered by start_time ascending.


        **IMPORTANT:** This endpoint requires a date filter on `appointment.startTimestamp` to ensure acceptable query
        performance.

        Without date filtering, the query can take 50+ seconds on large datasets due to grouping and aggregation
        operations.


        Example filters:

        - `appointment.startTimestamp|gt|2024-01-01` - appointments after January 1, 2024

        - `appointment.startTimestamp|eq|2024-12-08` - appointments on December 8, 2024

        - `appointment.startTimestamp|lt|2024-12-31` - appointments before December 31, 2024


        You can combine the date filter with other filters using commas:

        - `appointment.startTimestamp|gt|2024-01-01,appointment.status|eq|PENDING`
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/appointments.subpackage_pre-encounter/appointments/v1
      parameters:
        - name: page_token
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:PageToken'
        - name: limit
          in: query
          required: false
          schema:
            type: integer
        - name: sort_field
          in: query
          description: Defaults to appointment.start_time.
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/lists/v1:SortFieldString'
        - name: sort_direction
          in: query
          description: Defaults to ascending.
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:SortDirection'
        - name: filters
          in: query
          description: |-
            **Required:** Must include a date filter on appointment.startTimestamp (using gt, lt, or eq operators).
            Example: appointment.startTimestamp|gt|2024-01-01
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:FilterQueryString'
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/appointments/v1:VisitsPage'
        '400':
          description: Error response with status 400
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - BadRequestError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
  /appointments/v1/{id}:
    get:
      operationId: get
      summary: Get
      description: Gets an appointment.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/appointments.subpackage_pre-encounter/appointments/v1
      parameters:
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:AppointmentId'
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/appointments/v1:Appointment'
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - NotFoundError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
  /appointments/v1/{id}/history:
    get:
      operationId: get-history
      summary: Get History
      description: Gets an appointment along with it's full history.  The return list is ordered by version ascending.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/appointments.subpackage_pre-encounter/appointments/v1
      parameters:
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:AppointmentId'
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/type_pre-encounter/appointments/v1:Appointment'
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - NotFoundError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
  /appointments/v1/{id}/{version}:
    put:
      operationId: update
      summary: Update
      description: >-
        Updates an appointment. The path must contain the next version number to prevent race conditions. For example,
        if the current version of the appointment is n, you will need to send a request to this endpoint with
        `/{id}/n+1` to update the appointment. Updating historic versions is not supported.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/appointments.subpackage_pre-encounter/appointments/v1
      parameters:
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:AppointmentId'
        - name: version
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/appointments/v1:Appointment'
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - NotFoundError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
        '409':
          description: Error response with status 409
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - VersionConflictError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:VersionConflictErrorBody'
                required:
                  - errorName
                  - content
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter/appointments/v1:MutableAppointment'
    delete:
      operationId: deactivate
      summary: Deactivate
      description: >-
        Sets an appointment as deactivated.  The path must contain the most recent version to prevent race conditions. 
        Deactivating historic versions is not supported. Subsequent updates via PUT to the appointment will "reactivate"
        the appointment and set the deactivated flag to false.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/appointments.subpackage_pre-encounter/appointments/v1
      parameters:
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:AppointmentId'
        - name: version
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - NotFoundError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
        '409':
          description: Error response with status 409
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - VersionConflictError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:VersionConflictErrorBody'
                required:
                  - errorName
                  - content
  /appointments/v1/updates/scan:
    get:
      operationId: scan
      summary: Scan
      description: >-
        Scans up to 100 appointment updates.  The since query parameter is inclusive, and the result list is ordered by
        updatedAt ascending.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/appointments.subpackage_pre-encounter/appointments/v1
      parameters:
        - name: since
          in: query
          required: true
          schema:
            type: string
            format: date-time
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/type_pre-encounter/appointments/v1:Appointment'
  /coverages/v1/:
    post:
      operationId: create
      summary: Create
      description: >-
        Creates a new Coverage. A Coverage provides the high-level identifiers and descriptors of a specific insurance
        plan for a specific individual - typically the information you can find on an insurance card. Additionally a
        coverage will include detailed benefits information covered by the specific plan for the individual.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/coverages.subpackage_pre-encounter/coverages/v1
      parameters:
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/coverages/v1:Coverage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter/coverages/v1:MutableCoverage'
    get:
      operationId: get-multi
      summary: Get Multi
      description: Returns a list of Coverages based on the search criteria.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/coverages.subpackage_pre-encounter/coverages/v1
      parameters:
        - name: patient_id
          in: query
          required: false
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/type_pre-encounter/coverages/v1:Coverage'
  /coverages/v1//{id}/{version}:
    put:
      operationId: update
      summary: Update
      description: >-
        Updates a Coverage. The path must contain the next version number to prevent race conditions. For example, if
        the current version of the coverage is n, you will need to send a request to this endpoint with `/{id}/n+1` to
        update the coverage. Updating historic versions is not supported.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/coverages.subpackage_pre-encounter/coverages/v1
      parameters:
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:CoverageId'
        - name: version
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/coverages/v1:Coverage'
        '404':
          description: Error response with status 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - NotFoundError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
        '409':
          description: Error response with status 409
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - VersionConflictError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:VersionConflictErrorBody'
                required:
                  - errorName
                  - content
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter/coverages/v1:MutableCoverage'
  /coverages/v1//get-multi-paginated:
    get:
      operationId: get-multi-paginated
      summary: Get Multi Paginated
      description: Returns a page of Coverages based on the search criteria.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/coverages.subpackage_pre-encounter/coverages/v1
      parameters:
        - name: patient_id
          in: query
          required: false
          schema:
            type: string
        - name: payer_plan_group_id
          in: query
          required: false
          schema:
            type: string
        - name: page_token
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:PageToken'
        - name: limit
          in: query
          description: Must be between 0 and 1000. Defaults to 100
          required: false
          schema:
            type: integer
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/coverages/v1:CoveragesPage'
        '400':
          description: Error response with status 400
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorName:
                    type: string
                    enum:
                      - BadRequestError
                  content:
                    $ref: '#/components/schemas/type_pre-encounter/common:ErrorBase4xx'
                required:
                  - errorName
                  - content
  /coverages/v1//{id}:
    get:
      operationId: get
      summary: Get
      description: gets a specific Coverage
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/coverages.subpackage_pre-encounter/coverages/v1
      parameters:
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:CoverageId'
        - name: Authorization
          in: header
          description: OAuth authentication
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Response with status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/type_pre-encounter/coverages/v1:Coverage'
  /coverages/v1//{id}/history:
    get:
      operationId: get-history
      summary: Get History
      description: |-
        Gets a coverage's history. Full history is returned if no filters are 
        defined. The return list is ordered by version, defaulting to ascending.
      tags:
        - subpackage_pre-encounter.subpackage_pre-encounter/coverages.subpackage_pre-encounter/coverages/v1
      parameters:
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/type_pre-encounter/common:CoverageId'
        - name: start
          in: query
          required: false
          schema:
            type: string
            format: date
        - name: end
          in: query
          required: false
          schema:
            type: string
            format: date
        - name: non_auto_updated_coverages_only
          in: query
          description: If true, only returns coverages that have NOT been auto-updated by the system.
          required: false
          schema:
            type: boolean
        - name: sort_direction
          in: query
          description: Defaults to ascending. Sorts by version.
          required: false
          schema:
            $ref: '#/componen

# --- truncated at 32 KB (1218 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/candid-health/refs/heads/main/openapi/candid-health-openapi.yml