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

# Search reservations

> Returns a paginated list of reservation summary rows for the authenticated restaurant. Use this endpoint to filter by date range, customer contact data, status, external reference, or party size. For full reservation details, call `GET /reservations/{id}`.



## OpenAPI

````yaml https://app.eat-now.io/api/partner/v1/openapi.json get /api/partner/v1/reservations
openapi: 3.0.3
info:
  title: EatNow Partner API
  version: v1
  description: >-
    Version 1 of the EatNow partner API.


    This API is designed for trusted partner integrations that need
    restaurant-scoped access to availability, reservation management, and
    operational reference data.


    Authentication

    - Use `Authorization: Bearer <token>` with a partner API token created from
    the EatNow dashboard.

    - Access is controlled by credential scopes and each request is resolved to
    a single restaurant.


    Base URL

    - The server URL in this document is the canonical base URL for the current
    environment.


    Errors

    - Errors follow a consistent envelope with `error.code`, `error.message`,
    and `error.request_id`.

    - Validation, authentication, authorization, conflicts, and not-found cases
    all use the same top-level error shape.


    Rate limits

    - Partner API traffic is rate limited. Clients should treat `429` responses
    as retryable and back off accordingly.


    Public endpoints

    - `GET /api/partner/v1` and `GET /api/partner/v1/openapi.json` are public.

    - All business endpoints require Bearer authentication.
servers:
  - url: https://app.eat-now.io
security: []
tags:
  - name: Meta
    description: Platform metadata and schema endpoints
  - name: Authentication
    description: Credential validation and auth context endpoints
  - name: Availability
    description: Bookable slot search and exact slot validation
  - name: Catalog
    description: Reference data for restaurant tables, rooms, prescribers, and discounts
  - name: Reservations
    description: Reservation lookup, search, update, and cancellation
  - name: Missed Calls
    description: Report missed calls and trigger WhatsApp follow-up templates
paths:
  /api/partner/v1/reservations:
    get:
      tags:
        - Reservations
      summary: Search reservations
      description: >-
        Returns a paginated list of reservation summary rows for the
        authenticated restaurant. Use this endpoint to filter by date range,
        customer contact data, status, external reference, or party size. For
        full reservation details, call `GET /reservations/{id}`.
      operationId: searchPartnerReservations
      parameters:
        - schema:
            type: string
            format: date-time
            description: >-
              Lower inclusive datetime bound for reservation start time
              filtering.
          required: false
          description: Lower inclusive datetime bound for reservation start time filtering.
          name: start_at_from
          in: query
        - schema:
            type: string
            format: date-time
            description: >-
              Upper inclusive datetime bound for reservation start time
              filtering.
          required: false
          description: Upper inclusive datetime bound for reservation start time filtering.
          name: start_at_to
          in: query
        - schema:
            type: string
            format: email
            description: Filter reservations by the linked customer email address.
          required: false
          description: Filter reservations by the linked customer email address.
          name: email
          in: query
        - schema:
            type: string
            minLength: 1
            description: Filter reservations by the linked customer phone number.
          required: false
          description: Filter reservations by the linked customer phone number.
          name: phone
          in: query
        - schema:
            type: array
            items:
              type: string
              enum:
                - PENDING
                - PENDING_PAYMENT
                - CANCELED_BY_USER
                - CONFIRMED
                - CONFIRMED_PENDING_PAYMENT
                - MANUALLY_CONFIRMED
                - DOUBLE_CONFIRMED
                - REJECTED
                - CANCELED_BY_RESTAURANT
                - SHOWED_UP
                - NO_SHOW
                - SEATED
                - PARTIALLY_SEATED
                - DONE
                - SEATED_FOR_DRINKS
            description: >-
              Filter reservations by one or more reservation statuses. Repeat
              the query parameter to pass multiple values.
          required: false
          description: >-
            Filter reservations by one or more reservation statuses. Repeat the
            query parameter to pass multiple values.
          name: status
          in: query
        - schema:
            type: string
            minLength: 1
            description: Filter reservations by the partner-provided external reference.
          required: false
          description: Filter reservations by the partner-provided external reference.
          name: external_id
          in: query
        - schema:
            type: integer
            minimum: 1
            description: Filter reservations by party size.
          required: false
          description: Filter reservations by party size.
          name: party_size
          in: query
        - schema:
            type: integer
            minimum: 1
            default: 1
            description: 1-based page number for paginated search results.
          required: false
          description: 1-based page number for paginated search results.
          name: page
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
            description: Number of reservations returned per page, from 1 to 100.
          required: false
          description: Number of reservations returned per page, from 1 to 100.
          name: per_page
          in: query
      responses:
        '200':
          description: Reservation search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerApiReservationSearchResponse'
        '400':
          description: Request validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerApiError'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerApiError'
        '403':
          description: Scope is insufficient
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerApiError'
      security:
        - PartnerBearerToken: []
components:
  schemas:
    PartnerApiReservationSearchResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PartnerApiReservationSearchItem'
        pagination:
          $ref: '#/components/schemas/PartnerApiPagination'
      required:
        - data
        - pagination
    PartnerApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              $ref: '#/components/schemas/PartnerApiErrorCode'
            message:
              type: string
            request_id:
              type: string
            details:
              type: object
              additionalProperties:
                nullable: true
          required:
            - code
            - message
            - request_id
      required:
        - error
    PartnerApiReservationSearchItem:
      type: object
      properties:
        id:
          type: string
        external_id:
          type: string
          nullable: true
        status:
          type: string
          enum:
            - PENDING
            - PENDING_PAYMENT
            - CANCELED_BY_USER
            - CONFIRMED
            - CONFIRMED_PENDING_PAYMENT
            - MANUALLY_CONFIRMED
            - DOUBLE_CONFIRMED
            - REJECTED
            - CANCELED_BY_RESTAURANT
            - SHOWED_UP
            - NO_SHOW
            - SEATED
            - PARTIALLY_SEATED
            - DONE
            - SEATED_FOR_DRINKS
        start_at:
          type: string
          format: date-time
        party_size:
          type: integer
          minimum: 1
        source:
          type: string
          enum:
            - WALK_IN
            - WEBSITE
            - PHONE
            - EMAIL
            - RESERVE_WITH_GOOGLE
            - TRAVEL_AGENCIES
            - OTHER
            - INSTAGRAM
            - FACEBOOK
            - TIKTOK
            - SNAPCHAT
            - WHATSAPP
            - TRIPADVISOR
            - PRIVATIZATION
            - MISSED_CALL
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        customer:
          $ref: '#/components/schemas/PartnerApiCustomerSummary'
        room:
          $ref: '#/components/schemas/PartnerApiRoom'
        payment_summary:
          $ref: '#/components/schemas/PartnerApiPaymentSummary'
        sensitive_data_included:
          type: boolean
      required:
        - id
        - external_id
        - status
        - start_at
        - party_size
        - source
        - created_at
        - updated_at
        - customer
        - room
        - payment_summary
        - sensitive_data_included
    PartnerApiPagination:
      type: object
      properties:
        page:
          type: integer
          minimum: 1
        per_page:
          type: integer
          minimum: 1
          maximum: 100
        total:
          type: integer
          minimum: 0
        total_pages:
          type: integer
          minimum: 0
      required:
        - page
        - per_page
        - total
        - total_pages
    PartnerApiErrorCode:
      type: string
      enum:
        - AUTHENTICATION_REQUIRED
        - INVALID_AUTHENTICATION
        - INSUFFICIENT_SCOPE
        - VALIDATION_ERROR
        - RESOURCE_NOT_FOUND
        - RESOURCE_CONFLICT
        - RATE_LIMITED
        - INTERNAL_ERROR
    PartnerApiCustomerSummary:
      type: object
      nullable: true
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
          format: email
        phone_number:
          type: string
          nullable: true
      required:
        - id
        - name
        - email
        - phone_number
    PartnerApiRoom:
      type: object
      nullable: true
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
    PartnerApiPaymentSummary:
      type: object
      properties:
        currency:
          type: string
          nullable: true
          enum:
            - MAD
            - EUR
            - USD
            - XOF
            - null
        total_amount:
          type: integer
        paid_amount:
          type: integer
        authorized_amount:
          type: integer
        pending_amount:
          type: integer
        refunded_amount:
          type: integer
        statuses:
          type: array
          items:
            type: string
            enum:
              - FREE
              - PENDING
              - PAID
              - EXPIRED
              - REFUNDED
              - CANCELED
              - AUTHORIZED
              - CAPTURED
              - CAPTURE_FAILED
              - VOIDED
              - DECLINED
      required:
        - currency
        - total_amount
        - paid_amount
        - authorized_amount
        - pending_amount
        - refunded_amount
        - statuses
  securitySchemes:
    PartnerBearerToken:
      type: http
      scheme: bearer
      bearerFormat: API Token
      description: >-
        Restaurant-scoped partner API token passed as `Authorization: Bearer
        <token>`.
      x-default: your_token_here

````