---
title: "Submit a booking / appointment request"
method: POST
path: "/api/v1/b/{handle}/reservations"
---

# Submit a booking / appointment request

`POST /api/v1/b/{handle}/reservations`

## Request

- Base URL: `https://www.trusgent.com`
- URL: `https://www.trusgent.com/api/v1/b/{handle}/reservations`
- Auth: one of:
  - none
  - HTTP bearer

Creates a PENDING reservation. The merchant confirms in Dashboard (business-ops). Owner may be notified via in-app, WhatsApp, or WeChat when configured. Not a guaranteed instant booking.

## Path parameters

- `handle` string, required

## Request body

- BusinessReservationRequest
  - `mode` 'table' | 'appointment': table for dine-in; appointment for generic services
  - `name` string, required
  - `phone` string, required
  - `email` string, email
  - `partySize` integer, required
  - `date` string, required: YYYY-MM-DD
  - `time` string, required: HH:mm
  - `note` string
  - `table` string: Optional table code from facade.tables
  - `service` string: Optional service label

## Response `201`

Reservation created (pending merchant confirmation)

- BusinessReservationResponse
  - `kind` string
  - `id` string: Reservation ID
  - `status` string
  - `handle` string
  - `opsHint` string
  - `urls` object
    - `facade` string
    - `passport` string
    - `ops` string

## Other responses

- `400`: Invalid request or slot full
- `404`: Business facade not found
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/trusgent/apis/trusgent-trust-api.md) · [All operations](https://skmtc.dev/trusgent/apis/trusgent-trust-api/llms.txt) · [OpenAPI document](https://skmtc.dev/trusgent/apis/trusgent-trust-api/revisions/a17c02cddf1d?raw)
