> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teamcaredental.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update insurance verifications

> Records a Stedi eligibility check against a verification and writes it back to the PMS.

Send the eligibility response exactly as returned by Stedi in `stedi_response`. TeamCare sets:

- `verified_date` to the current time
- `note` to a summary built from the response: coverage status, plan description, member ID, group number, plan dates and the Stedi check ID, e.g. `Active Coverage. Humana Gold Plan. Member ID HUMANA123. Group 11223344. Plan 2024-01-01 to open. Verified through Stedi ec_...`

The raw Stedi response is stored with the verification.

#### PMS writeback

The update is written to the PMS in the background. For Open Dental, the verification's last-verified date is set, then its note (`PUT /insverifies`). Writeback runs only for Open Dental practices; other PMSs store the result in TeamCare only.

The PMS verification status is not changed; the Stedi coverage status is included in the note.

Requires an API key with **RCM enabled**. Keys without it receive `401` with `{"errors": "RCM is not enabled for this API key"}`; contact TeamCare support to enable it.



## OpenAPI

````yaml https://app.teamcaredental.com/openapi-vendors.json patch /locations/{location_id}/insurance_verifications/{insurance_verification_id}
openapi: 3.1.0
info:
  title: TeamCare Vendor API
  version: 1.0.0
  description: >-
    > ⚠️ **Deprecation notice:** Support for the v1 Vendor API ends on
    **November 7, 2026** (end of the first week of November). Please migrate to
    **v2**, which moves to `https://api.teamcaredental.com/api/v2/vendors` and
    replaces the per-request `location_id` in the URL with a slot-based model:
    request a location's slot once, then pull all of its data using the
    `X-Vendor-Request-Key` header. See the
    [changelog](https://docs.teamcaredental.com/changelog) for the full
    migration guide.


    Vendor APIs for integrating dental office data. HIPAA-compliant and opt-in.
servers:
  - url: https://app.teamcaredental.com/api/v1/vendors
security:
  - bearerAuth: []
paths:
  /locations/{location_id}/insurance_verifications/{insurance_verification_id}:
    patch:
      tags:
        - Insurance Verifications
      summary: Update insurance verifications
      description: >-
        Records a Stedi eligibility check against a verification and writes it
        back to the PMS.


        Send the eligibility response exactly as returned by Stedi in
        `stedi_response`. TeamCare sets:


        - `verified_date` to the current time

        - `note` to a summary built from the response: coverage status, plan
        description, member ID, group number, plan dates and the Stedi check ID,
        e.g. `Active Coverage. Humana Gold Plan. Member ID HUMANA123. Group
        11223344. Plan 2024-01-01 to open. Verified through Stedi ec_...`


        The raw Stedi response is stored with the verification.


        #### PMS writeback


        The update is written to the PMS in the background. For Open Dental, the
        verification's last-verified date is set, then its note (`PUT
        /insverifies`). Writeback runs only for Open Dental practices; other
        PMSs store the result in TeamCare only.


        The PMS verification status is not changed; the Stedi coverage status is
        included in the note.


        Requires an API key with **RCM enabled**. Keys without it receive `401`
        with `{"errors": "RCM is not enabled for this API key"}`; contact
        TeamCare support to enable it.
      operationId: locations_resources_insurance_verifications_update
      parameters:
        - name: location_id
          in: path
          required: true
          description: The ID of the location for which the verification is updated.
          schema:
            type: string
            example: '58'
        - name: insurance_verification_id
          in: path
          required: true
          description: >-
            The TeamCare ID of the insurance verification, from `GET
            /locations/{location_id}/insurance_verifications`.
          schema:
            type: string
            example: '5512'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - insurance_verification
              properties:
                insurance_verification:
                  type: object
                  required:
                    - stedi_response
                  properties:
                    stedi_response:
                      type: object
                      description: >-
                        The Stedi eligibility check response, unchanged.
                        TeamCare reads `id`, `plans[0].benefits.statuses[0]` and
                        `subscriber`.
                      additionalProperties: true
            example:
              insurance_verification:
                stedi_response:
                  id: ec_01a06d4a-a0fa-77d2-8b49-ca9a74c9888a
                  payer:
                    name:
                      organization: HUMANA
                  plans:
                    - benefits:
                        statuses:
                          - status: ACTIVE_COVERAGE
                            planCoverageDescription: Humana Gold Plan
                  subscriber:
                    memberId: HUMANA123
                    additionalInformation:
                      group:
                        name: HUMANA INSURANCE COMPANY
                        number: '11223344'
                    dates:
                      plan:
                        start: '2024-01-01'
      responses:
        '200':
          description: The updated verification.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      type:
                        type: string
                        example: insurance_verification
                      attributes:
                        type: object
                        properties:
                          deleted:
                            type: boolean
                          insurance_plan_id:
                            type:
                              - number
                              - 'null'
                            description: >-
                              Insurance plan verified. Set for
                              `insurance_benefit` verifications.
                          patient_insurance_plan_id:
                            type:
                              - number
                              - 'null'
                            description: >-
                              The patient's insurance plan (Open Dental
                              `patplan`) verified. Set for `patient_enrollment`
                              verifications.
                          pms_insurance_verification_id:
                            type:
                              - string
                              - 'null'
                            description: >-
                              The PMS verification ID (Open Dental
                              `InsVerifyNum`). History rows share the ID of the
                              current verification they belong to.
                          verify_type:
                            type: string
                            enum:
                              - patient_enrollment
                              - insurance_benefit
                            description: >-
                              `patient_enrollment` verifies a patient's
                              coverage; `insurance_benefit` verifies a plan's
                              benefits.
                          verified_date:
                            type:
                              - string
                              - 'null'
                            format: date-time
                            description: When the coverage was last verified.
                          status:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Verification status name as configured in the PMS,
                              e.g. `Verified`, `Unverified`.
                          note:
                            type:
                              - string
                              - 'null'
                          updated_at:
                            type: string
                            format: date-time
              example:
                data:
                  id: '5512'
                  type: insurance_verification
                  attributes:
                    deleted: false
                    insurance_plan_id: null
                    patient_insurance_plan_id: 8841
                    pms_insurance_verification_id: '412'
                    verify_type: patient_enrollment
                    verified_date: '2026-10-01T14:03:11.000Z'
                    status: Verified
                    note: >-
                      Active Coverage. Humana Gold Plan. Member ID HUMANA123.
                      Group 11223344. Plan 2024-01-01 to open. Verified through
                      Stedi ec_01a06d4a-a0fa-77d2-8b49-ca9a74c9888a
                    updated_at: '2026-10-01T14:03:11.000Z'
        '401':
          description: >-
            Missing, invalid or expired token, or the API key does not have RCM
            enabled.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              examples:
                not_authorized:
                  value:
                    errors: not authorized
                rcm_not_enabled:
                  value:
                    errors: RCM is not enabled for this API key
        '403':
          description: The credential may not access this resource.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              example:
                errors: access Denied
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              example:
                errors: resource not found
        '422':
          description: The request could not be processed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              example:
                errors: ...
        '429':
          description: >-
            Concurrency limit exceeded. The request was not executed; retry is
            safe.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
                  sync_type:
                    type: string
                    enum:
                      - initial
                      - incremental
                  max_concurrent_locations:
                    type: integer
                  active_location_ids:
                    type: array
                    items:
                      type: integer
                  retry_after_seconds:
                    type: integer
              example:
                errors: >-
                  Too many locations syncing concurrently. At most 5 locations
                  may have initial sync requests in flight at a time.
                sync_type: initial
                max_concurrent_locations: 5
                active_location_ids:
                  - 101
                  - 102
                  - 103
                  - 104
                  - 105
                retry_after_seconds: 1
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT returned by POST /auth/token. Valid for six hours.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.