Skip to main content
POST
/
api
/
partner
/
v1
/
reservations
curl --request POST \
  --url https://app.eat-now.io/api/partner/v1/reservations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "customer": {
    "name": "Jane Doe",
    "email": "jane@example.com",
    "phone_number": "+33612345678",
    "lang": "FR"
  },
  "party_size": 4,
  "start_at": "2026-04-08T19:15:00+01:00",
  "shift_id": "shift_dinner",
  "external_id": "partner-booking-123",
  "source": "WEBSITE",
  "tags": [
    "vip"
  ],
  "allergies": "Peanuts",
  "custom_message": "Seat near the window",
  "total_amount_paid": 12000,
  "bypass_payments": false,
  "bypass_availability": false,
  "bypass_approval": false,
  "send_client_notifications": true,
  "send_payment_link": true
}
'
{
  "data": {
    "id": "<string>",
    "external_id": "<string>",
    "start_at": "2023-11-07T05:31:56Z",
    "party_size": 2,
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z",
    "customer": {
      "id": "<string>",
      "name": "<string>",
      "email": "jsmith@example.com",
      "phone_number": "<string>"
    },
    "room": {
      "id": "<string>",
      "name": "<string>"
    },
    "tables": [
      {
        "id": "<string>",
        "name": "<string>",
        "min_pax": 123,
        "max_pax": 123
      }
    ],
    "waiter": {
      "id": "<string>",
      "name": "<string>"
    },
    "shift": {
      "id": "<string>",
      "name": "<string>",
      "start_time": "<string>",
      "end_time": "<string>"
    },
    "discount": {
      "id": "<string>",
      "value": 123,
      "message": "<string>"
    },
    "prescriber": {
      "id": "<string>",
      "name": "<string>",
      "phone_number": "<string>"
    },
    "custom_message": "<string>",
    "allergies": "<string>",
    "metadata": {},
    "feedback": {
      "rating": 123,
      "comment": "<string>",
      "answer": "<string>",
      "created_at": "2023-11-07T05:31:56Z",
      "answered_at": "2023-11-07T05:31:56Z"
    },
    "cancellation_reason": "<string>",
    "attached_files": [
      "<string>"
    ],
    "tags": [
      "<string>"
    ],
    "send_followup_email": true,
    "is_table_definitive": true,
    "is_force_inserted": true,
    "total_amount_paid": 123,
    "payment_summary": {
      "total_amount": 123,
      "paid_amount": 123,
      "authorized_amount": 123,
      "pending_amount": 123,
      "refunded_amount": 123,
      "statuses": []
    },
    "payments": [
      {
        "id": "<string>",
        "provider_id": "<string>",
        "amount": 123,
        "quantity": 123,
        "unit_price": 123,
        "percent_of_total": 123,
        "is_refundable": true,
        "expiration_date": "2023-11-07T05:31:56Z",
        "max_cancellation_date": "2023-11-07T05:31:56Z",
        "authorized_at": "2023-11-07T05:31:56Z",
        "capture_deadline": "2023-11-07T05:31:56Z",
        "captured_at": "2023-11-07T05:31:56Z",
        "voided_at": "2023-11-07T05:31:56Z",
        "linked_product": {
          "id": "<string>",
          "name": "<string>"
        },
        "linked_variant": {
          "id": "<string>",
          "name": "<string>"
        },
        "created_at": "2023-11-07T05:31:56Z",
        "updated_at": "2023-11-07T05:31:56Z"
      }
    ],
    "seated_at": "2023-11-07T05:31:56Z",
    "left_at": "2023-11-07T05:31:56Z",
    "sensitive_data_included": true
  }
}

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.

Authorizations

Authorization
string
header
default:your_token_here
required

Restaurant-scoped partner API token passed as Authorization: Bearer <token>.

Body

application/json

Reservation creation payload for standard bookings, force inserts, or operational walk-ins.

customer
object
required

Customer payload for the reservation. Use null to create an anonymous reservation with no linked customer, such as a walk-in.

party_size
integer
required
Required range: x >= 1
start_at
string<date-time>
required

Reservation start datetime in the restaurant timezone, including offset.

shift_id
string

Optional shift identifier. When omitted, the system resolves the shift from start_at.

Minimum string length: 1
room_id
string

Optional room identifier to target during booking.

Minimum string length: 1
table_ids
string[]

Optional table identifiers to assign at creation.

Minimum string length: 1
waiter_id
string
Minimum string length: 1
external_id
string

Optional partner reference. When provided, it must be unique per restaurant.

Minimum string length: 1
source
enum<string>

Optional reservation source. Defaults to WEBSITE.

Available options:
WALK_IN,
WEBSITE,
PHONE,
EMAIL,
RESERVE_WITH_GOOGLE,
TRAVEL_AGENCIES,
OTHER,
INSTAGRAM,
FACEBOOK,
TIKTOK,
SNAPCHAT,
WHATSAPP,
TRIPADVISOR,
PRIVATIZATION,
MISSED_CALL
prescriber_id
string
Minimum string length: 1
discount_id
string
Minimum string length: 1
tags
string[]
attached_files
string[]
metadata
object
allergies
string | null

Guest-facing note, such as allergies or special requests.

custom_message
string | null

Internal staff note stored on the reservation.

total_amount_paid
integer | null

Optional total amount already paid for the reservation, expressed in the smallest currency unit used by the restaurant, for example cents.

Required range: x >= 0
bypass_payments
boolean
default:false

When true, no payment rows are created, even if the selected shift normally requires a deposit or mandatory prepayment.

bypass_availability
boolean
default:false

When true, skips availability and capacity validation. This requires the RESERVATIONS_FORCE_INSERT scope and marks the reservation as force inserted.

bypass_approval
boolean
default:false

When true, bypasses manual staff approval for shifts that normally create pending reservations. This requires the RESERVATIONS_FORCE_CONFIRM scope.

initial_status
enum<string>

Optional privileged create-time status override. When provided, this requires the RESERVATIONS_FORCE_INSERT scope and is validated against payment and manual-approval rules.

Available options:
PENDING,
CONFIRMED,
CONFIRMED_PENDING_PAYMENT,
SHOWED_UP,
SEATED,
PARTIALLY_SEATED,
SEATED_FOR_DRINKS
send_client_notifications
boolean
default:true

When false, customer email and WhatsApp notifications are suppressed. Restaurant-side notifications still run.

Controls delayed payment-link delivery for created deposits. Ignored when payments are bypassed or no deposit is created.

Response

Reservation created

data
object
required