> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gomry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Attendee

> Update an attendee's status

# Update Attendee

Updates an attendee (ticket) status. Delegates to the same path the Gomry dashboard uses, so upgrade-flow routing, capacity locks, and Stripe refund side effects fire correctly.

Requires the `attendees:write` scope.

## Path Parameters

<ParamField path="eventId" type="string" required>
  The unique identifier of the event.
</ParamField>

<ParamField path="attendeeId" type="string" required>
  The unique identifier of the attendee (ticket).
</ParamField>

## Request Body

<ParamField body="status" type="string" required>
  Target status. Allowed values:

  * `valid` — approve a pending ticket
  * `checked_in` — mark as scanned at the door
  * `pending_approval` — return a valid ticket to the approval queue
  * `rejected` — refuse a pending ticket (may trigger Stripe refund for paid tickets)
  * `deleted` — soft-delete the ticket (also achievable via DELETE)
</ParamField>

<ParamField body="notify_guest" type="boolean">
  Send the attendee an email about the status change. Default `false`.
</ParamField>

<ParamField body="custom_message" type="string">
  Custom message included in the notification email (max 10000 chars). Ignored when `notify_guest` is false.
</ParamField>

## Response

Returns `200 OK` with the updated attendee in the same shape as [Get Attendee](/api-reference/attendees/get-attendee).

## Errors

* `400 Validation failed` — invalid body shape.
* `404 Attendee not found` — ticket missing or not owned by your org.
* `422` — the underlying transition was rejected (e.g. you tried to approve a ticket whose pending upgrade was cancelled). The response `error` field carries the reason.

<RequestExample>
  ```bash cURL theme={null}
  curl -X PATCH -H "X-API-KEY: your_api_key" \
    -H "Content-Type: application/json" \
    -d '{ "status": "checked_in" }' \
    https://www.gomry.com/api/v1/events/AbCdEfGhIjKlMnOpQrSt/attendees/tkt_AAA
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://www.gomry.com/api/v1/events/AbCdEfGhIjKlMnOpQrSt/attendees/tkt_AAA",
    {
      method: "PATCH",
      headers: {
        "X-API-KEY": "your_api_key",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ status: "checked_in" }),
    }
  );
  const { data } = await response.json();
  ```
</RequestExample>
