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

# Get booking availability for a meeting type



## OpenAPI

````yaml /openapi.json get /v4/booking-availability
openapi: 3.0.0
info:
  title: meetergo Platform API
  description: >-
    Scheduling, CRM and invoicing in one API: create users, manage availability
    and bookings, connect calendars, keep contacts and deals in sync, and take
    an offer through to a paid invoice.
  version: 3.274.0
  contact: {}
  termsOfService: https://www.meetergo.com/tos/
servers: []
security: []
tags:
  - name: User V4
    description: Create and manage users in your workspace
  - name: Meeting Type V4
    description: Configure meeting templates with durations, buffers, and conferencing
  - name: availability
    description: Manage weekly schedules and availability settings
  - name: Booking V4
    description: Create new bookings
  - name: Booking Availability V4
    description: Query available time slots for booking
  - name: Appointment V4
    description: Manage existing appointments
  - name: Attendee V4
    description: Manage attendee details and notes
  - name: Calendar Connections V4
    description: Connect and sync external calendars
  - name: Signatures V4
    description: >-
      Send PDFs for e-signature and download the signed, eIDAS-grade document
      (DocuSeal-compatible)
  - name: WhatsApp V4
    description: >-
      Send and receive WhatsApp messages by phone number and read conversation
      history
  - name: One Time Booking Link V4
    description: Create single-use booking links
  - name: availability-exception
    description: Override availability for specific dates
  - name: Booking Link V4
    description: Configure various booking page types
  - name: Personal Page V4
    description: Manage user profile pages
  - name: Handoff V4
    description: Reassign meetings to other hosts
  - name: Calendar Auth V4
    description: OAuth callbacks for calendar providers
  - name: CRM Contacts
    description: >-
      Create, find, and update the people in your CRM, including their custom
      data fields
  - name: CRM Deals
    description: >-
      Create, update, and track deals through pipeline stages (incl. per-deal
      activity history)
  - name: CRM Pipelines
    description: Manage pipelines and their stages
  - name: CRM Tasks
    description: Tasks on contacts, deals and companies
  - name: CRM Notes
    description: Notes on contacts, deals and companies
  - name: CRM Attachments
    description: Files attached to contacts, deals and companies
  - name: CRM Communications
    description: Logged calls, messages and meetings on contacts, deals and companies
  - name: CRM Email Sync
    description: Read the email history synced from connected mailboxes (read-only)
  - name: Data Fields
    description: >-
      Define the custom fields a contact can carry; their `name` is the key used
      in a contact's additionalData
  - name: Invoicing Documents
    description: >-
      Offers and invoices: create a draft, finalize it into a numbered
      e-invoice, send it, record payments, and run Mahnwesen
  - name: Invoicing Products
    description: Reusable products for invoice line items
  - name: Invoicing Settings
    description: Seller details, tax treatment, bank accounts, and number ranges
  - name: Invoicing Recurring
    description: >-
      Recurring schedules, billing runs over completed meetings, buyer prefill,
      and DATEV export
  - name: Queue V4
    description: Round-robin and queue-based routing (Beta)
  - name: Queue User Group V4
    description: Manage queue user groups (Beta)
  - name: Meeting Type Template V4
    description: Reusable meeting type configurations (Beta)
  - name: Attendee Pending V4
    description: Manage pending attendee approvals (Beta)
  - name: Provisional Booking V4
    description: Manage provisional/unconfirmed bookings (Beta)
paths:
  /v4/booking-availability:
    get:
      tags:
        - Booking Availability V4
      summary: Get booking availability for a meeting type
      operationId: getBookingAvailability
      parameters:
        - name: meetingTypeId
          required: true
          in: query
          schema:
            type: string
        - name: meetingDuration
          required: false
          in: query
          schema:
            type: number
        - name: start
          required: true
          in: query
          schema:
            type: string
        - name: end
          required: true
          in: query
          schema:
            type: string
        - name: hostIds
          required: false
          in: query
          schema:
            type: array
            items:
              type: string
        - name: queueId
          required: false
          in: query
          description: Queue ID of meeting type for hosts in round robin
          schema:
            type: string
        - name: existingAppointmentId
          required: false
          in: query
          description: Appointment ID of previous booking for rescheduling
          schema:
            type: string
        - name: calculationMethod
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/AvailabilityCalculationMethod'
        - name: timezone
          required: false
          in: query
          schema:
            type: string
        - name: hideGroupAppointments
          required: false
          in: query
          schema:
            type: boolean
        - name: skipEarliestBookingCalculation
          required: false
          in: query
          schema:
            type: boolean
        - name: troubleshoot
          required: false
          in: query
          description: Get blocked timeslots with available slots for diagnostics
          schema:
            type: boolean
            default: false
        - name: refreshCache
          required: false
          in: query
          description: |-
            Force cache refresh (skip read, write result).
            Used after slot-occupied error to fetch fresh availability.
          schema:
            type: boolean
        - name: resourceChannelIds
          required: false
          in: query
          description: Ids of the resource channel entity
          schema:
            type: array
            items:
              type: string
        - name: channel
          required: false
          in: query
          description: Selected channel for per-channel availability lookup
          schema:
            $ref: '#/components/schemas/MeetingTypeChannel'
        - name: attendeeEmail
          required: false
          in: query
          description: |-
            Booker email used for account-owner matching on round-robin
            meeting types. When matching is enabled and an owner resolves
            to one of the meeting type's eligible hosts, availability is
            narrowed to that host. Ignored when the meeting type does not
            have account-owner matching enabled.
          schema:
            type: string
        - name: bookingTargetToken
          required: false
          in: query
          description: Opaque server-resolved booking-block audience context.
          schema:
            maxLength: 64
            pattern: /^[A-Za-z0-9_-]+$/
            type: string
        - name: oneTimeLinkId
          required: false
          in: query
          description: >-
            The single-use link the invitee arrived through.


            Present only on requests from a `/1t/<id>` booking page. The link
            may

            customise duration, location, schedule and booking window, and slots
            have

            to be computed against those, not against the meeting type's
            defaults.
          schema:
            maxLength: 64
            pattern: /^[A-Za-z0-9_-]+$/
            type: string
        - name: bookingProposalId
          required: false
          in: query
          description: >-
            The booking proposal the invitee arrived through. Its own held slots
            are

            left out of the reservations that narrow availability, so the
            invitee

            can book the times that are held for them. Ignored unless the
            proposal

            is pending and belongs to this meeting type.
          schema:
            type: string
            format: uuid
        - name: x-location-selection-context
          required: false
          in: header
          description: Opaque Location Finder context token
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingAvailabilityResponseDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingAvailabilityResponseDto'
components:
  schemas:
    AvailabilityCalculationMethod:
      type: string
      enum:
        - everyone
        - anyone
    MeetingTypeChannel:
      type: string
      enum:
        - local
        - local-attendee
        - google
        - zoom
        - phone
        - phone-incoming
        - whatsapp
        - connect
        - webex
        - skypeForConsumer
        - skypeForBusiness
        - teamsForBusiness
        - teamsForBusiness2
        - teamsForExchange
        - teams2ForExchange
        - custom
        - resource
        - whereby
        - kmeet
        - zava
        - jitsi
        - nextcloudTalk
        - openTalk
        - alfaview
      description: Meeting channel/location type
    BookingAvailabilityResponseDto:
      type: object
      properties:
        timezone:
          type: string
        timeframes:
          type: array
          items:
            $ref: '#/components/schemas/Timeframe'
        dates:
          type: array
          items:
            $ref: '#/components/schemas/AvailabilityDateDto'
        troubleshootSummary:
          $ref: '#/components/schemas/AvailabilityTroubleshootSummary'
        earliestAvailableDate:
          type: string
        earliestMonthAvailability:
          description: >-
            Full availability data for the month containing
            earliestAvailableDate
          allOf:
            - $ref: '#/components/schemas/BookingAvailabilityResponseDto'
      required:
        - timezone
        - timeframes
        - dates
    Timeframe:
      type: object
      properties:
        start:
          type: string
        end:
          type: string
        unavailabilityEvent:
          $ref: '#/components/schemas/UnavailabilityEvent'
      required:
        - start
        - end
    AvailabilityDateDto:
      type: object
      properties:
        date:
          type: string
        spots:
          type: array
          items:
            $ref: '#/components/schemas/AvailabilitySpotDto'
      required:
        - date
        - spots
    AvailabilityTroubleshootSummary:
      type: object
      properties:
        totalSlotCount:
          type: number
        availableSlotCount:
          type: number
        blockedSlotCount:
          type: number
        causes:
          type: array
          items:
            $ref: '#/components/schemas/AvailabilityTroubleshootCause'
        days:
          type: array
          items:
            $ref: '#/components/schemas/AvailabilityTroubleshootDaySummary'
      required:
        - totalSlotCount
        - availableSlotCount
        - blockedSlotCount
        - causes
        - days
    ApiError:
      type: object
      required:
        - statusCode
        - message
      properties:
        statusCode:
          type: integer
          example: 400
        message:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: >-
            A sentence, or the list of field constraints that failed. Validation
            errors name the offending property.
          example:
            - limit must not be greater than 100
        error:
          type: string
          example: BadRequestException
    UnavailabilityEvent:
      type: object
      properties:
        hostId:
          type: string
        hostName:
          type: string
        picture:
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/UnavailabilityType'
        title:
          type: string
        description:
          type: string
        location:
          type: string
        online:
          type: boolean
        meetingLink:
          type: string
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/UnavailabilityEventAttendee'
        allDay:
          type: boolean
        affectedSlotCount:
          type: number
        takenSpots:
          type: number
        totalSpots:
          type: number
        scope:
          type: string
          enum:
            - slot
            - day
            - week
            - month
            - meetingType
            - availability
            - calendar
        recommendedAction:
          type: string
          enum:
            - reviewAppointment
            - reviewConflictCalendars
            - editAvailability
            - editBuffers
            - editBookingWindow
            - editBookingLimits
            - editBookingBlocks
            - editClusterMeeting
            - reconnectCalendar
            - editGroupSpots
        settingsRoute:
          type: string
        priority:
          type: number
      required:
        - hostId
        - hostName
        - type
    AvailabilitySpotDto:
      type: object
      properties:
        startTime:
          type: string
        unavailabilityEvents:
          default: []
          type: array
          items:
            $ref: '#/components/schemas/UnavailabilityEvent'
        appointment:
          $ref: '#/components/schemas/SpotAppointmentInfoDto'
      required:
        - startTime
    AvailabilityTroubleshootCause:
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/UnavailabilityType'
        hostId:
          type: string
        hostName:
          type: string
        affectedSlotCount:
          type: number
        scope:
          type: string
          enum:
            - slot
            - day
            - week
            - month
            - meetingType
            - availability
            - calendar
        recommendedAction:
          type: string
          enum:
            - reviewAppointment
            - reviewConflictCalendars
            - editAvailability
            - editBuffers
            - editBookingWindow
            - editBookingLimits
            - editBookingBlocks
            - editClusterMeeting
            - reconnectCalendar
            - editGroupSpots
        settingsRoute:
          type: string
        priority:
          type: number
      required:
        - type
        - hostId
        - hostName
        - affectedSlotCount
        - scope
        - recommendedAction
        - settingsRoute
        - priority
    AvailabilityTroubleshootDaySummary:
      type: object
      properties:
        date:
          type: string
        totalSlotCount:
          type: number
        availableSlotCount:
          type: number
        blockedSlotCount:
          type: number
        causes:
          type: array
          items:
            $ref: '#/components/schemas/AvailabilityTroubleshootCause'
      required:
        - date
        - totalSlotCount
        - availableSlotCount
        - blockedSlotCount
        - causes
    UnavailabilityType:
      type: string
      enum:
        - event
        - block
        - exception
        - googleEvent
        - outlookEvent
        - exchangeEvent
        - exchangeTeamsEvent
        - icloudEvent
        - caldavEvent
        - smartWeEvent
        - icsEvent
        - salesforceEvent
        - calendarReadFailed
        - bufferBefore
        - bufferAfter
        - bookingBeforeLimit
        - bookingAfterLimit
        - perDayBookingLimit
        - perWeekBookingLimit
        - perMonthBookingLimit
        - perYearBookingLimit
        - outsideHours
        - outsideBookingBlock
        - clusterMeetingNotAdjacent
        - groupSlotFull
    UnavailabilityEventAttendee:
      type: object
      properties:
        fullname:
          type: string
        email:
          type: string
    SpotAppointmentInfoDto:
      type: object
      properties:
        id:
          type: string
        totalSpots:
          type: number
        takenSpots:
          type: number
      required:
        - id
        - totalSpots
        - takenSpots
  responses:
    BadRequest:
      description: >-
        The request did not validate. `message` lists the constraints that
        failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    Unauthorized:
      description: Missing, malformed, or expired credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    Forbidden:
      description: >-
        Authenticated, but not allowed: the plan does not include this feature,
        or the token is scoped away from it.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    TooManyRequests:
      description: Rate limited. Back off and retry.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'

````

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