curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/participants \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/participants"
headers = {"x-access-token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-access-token': '<api-key>'}};
fetch('https://public-api.sessionboard.com/v1/event/{eventId}/participants', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.sessionboard.com/v1/event/{eventId}/participants",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public-api.sessionboard.com/v1/event/{eventId}/participants"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-access-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api.sessionboard.com/v1/event/{eventId}/participants")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/participants")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-access-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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"
]
}
]
}Get a participant by email
Look up one participant by email address. The match is exact and
case-insensitive. Returns the participant, or 404 when no contact
with that address holds a session role on the event.
Search on this API is a POST, so a GET on the collection path is
free for the lookup — no /by-email sub-path is needed. email is
required; a bare GET /participants is a 400, not an unpaginated
list.
Contacts are not unique by email. If more than one contact on the
event shares the address, the earliest-created one is returned; use
POST /v1/event/{eventId}/participants with the email filter to see
them all.
curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/participants \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/participants"
headers = {"x-access-token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-access-token': '<api-key>'}};
fetch('https://public-api.sessionboard.com/v1/event/{eventId}/participants', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.sessionboard.com/v1/event/{eventId}/participants",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public-api.sessionboard.com/v1/event/{eventId}/participants"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-access-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api.sessionboard.com/v1/event/{eventId}/participants")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/participants")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-access-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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"
]
}
]
}Authorizations
Organization API token. Generate from Organization Settings → API Tokens.
Path Parameters
The event ID.
Query Parameters
The contact's email address. Matched exactly, ignoring case.
Expand records with additional data.
Possible values:
translated_fields— includes thetranslated_fieldsarray on records when the event has language variants configured.subsession_details— applies to session responses. Each subsession insideparent.subsessions[]is returned with full parent-session field parity (status,custom_status,custom_fields,chairpersons,moderators,sponsors,exhibitors,tags,language,track,level,room,is_public,external_url,client_session_id,ceu_credits,capacity,source) instead of the default minimal shape. Subsessions inheritis_abstract,composition_status, and optionalcompositionfrom the parent. Not required when callingGET /v1/event/{eventId}/sessions/{sessionId}with a subsession UUID — that endpoint always returns the full shape at the top level.linked_sources— include sessions that are linked as composition sources (excluded from list/search results by default).composition— attach a fullcompositionobject with target and source details on each returned session. Recommended for single-session GET; use cautiously on broad searches.
A single value can be passed directly, and multiple values repeat the parameter — all of these are accepted:
?expand=composition?expand=translated_fields&expand=composition?expand[]=translated_fields&expand[]=composition
translated_fields, subsession_details, linked_sources, composition Response
OK
A contact holding at least one session role on the event. Every
Contact field is present with the same values POST /speakers
returns; roles is appended after them.
Every role the contact holds on the event and the sessions it holds each one on. Always the contact's complete set — not narrowed by the request filters. Ordered by the role's configured sort order.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Deep link to this entity in the Sessionboard admin UI.

