curl --request POST \
--url https://public-api.sessionboard.com/v1/event/{eventId}/participants \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"filters": {
"roleIds": [
"4efeb845-050f-4002-9496-cb586cdf10f2",
"52d60237-19db-4bda-a116-8b9fcb6750e9"
],
"status": "accepted"
}
}
'{
"results": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"friendly_id": "SPK-42",
"full_name": "Dr. Jane Smith",
"first_name": "Jane",
"last_name": "Smith",
"email": "[email protected]",
"created_at": "2023-11-01T10:00:00Z",
"updated_at": "2024-02-15T16:30:00Z",
"photo_url": "https://cdn.sessionboard.com/photos/jane-smith.jpg",
"company_name": "State University",
"title": "Professor of Computer Science",
"about": "Dr. Smith is a leading researcher in distributed systems.",
"address_city": "Austin",
"address_state": "TX",
"address_country": "US",
"honorific": "Dr.",
"pronouns": "she/her",
"topic_expertise": "Distributed Systems, Cloud Computing",
"custom_fields": [],
"translated_fields": [],
"roles": [
{
"roleId": "84bd12e5-d5ec-4c64-a604-4051e06c8dc2",
"roleName": "Speaker",
"slug": "speaker",
"coreRole": "speaker",
"isCustom": false,
"sessionIds": [
"04efb360-2b15-44db-b639-4035fae2772c"
]
},
{
"roleId": "4efeb845-050f-4002-9496-cb586cdf10f2",
"roleName": "Moderator",
"slug": "moderator",
"coreRole": "moderator",
"isCustom": false,
"sessionIds": [
"26e465fc-1fb1-4c04-af52-f4d6314dfca4"
]
},
{
"roleId": "52d60237-19db-4bda-a116-8b9fcb6750e9",
"roleName": "Panelist",
"slug": "panelist",
"coreRole": "speaker",
"isCustom": true,
"sessionIds": [
"140b8e82-41ca-444e-82ab-f7dd1011e95b",
"2c198cce-adff-4fb2-81e1-319b601d564b"
]
}
]
}
],
"pagination": {
"currentPage": 1,
"pageSize": 25,
"totalPages": 4,
"totalResults": 97
}
}Search participants
Search every contact assigned to at least one session on the event in
any participant role — the standard roles (speaker, chairperson,
moderator) and any custom role configured for the event (Panelist,
Coach, Author, …). This is the superset of
POST /v1/event/{eventId}/speakers, which matches speakers only.
Each contact is returned once, however many sessions or roles it
holds, with a roles array listing every role it has on the event and
the session ids where it holds each one. Every other field is the same
Contact shape POST /speakers returns, in the same order, with
roles appended last. roles always describes the contact’s full
set of roles on the event — it is not narrowed by the request filters,
so a search filtered to the Moderator role still shows that a result is
also a Speaker elsewhere on the program.
Filters. Every Search Speakers filter is accepted and behaves the
same: createdAt, updatedAt, status (the session’s status),
trackIds, levelIds, formatIds, languageIds, tagIds, plus
sort and expand. Categorization filters are evaluated against the
top-level session, so a participant on a subsession matches when
the subsession’s parent satisfies the filter. Each array filter needs
at least one id — [] is a 400 naming the field; omit the property
to apply no filter.
Three filters are specific to this endpoint:
roleIds— return only participants holding at least one of the given roles, standard or custom. Get the ids fromGET /v1/event/{eventId}/participant-roles.roleSlugs— the same, by role slug (speaker,chairperson,moderator, or a custom role’s slug). Use this to get every speaker without resolving ids per event, or on older events where roles haveroleId: null.email— exact, case-insensitive match on the contact’s email. An unknown address returns an emptyresultsarray withtotalResults: 0, not an error. For a single-record lookup that answers404instead, useGET /v1/event/{eventId}/participants?email=.
Roles on older events. Roles are stored per event. An event that
has never been opened in the Sessions editor may not have its standard
roles created yet; its participants are still returned, but a
standard role on such an event has roleId: null (with roleName,
slug and coreRole filled in) and cannot be matched by roleIds
until the roles exist — filter by roleSlugs instead.
GET .../participant-roles returns an empty list for such an event.
curl --request POST \
--url https://public-api.sessionboard.com/v1/event/{eventId}/participants \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"filters": {
"roleIds": [
"4efeb845-050f-4002-9496-cb586cdf10f2",
"52d60237-19db-4bda-a116-8b9fcb6750e9"
],
"status": "accepted"
}
}
'{
"results": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"friendly_id": "SPK-42",
"full_name": "Dr. Jane Smith",
"first_name": "Jane",
"last_name": "Smith",
"email": "[email protected]",
"created_at": "2023-11-01T10:00:00Z",
"updated_at": "2024-02-15T16:30:00Z",
"photo_url": "https://cdn.sessionboard.com/photos/jane-smith.jpg",
"company_name": "State University",
"title": "Professor of Computer Science",
"about": "Dr. Smith is a leading researcher in distributed systems.",
"address_city": "Austin",
"address_state": "TX",
"address_country": "US",
"honorific": "Dr.",
"pronouns": "she/her",
"topic_expertise": "Distributed Systems, Cloud Computing",
"custom_fields": [],
"translated_fields": [],
"roles": [
{
"roleId": "84bd12e5-d5ec-4c64-a604-4051e06c8dc2",
"roleName": "Speaker",
"slug": "speaker",
"coreRole": "speaker",
"isCustom": false,
"sessionIds": [
"04efb360-2b15-44db-b639-4035fae2772c"
]
},
{
"roleId": "4efeb845-050f-4002-9496-cb586cdf10f2",
"roleName": "Moderator",
"slug": "moderator",
"coreRole": "moderator",
"isCustom": false,
"sessionIds": [
"26e465fc-1fb1-4c04-af52-f4d6314dfca4"
]
},
{
"roleId": "52d60237-19db-4bda-a116-8b9fcb6750e9",
"roleName": "Panelist",
"slug": "panelist",
"coreRole": "speaker",
"isCustom": true,
"sessionIds": [
"140b8e82-41ca-444e-82ab-f7dd1011e95b",
"2c198cce-adff-4fb2-81e1-319b601d564b"
]
}
]
}
],
"pagination": {
"currentPage": 1,
"pageSize": 25,
"totalPages": 4,
"totalResults": 97
}
}Authorizations
Organization API token. Generate from Organization Settings → API Tokens.
Path Parameters
The event ID.
Query Parameters
Page number for pagination.
1 <= x <= 999Number of results per page.
The event-settings list endpoints (tags, tracks, levels, formats,
rooms, languages, statuses) also accept the older spelling
page_size, and used to accept only that — a request sending
pageSize silently got the default 25. Both now work, pageSize
wins when both are sent, and on these endpoints a value outside
1–100 is clamped rather than rejected. Everywhere else pageSize
is the only spelling.
1 <= x <= 100Body
Search request body for participants. Every SpeakerSearchBody filter
is accepted with the same semantics (categorization filters match the
participant's top-level session), plus roleIds, roleSlugs and email.

