curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/registrations \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/registrations"
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}/registrations', 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}/registrations",
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}/registrations"
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}/registrations")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/registrations")
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{
"data": [
{
"id": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"event_id": 7001,
"status": "confirmed",
"first_name": "Priya",
"last_name": "Raman",
"email": "priya.raman@example.org",
"company": "Northwind Health",
"job_title": "Clinical Director",
"ticket_type": {
"id": "0b9d6a3c-2e1f-4a5b-9c8d-7e6f5a4b3c2d",
"name": "Full conference"
},
"registrant_type": null,
"form": {
"id": "6c1f2d9e-3b4a-4f5e-8a7b-1c2d3e4f5a6b",
"name": "Attendee registration",
"kind": "attendee"
},
"order_id": "9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b",
"account_id": null,
"contact_id": "3a2b1c0d-9e8f-4a7b-6c5d-4e3f2a1b0c9d",
"badge_id": null,
"answers": {
"dietary_requirements": "Vegetarian"
},
"session_ids": [],
"membership": null,
"awaiting_assignment": false,
"checked_in_at": null,
"badge": {
"printed": false,
"print_count": 0,
"last_printed_at": null
},
"approval": null,
"created_at": "2026-10-02T16:21:40.000Z",
"updated_at": "2026-10-02T16:21:41.000Z"
}
],
"pagination": {
"current_page": 1,
"page_size": 50,
"total_pages": 9,
"total_results": 412
}
}List registrations
Every registration on the event, one per person, oldest first, in every status unless you filter. Each registration carries its ticket type, registrant type, form, order, answers to the form’s questions, badge printing and approval state.
Incremental sync. Pass updated_since with the time of your last sync to get
only registrations changed since then (including that instant). Each registration
carries updated_at; send the latest one you received (or the time you started the
run) as updated_since next time.
Paginated (page, page_size up to 200). Requires read:registrations (legacy
tokens with no scopes pass).
curl --request GET \
--url https://public-api.sessionboard.com/v1/event/{eventId}/registrations \
--header 'x-access-token: <api-key>'import requests
url = "https://public-api.sessionboard.com/v1/event/{eventId}/registrations"
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}/registrations', 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}/registrations",
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}/registrations"
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}/registrations")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.sessionboard.com/v1/event/{eventId}/registrations")
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{
"data": [
{
"id": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"event_id": 7001,
"status": "confirmed",
"first_name": "Priya",
"last_name": "Raman",
"email": "priya.raman@example.org",
"company": "Northwind Health",
"job_title": "Clinical Director",
"ticket_type": {
"id": "0b9d6a3c-2e1f-4a5b-9c8d-7e6f5a4b3c2d",
"name": "Full conference"
},
"registrant_type": null,
"form": {
"id": "6c1f2d9e-3b4a-4f5e-8a7b-1c2d3e4f5a6b",
"name": "Attendee registration",
"kind": "attendee"
},
"order_id": "9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b",
"account_id": null,
"contact_id": "3a2b1c0d-9e8f-4a7b-6c5d-4e3f2a1b0c9d",
"badge_id": null,
"answers": {
"dietary_requirements": "Vegetarian"
},
"session_ids": [],
"membership": null,
"awaiting_assignment": false,
"checked_in_at": null,
"badge": {
"printed": false,
"print_count": 0,
"last_printed_at": null
},
"approval": null,
"created_at": "2026-10-02T16:21:40.000Z",
"updated_at": "2026-10-02T16:21:41.000Z"
}
],
"pagination": {
"current_page": 1,
"page_size": 50,
"total_pages": 9,
"total_results": 412
}
}Authorizations
Organization API token. Generate from Organization Settings → API Tokens.
Path Parameters
Event ID
Query Parameters
Page number, from 1. A value that is not a positive integer is read as 1.
x >= 1Results per page. Values above 200 are read as 200; a value that is not a positive integer is read as 50.
1 <= x <= 200Only these statuses, comma-separated: incomplete, pending_approval,
waitlisted, confirmed, checked_in, canceled, transferred, declined,
no_show. Any other value answers 400.
Only registrations placed through this form.
Only registrations holding this ticket type.
Only registrations of this registrant type (for example Member).
Only registrations attached to this exhibitor or sponsor account.
Only registrations with this email (case-insensitive, exact match).
Find attendees by a fragment of their name (first, last or full), email or company,
case-insensitive (for example ada love).
100Only registrations changed at or after this time (ISO 8601). A value that is not a date is ignored.
Response
OK
Show child attributes
Show child attributes
Pagination metadata returned by the event-settings GET lists (tags, tracks, levels, formats, rooms, languages, statuses). Same numbers as Pagination, snake_case keys — these endpoints are served by a different layer, and the casing is longstanding.
Show child attributes
Show child attributes

