> ## 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.

# List insurance verifications

> Resolves the location from the `X-Vendor-Request-Key` header (slot); no `location_id` in the path.

This endpoint retrieves insurance verifications for a specific location, synced from the PMS. Each patient's plan enrollment and each insurance plan's benefits has one current verification; earlier verifications are included as history rows sharing the same `pms_insurance_verification_id`.

Use the `id` of a verification to post a Stedi eligibility result with `PATCH /locations/{location_id}/insurance_verifications/{insurance_verification_id}`.

#### Parameters

- after: A parameter to specify the cursor for pagination.
- items: A parameter to specify the number of items to be returned.
- The `q[fetch_modified_since]` is used to capture the delta changes, pass the datetime in UTC as shown in example below

```json
{
    "q": {
        "fetch_modified_since": "2026-10-01T00:00:00.000Z"
    }
}
```



## OpenAPI

````yaml https://app.teamcaredental.com/openapi-vendors-v2.json get /insurance_verifications
openapi: 3.1.0
info:
  title: TeamCare Vendor API (v2)
  version: 2.0.0
  description: >-
    Version 2 of the TeamCare Vendor API. HIPAA-compliant and opt-in.


    ## What changed from v1


    The data endpoints and response shapes are identical to v1 — **only how you
    address a location changes.** In v1 the location lived in every URL
    (`/locations/{location_id}/patients`). In v2 you request a **slot** for a
    location once, then send the returned `request_key` in the
    `X-Vendor-Request-Key` header; `location_id` is gone from the data routes.


    ## Request cycle


    1. `POST /auth/token` → JWT (unchanged from v1).

    2. `GET /organizations`, `GET /locations` → pick a `location_id`.

    3. `POST /locations/{location_id}/slots` → `{ request_key, expires_at }`.

    4. Call any data endpoint with header `X-Vendor-Request-Key: <request_key>`
    (no `location_id` in the path).


    ## Minimal changes to migrate


    - Point your base URL at `https://api.teamcaredental.com/api/v2/vendors` (v2
    is served from `api.teamcaredental.com`, not `app.teamcaredental.com`).

    - Call the slot endpoint **once per location**.

    - Drop `/locations/{location_id}` from your data paths and add the
    `X-Vendor-Request-Key` header.

    - Everything else — authentication, Ransack `q` filters, pagination,
    response shapes — is unchanged.


    ## Slot validity, cooldown & quota


    - **Validity:** a `request_key` is valid for **6 hours** — the same lifetime
    as the access token. After that it stops authorizing and you must request a
    new slot.

    - **Cooldown:** you can only re-request the **same** location's slot once
    every **2 minutes**. Within the cooldown the slot endpoint returns `429`
    with a `retry_after` (seconds).

    - **Quota:** each firm may hold up to its `concurrent_slots` quota (default
    **10**) active request keys at once, so data for at most 10 locations can be
    pulled concurrently. Requesting an 11th slot trims the oldest key, so its
    `request_key` stops authorizing immediately and any in-flight requests using
    it fail with `401`. To raise the quota above 10, contact TeamCare support.

    - **Rate limit:** the slot endpoint accepts at most 10 requests per 10
    seconds per token.


    ## Recommended usage


    Request a slot for a location and pull **all** of that location's data in
    one pass before moving on — don't re-request slots per call or churn between
    locations. If you fan out across locations in parallel, keep the fan-out at
    or below your quota: once an 11th slot is requested, the oldest
    `request_key` is invalidated even if a sync is still running on it.


    See the [changelog](https://docs.teamcaredental.com/changelog) for the full
    list of changes from v1.
servers:
  - url: https://api.teamcaredental.com/api/v2/vendors
security:
  - bearerAuth: []
paths:
  /insurance_verifications:
    get:
      tags:
        - Insurance Verifications
      summary: List insurance verifications
      description: >-
        Resolves the location from the `X-Vendor-Request-Key` header (slot); no
        `location_id` in the path.


        This endpoint retrieves insurance verifications for a specific location,
        synced from the PMS. Each patient's plan enrollment and each insurance
        plan's benefits has one current verification; earlier verifications are
        included as history rows sharing the same
        `pms_insurance_verification_id`.


        Use the `id` of a verification to post a Stedi eligibility result with
        `PATCH
        /locations/{location_id}/insurance_verifications/{insurance_verification_id}`.


        #### Parameters


        - after: A parameter to specify the cursor for pagination.

        - items: A parameter to specify the number of items to be returned.

        - The `q[fetch_modified_since]` is used to capture the delta changes,
        pass the datetime in UTC as shown in example below


        ```json

        {
            "q": {
                "fetch_modified_since": "2026-10-01T00:00:00.000Z"
            }
        }

        ```
      operationId: locations_resources_insurance_verifications_list
      parameters:
        - name: after
          in: query
          required: false
          description: A parameter to specify the cursor for pagination.
          schema:
            type: integer
            example: 241094833
        - name: items
          in: query
          required: false
          description: A parameter to specify the number of items to be returned.
          schema:
            type: integer
            example: 500
        - name: q
          in: query
          required: false
          style: deepObject
          explode: true
          schema:
            type: object
            properties:
              fetch_modified_since:
                type: string
                format: date-time
                example: '2026-10-01T00:00:00.000Z'
          example:
            fetch_modified_since: '2026-10-01T00:00:00.000Z'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      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
                  pagy:
                    type: object
                    properties:
                      has_more:
                        type: boolean
                      items:
                        type: integer
              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'
                pagy:
                  has_more: true
                  items: 1
        '401':
          description: >-
            Missing/invalid/expired JWT, or missing/invalid/expired
            X-Vendor-Request-Key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              example:
                errors: not authorized
        '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: ...
      security:
        - bearerAuth: []
          vendorRequestKey: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT returned by POST /auth/token. Valid for six hours.
    vendorRequestKey:
      type: apiKey
      in: header
      name: X-Vendor-Request-Key
      description: >-
        Request key returned by POST /locations/{location_id}/slots. Identifies
        the practice for a data request; valid for 6 hours (the access token's
        lifetime) and subject to the firm's concurrent-slot quota.

````

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