---
title: Attendees API
description: Create, update, and check in attendees over API v2.
sidebar:
  order: 23
---

All attendee routes are nested under an event.

## List

```
GET /events/:event_id/attendees?page=1&per_page=25
```

Each attendee includes `rsvp_status`, `checkin_status`, `qr_code`, `phone` (E.164), `company`, `registration_type_id`, and `fields` (answers for known attendee fields).

## Create

```
POST /events/:event_id/attendees
```

```json
{
  "item": {
    "first_name": "Ada",
    "last_name": "Lovelace",
    "email": "ada@example.com",
    "phone": "+6591234567",
    "job_title": "Mathematician",
    "company": "Analytical Engines",
    "registration_type_id": 1,
    "fields": [
      { "attendee_field_id": 10, "value": "Vegetarian" }
    ]
  }
}
```

`first_name` is required. `201` on success.

## Update

```
PATCH /events/:event_id/attendees/:id
```

Same `item` wrapper. You can set `rsvp_status` to `unconfirmed`, `confirmed`, `declined`, `waitlisted`, or `pending_approval`.

## Check-in

```
POST   /events/:event_id/attendees/:id/check_in   # check in
PATCH  /events/:event_id/attendees/:id/check_in   # check out
DELETE /events/:event_id/attendees/:id/check_in   # undo
```

Optional body:

```json
{ "item": { "session_id": 42 } }
```

Omit `session_id` for door check-in.

## Fields

Attendee fields are the form questions for that event.

```
GET    /events/:event_id/attendee_fields
POST   /events/:event_id/attendee_fields
PATCH  /events/:event_id/attendee_fields/:id
DELETE /events/:event_id/attendee_fields/:id
```

Create requires `label` and `type`. Types match the form builder (e.g. `short_text`, `dropdown`, `contact_phone`).
