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

# Search appointment slots

> Returns provider availability slots matching the filters, with pagination. Requires a valid API key.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/scheduling/slots
openapi: 3.1.0
info:
  title: haau3 Platform API
  version: 1.0.0
  description: >-
    The haau3 platform API (non-PHI). Endpoints require a free API key — send it
    as `Authorization: Bearer <key>`. Requests without a valid key return 401.
    Create a key in the dashboard at https://platform.haau3.com.
servers:
  - url: https://api.haau3.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Scheduling
    description: Provider availability (SMART Scheduling Links) — slots and publishers.
  - name: Terminology
    description: FHIR terminology operations — CodeSystem lookups against LOINC.
  - name: Provider directory
    description: >-
      FHIR Practitioner and PractitionerRole, resolved from the national
      provider directory. Resolution, not discovery: bring an NPI and get what
      the directory publishes for it.
paths:
  /v1/scheduling/slots:
    get:
      tags:
        - Scheduling
      summary: Search appointment slots
      description: >-
        Returns provider availability slots matching the filters, with
        pagination. Requires a valid API key.
      operationId: searchSlots
      parameters:
        - name: status
          in: query
          required: false
          description: Slot availability state to return. Defaults to `free`.
          schema:
            default: free
            type: string
            enum:
              - free
              - busy
              - busy-unavailable
              - busy-tentative
        - name: publisher
          in: query
          required: false
          description: >-
            Filter to a single publisher (source) by slug — e.g. `zocdoc`,
            `defacto`. See `GET /v1/scheduling/publishers` for the available
            slugs.
          schema:
            type: string
            minLength: 1
        - name: serviceTypeCode
          in: query
          required: false
          description: Filter by service type code (as published by the source).
          schema:
            type: string
            minLength: 1
        - name: appointmentType
          in: query
          required: false
          description: Filter by appointment type.
          schema:
            type: string
            minLength: 1
        - name: acceptingPatients
          in: query
          required: false
          description: >-
            Filter to slots accepting patients of this kind (HL7
            `accepting-patients` CodeSystem: `newpt` | `existptonly` |
            `existptfam`). Slots marked `nopt` (not accepting patients) are
            never served, so `nopt` is not a valid filter value. Lenient: a slot
            that does not declare an accepting-patients code matches any value
            (absence never hides a slot); a slot that declares one must equal
            the requested value.
          schema:
            type: string
            enum:
              - newpt
              - existptonly
              - existptfam
        - name: isVirtual
          in: query
          required: false
          description: Filter to virtual (`true`) or in-person (`false`) slots.
          schema:
            type: boolean
        - name: city
          in: query
          required: false
          description: Filter by the location's city.
          schema:
            type: string
            minLength: 1
        - name: state
          in: query
          required: false
          description: Filter by the location's state.
          schema:
            type: string
            minLength: 1
        - name: startAfter
          in: query
          required: false
          description: Only slots starting at or after this ISO 8601 instant (with offset).
          schema:
            type: string
            format: date-time
        - name: startBefore
          in: query
          required: false
          description: >-
            Only slots starting at or before this ISO 8601 instant (with
            offset).
          schema:
            type: string
            format: date-time
        - name: actorKey
          in: query
          required: false
          description: >-
            Opaque actor key from `GET /v1/scheduling/actors`. When set, returns
            exactly that booking entity's slots — the drill-down for a card.
            Treat the value as opaque; do not parse it.
          schema:
            type: string
            minLength: 1
        - name: limit
          in: query
          required: false
          description: Page size (1–100). Defaults to 25.
          schema:
            default: 25
            type: integer
            minimum: 1
            maximum: 100
        - name: offset
          in: query
          required: false
          description: Number of slots to skip for pagination. Defaults to 0.
          schema:
            default: 0
            type: integer
            minimum: 0
            maximum: 9007199254740991
      responses:
        '200':
          description: Matching slots and the total pre-pagination count.
          content:
            application/json:
              schema:
                type: object
                properties:
                  slots:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        publisher:
                          type: string
                        scheduleId:
                          type: string
                        status:
                          type: string
                          enum:
                            - free
                            - busy
                            - busy-unavailable
                            - busy-tentative
                        start:
                          type: string
                          format: date-time
                        end:
                          type: string
                          format: date-time
                        serviceTypeCode:
                          type: string
                        serviceTypeText:
                          type: string
                        appointmentType:
                          type: string
                        acceptingPatients:
                          type: string
                          enum:
                            - nopt
                            - newpt
                            - existptonly
                            - existptfam
                        isVirtual:
                          type: boolean
                        bookingDeepLink:
                          type: string
                          format: uri
                        bookingPhone:
                          type: string
                        location:
                          type: object
                          properties:
                            id:
                              type: string
                            identifier:
                              type: array
                              items:
                                type: object
                                properties:
                                  system:
                                    type: string
                                  value:
                                    type: string
                                required:
                                  - value
                                additionalProperties: false
                            name:
                              type: string
                            phone:
                              type: array
                              items:
                                type: string
                            website:
                              type: array
                              items:
                                type: string
                            addressLine:
                              type: array
                              items:
                                type: string
                            city:
                              type: string
                            state:
                              type: string
                            postalCode:
                              type: string
                          additionalProperties: false
                        provider:
                          type: object
                          properties:
                            id:
                              type: string
                            identifier:
                              type: array
                              items:
                                type: object
                                properties:
                                  system:
                                    type: string
                                  value:
                                    type: string
                                required:
                                  - value
                                additionalProperties: false
                            type:
                              type: string
                              enum:
                                - practitioner
                                - practitioner-role
                                - healthcare-service
                            name:
                              type: string
                            specialty:
                              type: string
                          additionalProperties: false
                      required:
                        - id
                        - publisher
                        - scheduleId
                        - status
                        - start
                        - end
                      additionalProperties: false
                  total:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                required:
                  - slots
                  - total
                additionalProperties: false
        '400':
          description: Invalid query parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
components:
  schemas:
    ValidationError:
      type: object
      properties:
        error:
          type: string
          examples:
            - Invalid query parameters
        issues:
          type: array
          items:
            type: object
            additionalProperties: true
      required:
        - error
        - issues
    AuthError:
      type: object
      properties:
        error:
          type: string
          examples:
            - API key required
        message:
          type: string
      required:
        - error
        - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your platform API key (`haau3_sk_…`), sent as `Authorization: Bearer
        <key>`.

````