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

# Get Slots

> Retrieve bookable time slots for a Novacal event type, with duration, slot interval, buffers and minimum notice already applied.

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.novacal.io/v1/event-types/123/slots?start=2026-05-29&end=2026-05-30&timezone=UTC' \
    --header 'Authorization: Bearer <token>'
  ```
</RequestExample>

## What this endpoint is for

Use this endpoint to get times a guest can actually book. Every slot returned is
already valid, so you can render it straight into a booking UI and post it to
[Create Event](/api-reference/v1/events/create).

## Slots versus availability

[Get Availability](/api-reference/v1/availability/get) returns the raw windows an
organizer is free. This endpoint takes those windows and applies the event
type's rules for you:

* The event type `duration`, so each slot is the right length
* The `time_slot_interval`, which controls how often a slot starts
* `buffer_time_before_event` and `buffer_time_after_event`
* `min_scheduling_notice`, so slots too close to now are left out
* Existing bookings and `booking_frequency_limits`

Use availability when you want to show an organizer's free time. Use slots when
you want someone to book.

## Response shape

Slots are grouped by local date. A date with no bookable time is omitted, so an
event type with nothing available returns an empty object.

```json theme={null}
{
  "success": true,
  "data": {
    "slots": {
      "2026-05-29": [
        { "start": "2026-05-29T09:00:00+00:00", "end": "2026-05-29T09:30:00+00:00" },
        { "start": "2026-05-29T09:30:00+00:00", "end": "2026-05-29T10:00:00+00:00" }
      ]
    }
  }
}
```

Pass `timezone` as an optional IANA timezone, such as `Europe/Belgrade`, to
receive slots converted to that timezone and grouped by local date. If omitted,
the response uses `UTC`.

Pass `duration` when the event type offers a choice of meeting lengths, to get
slots sized for the length the guest picked.


## OpenAPI

````yaml GET /v1/event-types/{id}/slots
openapi: 3.1.0
info:
  title: Events API
  description: Public API for managing event types
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.novacal.io
security:
  - bearerAuth: []
paths:
  /v1/event-types/{id}/slots:
    get:
      description: >-
        Returns bookable slots for one of the authenticated user's event types.
        The event type's duration, slot interval, buffers and minimum scheduling
        notice are already applied, so every slot returned can be booked as is.
      parameters:
        - name: id
          in: path
          description: ID of the event type to return slots for
          required: true
          example: 123
          schema:
            type: integer
            format: int64
            example: 123
        - name: start
          in: query
          description: Start date for the requested range
          required: true
          example: '2026-05-29'
          schema:
            type: string
            format: date
            example: '2026-05-29'
        - name: end
          in: query
          description: End date for the requested range
          required: true
          example: '2026-05-30'
          schema:
            type: string
            format: date
            example: '2026-05-30'
        - name: timezone
          in: query
          description: >-
            Optional IANA timezone used to convert returned slots. Defaults to
            UTC.
          required: false
          example: UTC
          schema:
            type: string
            default: UTC
            example: Europe/Belgrade
        - name: duration
          in: query
          description: >-
            Optional meeting length in minutes, for event types that offer a
            choice of durations. Defaults to the event type duration.
          required: false
          example: 30
          schema:
            type: integer
            minimum: 1
            maximum: 1440
            example: 30
      responses:
        '200':
          description: Slots response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SlotsResponse'
components:
  schemas:
    SlotsResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          description: Indicates whether the request was successful
          type: boolean
          example: true
        data:
          $ref: '#/components/schemas/SlotsPayload'
    SlotsPayload:
      type: object
      properties:
        slots:
          description: >-
            Bookable slots grouped by date in the response timezone. Dates with
            nothing available are omitted, so an event type with no bookable
            time returns an empty object
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/Slot'
          example:
            '2026-05-29':
              - start: '2026-05-29T09:00:00+00:00'
                end: '2026-05-29T09:30:00+00:00'
              - start: '2026-05-29T09:30:00+00:00'
                end: '2026-05-29T10:00:00+00:00'
    Slot:
      type: object
      properties:
        start:
          description: When the slot starts, in the response timezone
          type: string
          format: date-time
        end:
          description: When the slot ends, in the response timezone
          type: string
          format: date-time
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````