curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/participants/{contactId} \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/participants/{contactId}"
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/{contactId}', 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/{contactId}",
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/{contactId}"
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/{contactId}")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/participants/{contactId}")
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
Retrieve a single participant by contact ID, with the roles it holds
on the event. 404 when the contact is not on the event, or is on the
event but holds no session role — a contact returned by
GET /v1/event/{eventId}/contacts/{contactId} is not necessarily a
participant.
curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/participants/{contactId} \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/participants/{contactId}"
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/{contactId}', 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/{contactId}",
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/{contactId}"
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/{contactId}")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/participants/{contactId}")
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.
Query Parameters
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.

