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

# GET /Bookings/schedule

> Get available booking time slots for a given date and party size.

Get available booking time slots for a given date and party size. Optionally pass an existing booking ID to find alternative times for rescheduling.

<ParamField header="X-API-KEY" type="string" required>Your API key</ParamField>

<ParamField query="BookingDateTimeStart" type="string" required>Start of date range. Format: `yyyy-MM-ddTHH:mm:ss.fffZ`</ParamField>
<ParamField query="NumOfPeople" type="integer" required>Number of guests</ParamField>
<ParamField query="BookingDateTimeEnd" type="string">End of date range. If not provided, returns slots for the entire day.</ParamField>
<ParamField query="BookingId" type="string">Existing booking ID to find alternative slots for rescheduling.</ParamField>

<CodeGroup>
  ```shell curl theme={null}
  curl --location '[BASE_URL]/Bookings/schedule?BookingDateTimeStart=2024-03-20T00:00:00.000Z&NumOfPeople=4' \
  --header 'X-API-KEY: your_api_key_here'
  ```
</CodeGroup>

Response is an array of `ScheduleQueryResponse` objects.

**ScheduleQueryResponse**

| Field             | Type                  | Nullable | Description                                                   |
| ----------------- | --------------------- | -------- | ------------------------------------------------------------- |
| `isVenueOpen`     | boolean               | No       | Whether the venue is open                                     |
| `blockoutMessage` | string                | Yes      | Why venue is blocked out. Present when `isVenueOpen` is false |
| `services`        | array of ServiceModel | Yes      | Available services with time slots                            |

**ServiceModel**

| Field                 | Type                  | Nullable | Description                   |
| --------------------- | --------------------- | -------- | ----------------------------- |
| `id`                  | string                | Yes      | Service identifier            |
| `name`                | string                | Yes      | Service name                  |
| `online`              | boolean               | No       | Accepts online bookings       |
| `duration`            | integer               | No       | Default duration in minutes   |
| `description`         | string                | Yes      | Service description           |
| `serviceType`         | string                | Yes      | Type (e.g. `dining`)          |
| `policyAgreement`     | string                | Yes      | Policy title shown at booking |
| `policyAgreementText` | string                | Yes      | Full policy text              |
| `sections`            | array of SectionModel | Yes      | Available venue sections      |
| `times`               | array of TimeModel    | Yes      | Available time slots          |
| `paymentDetails`      | ServicePayment        | No       | Payment configuration         |

**SectionModel** — `id` (string), `name` (string), `order` (integer)

**TimeModel** — `time` (string UTC datetime), `name` (string, e.g. "6:00 PM"), `expired` (boolean), `bookingOptionsCount` (integer), `sections` (array of `{ id, sectionState: boolean }`)

**ServicePayment** — `paymentType`, `peopleRequired`, `price`, `fee`, `optionsFrom`, `optionsTo`, `maxPeoplePerBookingOverride`, `hasPromotion`, `singleMenuPerBooking`

**Example 200 Response**

```json theme={null}
[
  {
    "isVenueOpen": true,
    "blockoutMessage": null,
    "services": [
      {
        "id": "svc-101",
        "name": "Dinner Service",
        "online": true,
        "duration": 90,
        "description": "Standard dinner bookings",
        "serviceType": "dining",
        "sections": [
          { "id": "sec-1", "name": "Main Floor", "order": 1 }
        ],
        "times": [
          {
            "name": "6:00 PM",
            "expired": false,
            "bookingOptionsCount": 3,
            "time": "2024-03-20T18:00:00Z",
            "sections": [{ "id": "sec-1", "sectionState": true }]
          }
        ],
        "paymentDetails": {
          "paymentType": "none",
          "peopleRequired": 0,
          "price": 0.00,
          "fee": 0.00,
          "hasPromotion": false,
          "singleMenuPerBooking": false
        }
      }
    ]
  }
]
```

| Status | Description                                                          |
| ------ | -------------------------------------------------------------------- |
| `200`  | Schedule returned                                                    |
| `400`  | API key not associated with a venue                                  |
| `400`  | `No Venue Subscribed to your App.`                                   |
| `400`  | `requested Date is not in correct format '{DateTimeISO8601Format}'.` |
| `401`  | X-API-KEY missing or invalid                                         |
| `429`  | Rate limit exceeded                                                  |


## OpenAPI

````yaml GET /Bookings/schedule
openapi: 3.0.4
info:
  title: NowBookIt IPOS Partner API
  description: >-
    REST API for integrating your POS or external system with NowBookIt's
    reservation, sales, and gift card platform.
  version: v1
  contact:
    email: platform.integrations@nowbookit.com
servers:
  - url: https://ipos.dev.nowbookit.com
    description: Development
  - url: https://ipos.nowbookit.com
    description: Production
security:
  - ApiKeyAuth: []
paths:
  /Bookings/schedule:
    get:
      tags:
        - Bookings
      summary: Get Booking Schedule
      operationId: getBookingSchedule
      parameters:
        - name: BookingDateTimeStart
          in: query
          description: 'The DateTime of Schedule. Format: ''yyyy-MM-ddTHH:mm:ss.fffZ'''
          required: true
          schema:
            type: string
        - name: NumOfPeople
          in: query
          description: The number of guests to find Schedule times
          required: true
          schema:
            type: integer
            format: int32
        - name: BookingId
          in: query
          description: To find new Schedule timings for existing bookings.
          schema:
            type: string
        - name: BookingDateTimeEnd
          in: query
          description: >-
            Schedule end DateTime. If not passed, schedule for whole day is
            returned. Format: 'yyyy-MM-ddTHH:mm:ss.fffZ'
          schema:
            type: string
        - name: X-API-KEY
          in: header
          description: API Key authentication header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Get Booking Schedule from NBI
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ScheduleQueryResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    ScheduleQueryResponse:
      type: object
      properties:
        isVenueOpen:
          type: boolean
        blockoutMessage:
          type: string
          nullable: true
        services:
          type: array
          items:
            $ref: '#/components/schemas/ServiceModel'
          nullable: true
      additionalProperties: false
    ServiceModel:
      type: object
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        online:
          type: boolean
        duration:
          type: integer
          format: int32
        sections:
          type: array
          items:
            $ref: '#/components/schemas/SectionModel'
          nullable: true
        times:
          type: array
          items:
            $ref: '#/components/schemas/TimeModel'
          nullable: true
        paymentDetails:
          $ref: '#/components/schemas/ServicePayment'
        description:
          type: string
          nullable: true
        policyAgreement:
          type: string
          nullable: true
        policyAgreementText:
          type: string
          nullable: true
        serviceType:
          type: string
          nullable: true
      additionalProperties: false
    SectionModel:
      type: object
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        order:
          type: integer
          format: int32
      additionalProperties: false
    TimeModel:
      type: object
      properties:
        name:
          type: string
          nullable: true
        expired:
          type: boolean
        bookingOptionsCount:
          type: integer
          format: int32
        time:
          type: string
          format: date-time
        sections:
          type: array
          items:
            $ref: '#/components/schemas/SectionStateModel'
          nullable: true
      additionalProperties: false
    ServicePayment:
      type: object
      properties:
        paymentType:
          type: string
          nullable: true
        peopleRequired:
          type: integer
          format: int32
        price:
          type: number
          format: double
        optionsFrom:
          type: string
          format: date-time
          nullable: true
        optionsTo:
          type: string
          format: date-time
          nullable: true
        maxPeoplePerBookingOverride:
          type: integer
          format: int32
          nullable: true
        hasPromotion:
          type: boolean
        singleMenuPerBooking:
          type: boolean
        fee:
          type: number
          format: double
      additionalProperties: false
    SectionStateModel:
      type: object
      properties:
        id:
          type: string
          nullable: true
        sectionState:
          type: boolean
      additionalProperties: false
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````