> ## 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.

# List My Tickets

> The signed-in person's own tickets, for their personal agent

Returns the tickets the signed-in person holds or was invited with, one entry per ticket, ordered by event date.

<Note>
  **Personal agents only.** Call it with a [Personal Agent Protocol](https://personalagentprotocol.org) Session Token (`Authorization: DPoP <token>` plus a `DPoP` proof), signed in with the `poppy:read` scope. Discovery: `https://www.gomry.com/.well-known/poppy.json`. An organization API key or an agent credential gets `403 personal_agent_only`: it has no "me".
</Note>

Tickets are found by the account and by its **verified** email addresses, so tickets bought as a guest with the same address are included. Tickets for deleted events are left out.

## Errors

| Status | `error` | Meaning |
| - | - | - |
| 403 | `sign_in_required` | The Session is signed out. `WWW-Authenticate: DPoP error="sign_in_required"`. Sign the person in, then retry. |
| 403 | `insufficient_scope` | The Session lacks `poppy:read`. `WWW-Authenticate` names the scope. |
| 403 | `personal_agent_only` | Not a Personal Agent Protocol Session. |

## Query Parameters

<ParamField query="when" type="string" default="upcoming">
  `upcoming` (events that have not ended, soonest first), `past` (most recent first), or `all`.
</ParamField>

## Response

<ResponseField name="tickets" type="array">
  <Expandable title="Ticket object">
    <ResponseField name="ticket_id" type="string">Pass this to the transfer endpoints.</ResponseField>
    <ResponseField name="status" type="string">`valid`, `checked_in`, `pending_approval`, `invited` or `maybe`.</ResponseField>

    <ResponseField name="attendance" type="string">
      `going` (holds a ticket), `invited` (invited, has not accepted), `awaiting_approval` (the organizer has not approved yet) or `interested` (waitlist or maybe).
    </ResponseField>

    <ResponseField name="ticket_type" type="string | null">The ticket type's name.</ResponseField>
    <ResponseField name="holder" type="object">`name` and `email` on the ticket.</ResponseField>

    <ResponseField name="can_transfer" type="boolean">
      True when this account holds the ticket and it can be offered now: valid, not checked in, no transfer waiting. A ticket from a multi-ticket order can still be refused with `shared_payment`.
    </ResponseField>

    <ResponseField name="order_id" type="string | null">The order it was bought on.</ResponseField>

    <ResponseField name="event" type="object">
      `id`, `name`, `url` (the public event page), `starts_at` and `ends_at` (ISO 8601, UTC), `timezone` (IANA) and `venue` (`name`, `address`).
    </ResponseField>

    <ResponseField name="pending_transfer" type="object | null">
      A transfer waiting to be accepted: `to_email`, `to_name`, `expires_at`, `expired`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="truncated" type="boolean">
  True when the person has more tickets than one response holds (200).
</ResponseField>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.