---
title: "List ticket holders"
method: GET
path: "/attendees"
tags: ["Customers"]
---

# List ticket holders

`GET /attendees`

## Request

- Base URL: `https://www.raceentry.com/restapi/v1`
- URL: `https://www.raceentry.com/restapi/v1/attendees`
- Auth: OAuth 2
  - Authorization code: `/oauth2/authorize`
  - Token URL: `/oauth2/token`

Ticket groups (ticket holders) for completed orders in an event year, newest
first by order date. Intended for CRM sync as the "New Attendee" trigger.

Required permissions: Sales Rep, Director, Reports, Attendees, or Timing.

## Query parameters

- `event_id` integer, required
- `year` string
- `since` string, date-time
- `sort` 'checked_in'
- `checked_in` boolean
- `page` integer
- `per_page` integer

## Response `200`

Paginated attendee list

- object
  - `page` integer, required
  - `per_page` integer, required
  - `count` integer, required: Number of records in this page
  - `next_page` integer, nullable, required: Next page number, or null when on the last page
  - `data` Attendee[], required
    - `id` integer, required: Ticket group id
    - `name` string, nullable: Ticket holder name (as entered at ticket selection)
    - `email` string, email, nullable
    - `phone` string, nullable: Ticket holder's SMS / phone number
    - `status` string: Ticket group status: original, print_only, forward_pending, forward_claimed
    - `order_id` integer, required
    - `billing_name` string, nullable
    - `billing_email` string, email, nullable
    - `order_date` string, date-time, required
    - `tickets` AttendeeTicket[], required: Individual tickets in this group, each with seat and event time details
      - `id` integer, required
      - `event_time_name` string, required: Name of the event time (show/performance) this ticket is for
      - `event_time_start` string, date-time, required: Start datetime of the event time
      - `section_name` string, nullable: Venue section name, or null for general admission
      - `row_name` string, nullable: Row within the section, or null for general admission
      - `seat_name` string, nullable: Specific seat label, or null for general admission
      - `price_label` string, nullable: Price tier label (e.g. General Admission, VIP)
      - `checked_in_at` string, date-time, nullable: Time of first ticket scan (check-in), or null if not yet scanned.

## Other responses

- `400`: Missing or invalid query parameter
- `401`: Missing, invalid, or expired bearer token
- `403`: Token not scoped to the event, or insufficient web permission
- `404`: Event, event year, or record not found

---

[API](https://skmtc.dev/raceentry/apis/rest-api-v1.md) - [All operations](https://skmtc.dev/raceentry/apis/rest-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/raceentry/apis/rest-api-v1/revisions/ee7bc17021a6?raw)
