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

# Outlet timeslots

> Returns pickup and delivery timeslots for the outlet and channel on the given date.



## OpenAPI

````yaml specs/admin-v1.yaml GET /outlets/{outlet_id}/channels/{channel_id}/timeslots
openapi: 3.1.0
info:
  title: Atlas Admin API
  version: 1.0.0
  description: ''
servers:
  - url: https://api.atlas.kitchen/admin/v1
    description: Admin API
security:
  - apiKey: []
    merchantId: []
tags:
  - name: Introduction
    description: >
      The Atlas Admin API provides server-to-server access to merchant
      operations — menu management, order lifecycle, user sync, and inventory.


      ### Who uses this API


      - **Integration partners** syncing menus, orders, or users from external
      systems

      - **POS integrations** creating dine-in carts with payment

      - **Aggregator platforms** pushing orders from external channels


      ### Base URL


      ```

      https://api.atlas.kitchen/admin/v1

      ```


      All endpoints are under `/admin/v1`. Each merchant has their own API
      endpoint (e.g. `https://api.merchant-name.atlas.kitchen/admin/v1`).


      ### Conventions


      **Monetary values** — All monetary fields (`price_cents`, `subtotal`,
      `amount`, etc.) are integers in **minor currency units** (cents). `790` =
      $7.90.


      **Dates and times:**

      - Dates — ISO 8601 format: `2026-04-11`

      - Timestamps — Unix epoch (seconds): `1775882963`

      - Timeslots — Seconds since midnight: `36000` = 10:00 AM


      **Pagination** — List endpoints support `page` and `per_page` query
      parameters (max 200 per page).


      **Errors** — All errors follow a consistent format:


      ```json

      {
        "type": "Invalid Parameter",
        "message": "Human-readable description",
        "error_hash": { "field_name": "Specific error" }
      }

      ```


      | Status | Type | Meaning |

      |--------|------|---------|

      | 401 | Unauthorized | Invalid or missing API key |

      | 404 | Not Found | Resource doesn't exist |

      | 422 | Invalid Parameter | Validation failed |

      | 500 | Server Error | Unexpected error |
  - name: Authentication
    description: >
      Every request requires two headers:


      | Header | Description |

      |--------|-------------|

      | `X-Api-Key` | Your API key |

      | `X-Merchant-Id` | Your merchant ID |


      ### Example


      ```bash

      curl https://api.atlas.kitchen/admin/v1/menus \
        -H "X-Api-Key: your-api-key" \
        -H "X-Merchant-Id: your-merchant-id"
      ```


      ### Credential security


      - Never expose credentials in public repositories or client-side code

      - Store credentials securely (environment variables, secret managers)

      - If credentials are compromised, contact support immediately for
      replacement


      ### Error response


      Invalid or missing credentials return `401 Unauthorized`:


      ```json

      {
        "type": "Unauthorized",
        "message": "You did not provide valid credentials for this request.",
        "error_hash": {
          "api_key": "Check if the API Key is set correctly in the X-Api-Key header."
        }
      }

      ```
  - name: Menus
    description: >
      Manage merchant menus with full hierarchy — sections, items, modifier
      groups, and modifiers.


      The `POST /menus` endpoint is an **upsert by identifier** — it creates a
      new menu or updates an existing one, syncing the entire hierarchy in a
      single call. Orphaned sections and items are automatically removed.
  - name: Timeslots
    description: |
      Pickup and delivery timeslots for an outlet on a given serving date.
  - name: Orders
    description: >
      Create orders and manage orders created through the Admin API.


      Orders created through other Atlas workflows cannot be managed with these
      endpoints.
  - name: Users
    description: >
      Sync user records from external systems. Creates or updates users with
      support for guest users, external ID linking, and account creation.
  - name: Stocks
    description: |
      Item stock levels for an outlet on a given serving date.
  - name: Tables
    description: |
      Table layouts for outlets.
  - name: Carts
    description: |
      Create POS carts for dine-in orders with optional upfront payment.
  - name: Cash Vouchers
    description: >
      Create and inspect prepaid cash vouchers for external gift-card or voucher
      integrations.
paths:
  /outlets/{outlet_id}/channels/{channel_id}/timeslots:
    get:
      tags:
        - Timeslots
      summary: Outlet timeslots
      description: >-
        Returns pickup and delivery timeslots for the outlet and channel on the
        given date.
      operationId: adminGetTimeslots
      parameters:
        - name: outlet_id
          in: path
          required: true
          schema:
            type: integer
        - name: channel_id
          in: path
          required: true
          schema:
            type: integer
        - name: serving_date
          in: query
          required: true
          description: Serving date in the merchant's time zone, in YYYY-MM-DD format.
          schema:
            type: string
            format: date
          example: '2026-09-30'
        - name: brand_id
          in: query
          required: false
          description: >
            Brand to use for the outlet and channel. Falls back to the shared
            configuration if no brand-specific configuration exists.

            If omitted, uses the channel's default configuration.
          schema:
            type: integer
      responses:
        '200':
          description: Pickup and delivery timeslots
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeslotResponse'
              example:
                serving_date: '2026-09-30'
                delivery:
                  closed: false
                  message: null
                  service_hours:
                    - name: Lunch Service
                      service_start: 36000
                      service_end: 43200
                      lead_time: 5400
                      service_range: 10:00AM–12:00PM
                      timeslots:
                        - type: available_timeslots
                          seconds_start: 37800
                          seconds_end: 39600
                          range: 10:30AM–11:00AM
                          available_before: 1790730000
                          available_from: 1790092800
                        - type: available_timeslots
                          seconds_start: 39600
                          seconds_end: 41400
                          range: 11:00AM–11:30AM
                          available_before: 1790731800
                          available_from: 1790092800
                        - type: available_timeslots
                          seconds_start: 41400
                          seconds_end: 43200
                          range: 11:30AM–12:00PM
                          available_before: 1790733600
                          available_from: 1790092800
                        - type: available_timeslots
                          seconds_start: 43200
                          seconds_end: 45000
                          range: 12:00PM–12:30PM
                          available_before: 1790735400
                          available_from: 1790092800
                      overnight: false
                pickup:
                  closed: false
                  message: null
                  service_hours:
                    - name: Lunch Service
                      service_start: 36000
                      service_end: 43200
                      lead_time: 3600
                      service_range: 10:00AM–12:00PM
                      timeslots:
                        - type: available_timeslots
                          seconds_start: 36000
                          seconds_end: 37800
                          range: 10:00AM–10:30AM
                          available_before: 1790730000
                          available_from: 1790092800
                        - type: available_timeslots
                          seconds_start: 37800
                          seconds_end: 39600
                          range: 10:30AM–11:00AM
                          available_before: 1790731800
                          available_from: 1790092800
                        - type: available_timeslots
                          seconds_start: 39600
                          seconds_end: 41400
                          range: 11:00AM–11:30AM
                          available_before: 1790733600
                          available_from: 1790092800
                        - type: available_timeslots
                          seconds_start: 41400
                          seconds_end: 43200
                          range: 11:30AM–12:00PM
                          available_before: 1790735400
                          available_from: 1790092800
                      overnight: false
        '401':
          description: Missing, invalid, or unauthorized Admin API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeslotError'
        '404':
          description: Outlet not found in this merchant.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeslotError'
        '422':
          description: >
            Invalid Parameter for a missing or malformed serving_date.

            Configuration Required when no matching outlet/channel/brand
            configuration exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeslotError'
components:
  schemas:
    TimeslotResponse:
      type: object
      properties:
        serving_date:
          type: string
          format: date
          description: >-
            Serving date in the merchant's time zone, including for overnight
            slots.
        pickup:
          $ref: '#/components/schemas/TimeslotFulfilment'
        delivery:
          $ref: '#/components/schemas/TimeslotFulfilment'
    TimeslotError:
      type: object
      properties:
        type:
          type: string
        message:
          type: string
        details:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
              message:
                type: string
    TimeslotFulfilment:
      type: object
      properties:
        closed:
          type: boolean
          description: >-
            True on closed dates or when no service hours apply to this
            fulfilment type.
        message:
          type:
            - string
            - 'null'
          description: Message from the applicable special hours, if configured.
        service_hours:
          type: array
          description: >-
            Regular hours for the date, overridden by applicable special hours.
            Empty on closed dates.
          items:
            $ref: '#/components/schemas/TimeslotServiceHours'
    TimeslotServiceHours:
      type: object
      properties:
        name:
          type:
            - string
            - 'null'
        service_start:
          type: integer
          description: Configured operating start, in seconds since midnight.
        service_end:
          type: integer
          description: >-
            Configured operating end, in seconds since midnight; earlier than
            service_start for overnight hours.
        service_range:
          type: string
        lead_time:
          type: integer
          description: >-
            Configured lead time in seconds, including the standard delivery
            allowance for delivery.
        overnight:
          type: boolean
          description: Whether the operating range ends on the next calendar day.
        timeslots:
          type: array
          description: >-
            Slots from regular or special hours, including slots outside their
            booking window. Live capacity and stock are not checked.
          items:
            $ref: '#/components/schemas/Timeslot'
    Timeslot:
      type: object
      properties:
        type:
          type: string
          description: Slot type. Maps to timeslot_type on orders.
          example: available_timeslots
        seconds_start:
          type: integer
          description: >-
            Slot start in seconds since serving-date midnight. May exceed 86400
            overnight. Maps to timeslot_start on orders.
          example: 36000
        seconds_end:
          type: integer
          description: >-
            Slot end in seconds since serving-date midnight. May exceed 86400
            overnight. Maps to timeslot_end on orders.
          example: 37800
        range:
          type: string
          example: 10:00AM–10:30AM
        available_from:
          type: integer
          description: >-
            Unix timestamp when the configured advance-booking window starts
            (inclusive).
        available_before:
          type: integer
          description: >-
            Unix timestamp of the slot booking cutoff (exclusive), including its
            lead time.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key
      description: Your API key provided during onboarding. Example `c2fb5ae6ea99c37d...`
    merchantId:
      type: apiKey
      in: header
      name: X-Merchant-Id
      description: Your numeric merchant ID. Example `1`

````