Skip to content

Get a participant

GET/v1/event/{eventId}/participants/{contactId}

US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com

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.

Request example

Terminal window
curl --request GET \
--url 'https://public-api.sessionboard.com/v1/event/{eventId}/participants/{contactId}' \
--header 'x-access-token: <api-token>'

Try it

Authorization

Your token stays in this page. It is sent only to the region above and is never saved; it is gone when you leave or reload the page.

Path parameters
Query parameters
GET

Authorizations

  • x-access-tokenstringheader

    Organization API token. Generate from Organization Settings → API Tokens.

  • AuthorizationBearer <token>headeror

    OAuth 2.1 access token. Obtained via the OAuth PKCE flow at /oauth/token.

Send one of these. See Authentication.

Path parameters

  • eventIdintegerpathrequired

    The event ID.

  • contactIdstring<uuid>pathrequired

    The contact ID.

Query parameters

  • expandstring[]query

    Expand records with additional data.

    Possible values:

    • translated_fields — includes the translated_fields array on records when the event has language variants configured.
    • subsession_details — applies to session responses. Each subsession inside parent.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 inherit is_abstract, composition_status, and optional composition from the parent. Not required when calling GET /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 full composition object 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
    Allowed values
    "translated_fields", "subsession_details", "linked_sources", "composition"

Responses

200application/json

OK

A contact (speaker, attendee, or organizational contact) in Sessionboard.

  • idstring
  • friendly_idstring
  • full_namestring
  • first_namestring
  • last_namestring
  • emailstring
  • created_atstring
  • updated_atstring<date-time>

    When the contact last changed, from any source: an admin or portal edit, a sync, or a Public API write (create, update or bulk). Send it back as updated_at on PUT /v1/event/{eventId}/contacts/{contactId} or a bulk update for optimistic concurrency; the write returns the new value.

  • photo_urlstring

    URL of the contact's headshot. Images larger than 2 MB are delivered resized from this URL, scaled to fit within 2400 x 2400 pixels (a PNG may arrive as WebP for clients that accept it). The uploaded file is stored unchanged; for full-resolution originals use the bulk download tools in Sessionboard, such as Download Headshots (Contacts, More menu).

  • company_namestring
  • titlestring
  • aboutstring
  • phone_homestring
  • phone_mobilestring
  • address_line_1string
  • address_line_2string
  • address_citystring
  • address_statestring
  • address_postal_codestring
  • address_countrystring
  • website_urlstring
  • linkedin_urlstring
  • twitter_urlstring
  • facebook_urlstring
  • honorificstring
  • salutationstring
  • pronounsstring
  • genderstring
  • past_companiesstring
  • educational_affiliationstring
  • highest_level_of_educationstring
  • ethnicitystring
  • languagesstring
  • speaker_scorestring
  • organization_contactstring
  • speaker_feestring
  • availabilitystring
  • preferred_session_formatstring
  • annual_revenuestring
  • headcountstring
  • years_in_operationstring
  • organization_structurestring
  • industrystring
  • global_regionstring
  • audience_typestring
  • target_age_rangestring
  • topic_expertisestring
  • brandstring
  • translated_fieldsTranslatedField[]
    Show child attributes
    • idstring
    • namestring
    • typestring
    • parent_field_idstring
    • parent_field_sourcestring
    • parent_field_namestring
    • parent_field_internal_namestring
    • translated_languagestring
    • valuestring
  • custom_fieldsCustomFieldValue[]
    Show child attributes
    • idstring
    • namestring
    • valuestring | boolean | null

      The formatted field value, or null when the field is empty. Numeric field types (number, currency, percent, quantity, formula) serialize a stored zero as its formatted value (for example "0") — null means the field has no value, not that the value is zero.

      checkbox fields serialize as the strings "Yes" (checked) and "No" (explicitly unchecked); a checkbox that was never set is null. Writes take boolean true / false.

      datetime fields serialize as ISO 8601. On event custom fields (GET /v1/events?expand=custom_fields) the value is event-local time with the event's UTC offset (for example 2026-08-15T09:00:00-03:00), falling back to the raw UTC instant (2026-08-15T12:00:00.000Z) when the event has no valid timezone. On session, speaker, sponsor, and exhibitor custom fields the value is the raw UTC instant.

      date (date-only) fields serialize as M-DD-YYYY: month without a leading zero, day with one, four-digit year (for example 9-22-2026 for 22 September 2026, 3-04-2026 for 4 March 2026). This is not ISO 8601; parse it with that exact pattern.

    • typestring
    • internal_namestring
    • created_atstring
  • admin_urlstring<uri> | null

    Deep link to this entity in the Sessionboard admin UI.

  • rolesParticipantRoleAssignment[]required

    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
    • roleIdstring<uuid> | nullrequired

      The role's id — the value to pass in the roleIds filter and the id returned by GET /v1/event/{eventId}/participant-roles. null only for a standard role on an event whose roles have not been created yet (see the endpoint description).

    • roleNamestringrequired

      Display name of the role (singular), e.g. Speaker, Panelist.

    • slugstringrequired

      Stable programmatic identifier for the role within the event.

    • coreRolestringrequired

      The standard category the role maps to. Not a display label.

      Allowed values
      "speaker", "chairperson", "moderator"
    • isCustombooleanrequired

      true for a role the organizer added; false for Speaker, Chairperson and Moderator.

    • sessionIdsstring<uuid>[]required

      Ids of the sessions (including subsessions) on which the contact holds this role.

401

Unauthorized

404

Participant not found on this event

Response examples

{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"friendly_id": "SPK-42",
"full_name": "Dr. Jane Smith",
"first_name": "Jane",
"last_name": "Smith",
"email": "jane.smith@university.edu",
"created_at": "2023-11-01T10:00:00Z",
"updated_at": "2024-02-15T16:30:00Z",
"company_name": "State University",
"title": "Professor of Computer Science",
"custom_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 release notes by email

A short digest on the days something new goes live — each change with a link to its note in the release notes. No marketing, and one click to stop.

Company email addresses only. We’ll send one email to confirm it’s you. Already use Sessionboard? You can also turn this on under Community → What’s new.