---
title: "List guests"
method: GET
path: "/guests"
tags: ["Guests"]
---

# List guests

`GET /guests`

## Request

- Base URL: `https://api.aisle.wedding/v1`
- URL: `https://api.aisle.wedding/v1/guests`
- Auth: HTTP bearer

## Query parameters

- `party_id` string[]
- `rsvp_status` string[]
- `rsvp_stage` string[]
- `limit` integer
- `cursor` string

## Response `200`

A page of guests.

- object
  - `data` Guest[], required
    - `id` string, required
    - `first_name` string, required
    - `last_name` string, required
    - `phone` string, nullable, required
    - `email` string, email, nullable, required
    - `rsvp_status` 'pending' | 'attending' | 'declined' | 'maybe', required
    - `dietary_restrictions` string, nullable, required
    - `dietary_notes` string, nullable, required
    - `accommodation_id` string, required
    - `lodging_note` string, nullable, required
    - `notes` string, nullable, required
    - `tags` string[], required
    - `language` string, nullable, required
    - `plus_one_allowance` integer, required
    - `is_party_lead` boolean, required
    - `phone_e164` string, nullable, required: Canonical E.164 identity with a leading +, or null when unresolved.
    - `phone_status` 'valid' | 'missing' | 'invalid' | 'unresolved', required
    - `party_id` string, required
    - `plus_one_for_guest_id` string, required
    - `rsvp_stage` string, nullable, required
    - `rsvp_responded_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
    - `rsvp_option_id` string, nullable, required
    - `rsvp_option_label` string, nullable, required
    - `rsvp_answers` object, required
    - `address` GuestAddress, required
      - `line1` string, nullable, required
      - `line2` string, nullable, required
      - `city` string, nullable, required
      - `region` string, nullable, required
      - `postal_code` string, nullable, required
      - `country` string, nullable, required
    - `broadcast_channel` 'email' | 'sms' | 'either', required
    - `email_opted_out_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
    - `sms_opted_out` boolean, required
    - `whatsapp_opted_in_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
    - `preferred_transport` 'sms' | 'whatsapp', required: Preferred transport. SMS delivery depends on provider country permissions. WhatsApp also requires recipient consent and an open service window or approved template.
    - `preferred_transport_source` 'couple' | 'guest' | 'elena' | 'api' | 'system' | 'null', nullable, required: Who chose the preference. Recipient WhatsApp consent is recorded separately in whatsapp_opted_in_at; an API preference change does not grant consent.
    - `created_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
    - `updated_at` string, date-time, required: An RFC 3339 UTC timestamp with milliseconds.
  - `has_more` boolean, required
  - `next_cursor` string, nullable, required

## Other responses

- `400`: The request itself could not be read, such as a body that is not a JSON object. A field we refuse is validation_failed instead.
- `401`: The API key is missing, malformed, or no longer valid.
- `402`: The operation requires an active Aisle membership for this wedding.
- `403`: The key is valid but not permitted to do this.
- `404`: No such resource inside the key's wedding.
- `415`: A request body must be sent as application/json.
- `422`: The request was well-formed but a field was not acceptable. Every field at fault is named in error.details.
- `429`: Too many requests. Retry after the time given in Retry-After.
- `500`: Something went wrong on our side.

---

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