Tableo Restaurant API
Bookings

Update Booking

Update an existing booking's details. All fields are optional — only the fields you include will be changed.

This endpoint is protected by RMS idempotency middleware. You must send an Idempotency-Key header.

PATCH
/api/restaurant/bookings/{booking}

Authorization

bearerAuth
AuthorizationBearer <token>

Supports two token types:

  1. Restaurant tokens — API tokens with restaurant-api ability, issued per restaurant.
  2. User tokens — Personal access tokens with mobile-access ability (e.g. for the mobile app). When managing multiple restaurants, include X-Restaurant-Id: <id> header.

In: header

Path Parameters

booking*string

Booking ID (integer) or reference string (e.g. API-ABC123).

Header Parameters

Idempotency-Key*string

Unique idempotency key for this update request.

Match^[a-zA-Z0-9-]{1,64}$
Length1 <= length <= 64

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://devrms.tabdevx.com/api/restaurant/bookings/string" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "adults": 6,    "comment": "Updated — now 6 guests",    "table_ids": [      1,      3    ]  }'
{
  "data": {
    "id": 0,
    "reference": "string",
    "status": "confirmed",
    "date": "2019-08-24T14:15:22Z",
    "end_time": "2019-08-24T14:15:22Z",
    "adults": 0,
    "children": 0,
    "no_of_adults": 0,
    "no_of_children": 0,
    "comment": "string",
    "private_comment": "string",
    "company": "string",
    "room_number": "string",
    "custom_field": "string",
    "waiting_list": true,
    "created_by": "string",
    "is_reconfirmed": true,
    "is_reconfirmation_request_sent": true,
    "dining_area": {
      "id": 0,
      "name": "string"
    },
    "tables": [
      {
        "id": 0,
        "name": "string",
        "min_covers": 0,
        "max_covers": 0
      }
    ],
    "capabilities": {
      "can_cancel": true,
      "can_no_show": true,
      "can_check_in": true
    },
    "patron": {
      "id": 0,
      "name": "string",
      "email": "user@example.com",
      "mobile_number": "string",
      "comments": "string",
      "walkin": true,
      "tags": {
        "is_vip": true,
        "is_wine_lover": true,
        "is_vegan": true,
        "is_vegetarian": true,
        "is_always_late": true,
        "is_low_spender": true,
        "is_high_spender": true,
        "is_with_pet": true,
        "is_gluten_intolerant": true,
        "is_lactose_intolerant": true,
        "is_allergic_to_nuts": true,
        "is_allergic_to_shellfish": true
      },
      "stats": {
        "total_bookings": 0,
        "cancelled_bookings": 0,
        "no_show_bookings": 0,
        "last_booking_date": "string"
      }
    },
    "booking_source": {
      "id": 0,
      "name": "string"
    },
    "booking_tags": [
      {
        "id": 0,
        "name": "string",
        "icon": "string"
      }
    ],
    "concierge": "string"
  },
  "meta": {
    "timestamp": "2019-08-24T14:15:22Z",
    "restaurant_id": 0
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {}
  },
  "meta": {
    "timestamp": "2019-08-24T14:15:22Z"
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {}
  },
  "meta": {
    "timestamp": "2019-08-24T14:15:22Z"
  }
}

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Booking not found.",
    "details": null
  },
  "meta": {
    "timestamp": "2026-03-18T10:00:00Z"
  }
}

{
  "message": "Booking cannot be cancelled in its current status",
  "current_status": "cancelled"
}

{
  "error": {
    "code": "string",
    "message": "string",
    "details": {}
  },
  "meta": {
    "timestamp": "2019-08-24T14:15:22Z"
  }
}