Candid Health V1 API

The v1 API from Candid Health — 105 operation(s) for v1.

Operations 150

POST /eligibility-checks/v1 Post #
POST /eligibility-checks/v1/batch Batch #
GET /eligibility-checks/v1/batch/{batch_id} Poll Batch #
GET /eligibility-checks/v1/recommendation Recommendation #
POST /eligibility-checks/v1/recommendation Create Recommendation #
PUT /eligibility-checks/v1/recommendation/{recommendation_id}/{version}/vote Vote Recommendation #
GET /eligibility-checks/v1/get-multi/ Get Multi #
POST /eligibility-checks/v1/insurance-discovery Insurance Discovery #
POST /eligibility-checks/v1/coordination-of-benefits Coordination Of Benefits #
POST /appointments/v1 Create #
GET /appointments/v1/visits Get Visits #
GET /appointments/v1/visits/counts Get Counts #
GET /appointments/v1/{id} Get #
GET /appointments/v1/{id}/history Get History #
PUT /appointments/v1/{id}/{version} Update #
DELETE /appointments/v1/{id}/{version} Deactivate #
GET /appointments/v1/updates/scan Scan #
POST /coverages/v1/ Create #
GET /coverages/v1/ Get Multi #
PUT /coverages/v1//{id}/{version} Update #
GET /coverages/v1//get-multi-paginated Get Multi Paginated #
GET /coverages/v1//{id} Get #
GET /coverages/v1//{id}/history Get History #
GET /coverages/v1//updates/scan Scan #
POST /coverages/v1//batch-update-ppg/{ppg_id} Batch Update Ppg #
POST /coverages/v1//{id}/eligibility Check Eligibility #
GET /coverages/v1//{id}/eligibility/{check_id} Get Eligibility #
POST /images/v1 Create #
GET /images/v1 Get Multi #
GET /images/v1/{id} Get #
PUT /images/v1/{id}/{version} Update #
DELETE /images/v1/{id}/{version} Deactivate #
GET /lists/v1/patient Get Patient List #
GET /lists/v1/appointment Get Appointment List #
GET /notes/v1/{id} Get #
POST /notes/v1 Create #
PUT /notes/v1/{id}/{version} Update #
DELETE /notes/v1/{id}/{version} Deactivate #
GET /organization-external-providers/v1/{id} Get #
GET /organization-external-providers/v1 Get Multi #
POST /organization-external-providers/v1 Create #
PUT /organization-external-providers/v1/{id}/{version} Update #
DELETE /organization-external-providers/v1/{id}/{version} Deactivate #
GET /organization-external-providers/v1/updates/scan Scan #
POST /patient-merge/v1 Create #
GET /patient-merge/v1/status/{mrn_or_id} Get Status #
GET /patient-merge/v1/all/{mrn} Get All By Mrn #
DELETE /patient-merge/v1/{id}/{version} Deactivate #
GET /patient-merge/v1/updates/scan Scan #
POST /patients/v1 Create #
POST /patients/v1/with_mrn Create With Mrn #
GET /patients/v1/get_multi Get Multi #
GET /patients/v1/search_providers Search Providers #
GET /patients/v1/{id} Get #
GET /patients/v1/mrn/{mrn} Get By Mrn #
GET /patients/v1/{id}/history Get History #
GET /patients/v1/{id}/snapshot Get Coverage Snapshot #
GET /patients/v1/{id}/eligibility-timeline Get Eligibility Timeline #
PUT /patients/v1/{id}/{version} Update #
DELETE /patients/v1/{id}/{version} Deactivate #
PATCH /patients/v1/{id}/{version} Reactivate #
GET /patients/v1/updates/scan Scan #
GET /tags/v1/{id} Get #
GET /tags/v1 Get All #
POST /tags/v1 Create #
PUT /tags/v1/{id}/{version} Update #
DELETE /tags/v1/{id}/{version} Deactivate #
POST /api/import-invoice/v1 Import Invoice #
GET /api/import-invoice/v1 Get Multi #
GET /api/import-invoice/v1/{invoice_id} Get #
PATCH /api/import-invoice/v1/{invoice_id} Update #
GET /api/patient-ar/v1/inventory List Inventory Records #
GET /api/patient-ar/v1/invoice-itemization/{claim_id} Invoice Itemization #
GET /api/patient-refunds/v1 Get patient refunds #
POST /api/patient-refunds/v1 Create patient refund #
GET /api/patient-refunds/v1/{patient_refund_id} Get patient refund #
PATCH /api/patient-refunds/v1/{patient_refund_id} Update #
DELETE /api/patient-refunds/v1/{patient_refund_id} Delete patient refund #
GET /api/charge_capture_claim_creation/v1/{charge_capture_claim_creation_id} Get Charge Capture Claim Creation #
GET /api/charge_capture_claim_creation/v1/all/summary Get Charge Capture Claim Creation Summary #
PATCH /api/charge_capture_claim_creation/v1/error/{charge_capture_bundle_error_id} Mark a ClaimCreationAttempt error as resolved #
GET /api/charge_capture_claim_creation/v1 Get all Charge Capture Claim Creations #
POST /api/charge_captures/v1 Create a Charge Capture #
GET /api/charge_captures/v1 Get all Charge Captures #
POST /api/charge_captures/v1/create-from-pre-encounter Create a Charge Capture from pre-encounter patient and appointment #
PATCH /api/charge_captures/v1/changes Update a ChargeCapturePostBilledChange #
PATCH /api/charge_captures/v1/{charge_capture_id} Update Charge Capture #
GET /api/charge_captures/v1/{charge_capture_id} Get Charge Capture #
POST /api/charge_captures/v1/find-by-metadata Find Charge Captures by Metadata #
GET /api/custom-schemas/v1 Get all custom schemas #
POST /api/custom-schemas/v1 Create a custom schema #
GET /api/custom-schemas/v1/{schema_id} Get custom schema #
PATCH /api/custom-schemas/v1/{schema_id} Update custom schema #
GET /api/encounter-attachments/v1/{encounter_id} Get Encounter Attachments #
PUT /api/encounter-attachments/v1/{encounter_id} Create Encounter Attachment #
DELETE /api/encounter-attachments/v1/{encounter_id} Delete Encounter Attachment #
PUT /api/encounter-attachments/v1/{encounter_id}/v2 Create Encounter Attachment V2 #
POST /api/encounter-attachments/v1/create-from-charge-capture-external-id Create an Attachment from a Charge Capture external ID #
GET /api/encounter-attachments/v1/by-charge-capture-external-id/{charge_capture_external_id} Get Attachments by Charge Capture External ID #
DELETE /api/encounter-attachments/v1/by-charge-capture-external-id/{charge_capture_external_id} Delete Attachment by Charge Capture External ID #
GET /api/encounter-supplemental-information/v1/{encounter_id} Get Encounter Supplemental Information #
PUT /api/encounter-supplemental-information/v1/{encounter_id} Create Encounter Supplemental Information #
PATCH /api/encounter-supplemental-information/v1/{encounter_id}/{supplemental_information_id} Update Encounter Supplemental Information #
DELETE /api/encounter-supplemental-information/v1/{encounter_id}/{supplemental_information_id} Delete Encounter Supplemental Information #
GET /api/events/v1/ Scan #
GET /api/events/v1/{event_id} Get #
GET /api/external-payment-account-config/v1 Get Multi #
POST /api/guarantors/v1/{encounter_id} Create guarantor #
GET /api/guarantors/v1/{guarantor_id} Get guarantor #
PATCH /api/guarantors/v1/{guarantor_id} Update guarantor #
PUT /api/health-care-code-informations/v1/{encounter_id} Update #
GET /api/health-care-code-informations/v1/{encounter_id} Get All For Encounter #
GET /api/insurance-adjudications/v1/{insurance_adjudication_id} Get insurance adjudication #
GET /api/insurance-refunds/v1 Get insurance refunds #
POST /api/insurance-refunds/v1 Create insurance refund #
GET /api/insurance-refunds/v1/{insurance_refund_id} Get insurance refund #
PATCH /api/insurance-refunds/v1/{insurance_refund_id} Update #
DELETE /api/insurance-refunds/v1/{insurance_refund_id} Delete insurance refund #
POST /api/medication-dispense/v1 Medication Dispense Create #
GET /api/non-insurance-payer-payments/v1 Get non-insurance payer payments #
POST /api/non-insurance-payer-payments/v1 Create non-insurance payer payment #
GET /api/non-insurance-payer-payments/v1/{non_insurance_payer_payment_id} Get non-insurance payer payment #
PATCH /api/non-insurance-payer-payments/v1/{non_insurance_payer_payment_id} Update #
DELETE /api/non-insurance-payer-payments/v1/{non_insurance_payer_payment_id} Delete non-insurance payer payment #
GET /api/non-insurance-payer-refunds/v1 Get non-insurance payer refunds refunds #
POST /api/non-insurance-payer-refunds/v1 Create non-insurance payer refund #
GET /api/non-insurance-payer-refunds/v1/{non_insurance_payer_refund_id} Get non-insurance payer refund #
PATCH /api/non-insurance-payer-refunds/v1/{non_insurance_payer_refund_id} Update #
DELETE /api/non-insurance-payer-refunds/v1/{non_insurance_payer_refund_id} Delete non-insurance payer refund #
POST /api/non-insurance-payers/v1 Create #
GET /api/non-insurance-payers/v1 Get Multi #
PATCH /api/non-insurance-payers/v1/{non_insurance_payer_id}/toggle_enablement Toggle Enablement #
GET /api/non-insurance-payers/v1/categories Get non-insurance payer categories #
GET /api/non-insurance-payers/v1/{non_insurance_payer_id} Get #
PATCH /api/non-insurance-payers/v1/{non_insurance_payer_id} Update #
DELETE /api/non-insurance-payers/v1/{non_insurance_payer_id} Delete #
GET /api/payer-plan-groups/v1 Get payer plans #
POST /api/payer-plan-groups/v1 Create a payer plan #
GET /api/payer-plan-groups/v1/{payer_plan_group_id} Get payer plan #
PUT /api/payer-plan-groups/v1/{payer_plan_group_id} Update payer plan #
PATCH /api/payer-plan-groups/v1/{payer_plan_group_id} Delete payer plan #
POST /api/superbill/v1 Create Superbill #
GET /api/write-offs/v1 Get all write-offs #
POST /api/write-offs/v1 Create write-off #
GET /api/write-offs/v1/{write_off_id} Get write-off #
POST /api/write-offs/v1/{write_off_id}/revert Revert write-off #
POST /api/write-offs/v1/{adjustment_id}/revert Revert Insurance Balance Adjustment #
POST /api/write-offs/v1/{adjustment_id}/revert-era-originated Revert ERA-originated Insurance Balance Adjustment #

Documentation

Specifications

Other Resources

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/candid-health-v1-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

candid-health-v1-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Reference V1 API
  version: 1.0.0
servers:
- url: https://pre-api.joincandidhealth.com
  description: Production
- url: https://pre-api-staging.joincandidhealth.com
  description: Staging
- url: https://sandbox-pre-api.joincandidhealth.com
  description: CandidSandbox
- url: https://staging-pre-api.joincandidhealth.com
  description: CandidStaging
- url: http://localhost:4000
  description: Local
- url: https://api.joincandidhealth.com
  description: Production
- url: https://api-staging.joincandidhealth.com
  description: Staging
- url: https://sandbox-api.joincandidhealth.com
  description: CandidSandbox
- url: https://staging-api.joincandidhealth.com
  description: CandidStaging
- url: http://localhost:5050
  description: Local
tags:
- name: v1
paths:
  /eligibility-checks/v1:
    post:
      operationId: post
      summary: Post
      description: Sends real-time eligibility checks to payers through Stedi.
      tags:
      - 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:
      - 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:
      - 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:
      - 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 \neligibility recommendation type for the given filters. If you want to get a specific recommendation type, you can use the `type` query parameter."
      tags:
      - 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:
      - 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:
      - 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:
      - 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'
  /eligibility-checks/v1/insurance-discovery:
    post:
      operationId: insurance-discovery
      summary: Insurance Discovery
      description: 'Sends an insurance discovery check to find potential coverage matches for a patient through Stedi.

        Given patient demographics, this endpoint discovers what insurance coverages exist for the patient.'
      tags:
      - 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_InsuranceDiscoveryResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter_eligibilityChecks_v1_InsuranceDiscoveryRequest'
  /eligibility-checks/v1/coordination-of-benefits:
    post:
      operationId: coordination-of-benefits
      summary: Coordination Of Benefits
      description: 'Sends a coordination of benefits check through Stedi to determine whether a patient has

        coverage overlap across multiple payers and, if so, which payer is primary.

        Medicare and Medicare Advantage plans are not supported.'
      tags:
      - 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_CoordinationOfBenefitsResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/type_pre-encounter_eligibilityChecks_v1_CoordinationOfBenefitsRequest'
  /appointments/v1:
    post:
      operationId: create
      summary: Create
      description: Adds an appointment.  VersionConflictError is returned when the placer_appointment_id is already in use.
      tags:
      - 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:
      - 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/visits/counts:
    get:
      operationId: get_counts
      summary: Get Counts
      description: 'Gets aggregate counts for the visits matching the given filters.


        The counts respect all provided filters but are independent of pagination, so this can be fetched

        once when filters change instead of on every page of `get_visits`.


        **IMPORTANT:** Like `get_visits`, this endpoint requires a date filter on `appointment.startTimestamp`

        to ensure acceptable query performance.'
      tags:
      - v1
      parameters:
      - 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_CountsResponse'
        '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:
      - 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:
      - 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:
      - 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:
      - 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:
      - 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:
      - 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:
      - 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:
      - 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:
      - 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:
      - 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:


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