# Listing attendees

To list all event attendees in your event environment you may use the `event.person.find` endpoint with multiple filters and pagination. The required query attributes for this endpoint are `tokenID`, `eventID` and `selection`, and we have several optional attributes for filtering and pagination.

To retrieve the full profile of the attendee (including custom fields), you must send the `fullProfile` query attribute with value **1**.

#### `Selection` query attribute

The `selection` query attribute accepts the following values:

```json
{
    "all": "All",
    "admin": "Complete event admin power",
    "not-admin": "Standard event attendees",
    "speakers": "Linked speakers",
    "permission": "Specific event power",
    "collector": "Lead retrievals collectors",
    "custom-list": "Custom list",
    "tags": "Tags",
    "with-email": "Emails sent",
    "without-email": "Emails not sent",
    "approved": "Enrollment approved",
    "denied": "Enrollment denied",
    "nfc-synced": "NFC synced",
    "nfc-not-synced": "NFC not synced",
    "printed": "Badge printed",
    "not-printed": "Badge not printed",
    "accepted-rsvp": "RSVP accepted",
    "declined-rsvp": "RSVP declined",
    "waiting-rsvp": "RSVP waiting",
    "downloaded": "App downloaded",
    "not-downloaded": "App not downloaded",
    "incomplete-profile": "Missing role, company or image",
    "present": "Attendee present in-person",
    "not-present": "Attendee absent in-person",
    "virtual": "Attendee present online",
    "not-virtual": "Attendee absent online",
    "now-virtual": "Attendee present online right now",
    "public": "Attendee public for chats",
    "private": "Attendee private for chats",
    "favorited": "Attendee favorited by personID"
}
```

The `selection` query attribute allows *stacking* (AND operation) by separating values with a pipe. Example: `selection=printed|present`. It also allows complex stacking for a certain key, like `tags`. Example: `selection=printed|present|tags:29124,4255`.

#### Key-value filtering

We also have the following optional query attributes as filters:

```json
{
    "name": "Attendee name",
    "username": "Attendee username",
    "email": "Attendee email",
    "role": "Attendee job title",
    "company": "Attendee company",
    "assistantEmail":  "Assistant email",
    "updatedBeforeDate": "Updated before (unix timestamp)",
    "updatedAfterDate": "Updated after (unix timestamp)",
    "ticket":  "Ticket",
}
```

You can also use `query` and `queryKey` instead of using the field name as the query attribute directly if you prefer.

You can also search by custom fields using the `feedback_$feedbackID` format. Example:

```json
{
    "feedback_1234": "Query for custom field 1234"
}
```

#### Pagination

To paginate you can use `limit` and `offset` query attributes and to get the total amount of events listed in your account (used to build pagination UI and calculate the amount of pages) you should send the `paginated` query attribute with value `1`.

#### Ordering

To order the events you can use the following query attributes: `order` and `orderOrientation`. The `orderOrientation` attribute accepts `ASC` (ascending) and `DESC` (descending) as values\
and the `order` query attribute accepts the following values:

```json
[
    "level",
    "memberID",
    "name",
    "firstName",
    "lastName",
    "username",
    "role",
    "company",
    "email",
    "assistantEmail",
    "private",
    "rsvp",
    "present",
    "origin",
    "ticket",
    "language",
    "enrollmentDate",
    "updatedDate",
    "printed",
    "device",
    "downloaded",
    "rand"
]
```

#### Example

Here is an example of this API call:

```sh
curl --request GET \
     --url 'https://api.inevent.com/?action=event.person.find&tokenID=YOUR_TOKEN_HERE&eventID=YOUR_EVENT_ID_HERE&limit=100&offset=0&paginated=1' \
     --header 'Accept: application/json'
```

#### Spreadsheet reports

To generate a spreadsheet report out of that API call, you can send the `format` attribute with the value `excel-daemon`. Excel spreadsheets takes a while to generate and they will show up in your `Report center`, but you can also retrieve them using the `download.find` endpoint.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.inevent.com/attendee-api/listing-attendees.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
