# Get a reservation

> Returns one reservation by its UUID — the id a webhook or the list named.

Source: https://www.hey.support/docs/api/reservations/get-reservation

---

<ApiEndpoint method="GET" path="/reservations/{id}" />

Responds 404 rather than 403 when the reservation belongs to another workspace, so ids cannot be enumerated.

## Path parameters

<TypeTable
  type={{
  "id": { type: "string (uuid)", description: "", required: true }
}}
/>

## Response `200`

<TypeTable
  type={{
  "id": { type: "string (uuid)", description: "Reservation UUID (not sqid-encoded)", required: true },
  "chatbot_id": { type: "string", description: "", required: true },
  "conversation_id": { type: "string", description: "", required: false },
  "customer_id": { type: "integer", description: "The workspace-level guest record the reservation belongs to — the same person across every agent in the workspace.", required: false },
  "status": { type: "\"held\" | \"requested\" | \"confirmed\" | \"arrived\" | \"completed\" | \"no_show\" | \"cancelled\" | \"declined\" | \"blocked\"", description: "", required: true },
  "service_id": { type: "integer", description: "The service, as listed by `/reservation-services`. Null once the service has been deleted; `service_name` keeps the name.", required: false },
  "service_name": { type: "string", description: "", required: false },
  "resource_id": { type: "integer", description: "The staff member or area, null when none was assigned.", required: false },
  "resource_name": { type: "string", description: "", required: false },
  "start_at": { type: "string (date-time)", description: "", required: true },
  "end_at": { type: "string (date-time)", description: "", required: true },
  "party_size": { type: "integer", description: "", required: true },
  "name": { type: "string", description: "", required: false },
  "email": { type: "string (email)", description: "", required: false },
  "phone": { type: "string", description: "", required: false },
  "answers": { type: "object", description: "The guest’s answers to the service’s questions, keyed by question id.", required: false },
  "notes": { type: "string", description: "What the guest wrote when booking.", required: false },
  "source": { type: "\"agent\" | \"card\" | \"manual\" | \"manage\" | \"api\" | \"channel\"", description: "How it was made: in chat, on the widget card, by the team, from the guest’s manage link, or on a messaging channel.", required: true },
  "channel": { type: "string", description: "", required: false },
  "language": { type: "string", description: "", required: false },
  "attendee_timezone": { type: "string", description: "", required: false },
  "cancel_reason": { type: "string", description: "", required: false },
  "cancelled_by": { type: "string", description: "Who cancelled: customer, staff or system.", required: false },
  "decline_reason": { type: "string", description: "", required: false },
  "reschedule_count": { type: "integer", description: "", required: false },
  "created_at": { type: "string (date-time)", description: "", required: true },
  "updated_at": { type: "string (date-time)", description: "", required: true }
}}
/>

### Errors

* `401` — Missing or invalid API key
* `404` — Not found
* `429` — Rate limit exceeded

Every error shares [one envelope](/docs/api/errors).

## Example

```bash
curl https://www.hey.support/api/v1/reservations/<id> \
  -H 'Authorization: Bearer hs_live_…'
```
