> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.sessionboard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 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).




## OpenAPI

````yaml /api-reference/openapi.yaml get /v1/event/{eventId}/registrations
openapi: 3.1.0
info:
  title: Sessionboard Public API
  version: '1.0'
  description: >-
    REST API for managing sessions, speakers, contacts, sponsors, exhibitors,
    and event data on the Sessionboard platform.
  contact:
    name: Sessionboard Support
    email: support@sessionboard.com
  termsOfService: https://www.sessionboard.com/legal/terms-of-service
servers:
  - url: https://public-api.sessionboard.com
    description: US Region
  - url: https://public-api-eu.sessionboard.com
    description: EU Region
security:
  - ApiKey: []
  - BearerToken: []
tags:
  - name: Events
    description: Manage events on the platform.
  - name: Sessions
    description: Search and retrieve sessions within an event.
  - name: Session Writes
    description: >-
      Create, update, delete, and restore sessions. Requires the
      `write:sessions` scope.
  - name: Contact Writes
    description: >-
      Create, update, delete, and restore contacts. Requires the
      `write:contacts` scope.
  - name: Exhibitor Writes
    description: >-
      Create, update, delete, and restore exhibitors. Requires the
      `write:exhibitors` scope.
  - name: Sponsor Writes
    description: >-
      Create, update, delete, and restore sponsors. Requires the
      `write:sponsors` scope.
  - name: Field Writes
    description: >-
      Create, update, and delete custom fields. Requires the `write:fields`
      scope.
  - name: Speakers
    description: Search and retrieve speakers within an event.
  - name: Participants
    description: |
      Search and retrieve every contact holding a session role on an event —
      speakers, chairpersons, moderators and custom roles — with the roles
      each one holds, and list the event's participant roles.
  - name: Contacts
    description: Search and retrieve contacts at the organization or event level.
  - name: Sponsors
    description: Search and retrieve sponsors within an event.
  - name: Exhibitors
    description: Search and retrieve exhibitors within an event.
  - name: Event Settings
    description: >-
      Retrieve event configuration such as fields, tags, tracks, rooms, formats,
      levels, languages, and session statuses.
  - name: GDPR
    description: Manage GDPR data access and erasure requests.
  - name: Insights
    description: >-
      Query event data using SbQL, generate queries with AI, and manage
      dashboards.
  - name: Ask
    description: >-
      Ask a natural-language question about one event and get a cited answer.
      Requires the `read:ask` scope, granted explicitly.
  - name: Metadata Writes
    description: >-
      Create, update, and delete session metadata (rooms, tracks, tags, formats,
      levels, languages, statuses). Requires the `write:metadata` scope.
  - name: Agenda Planning
    description: >-
      Manage agenda drafts, draft sessions, scheduling rules, and evaluation
      personas. Requires the `write:events` scope.
  - name: Dashboards & Widgets
    description: >-
      Create, read, update, and delete dashboards and widgets at the event or
      organization level. Requires `write:events` scope for writes.
  - name: Reports & Queries
    description: >-
      Create, read, update, delete, and run saved SbQL queries/reports at the
      event or organization level. Requires `write:events` scope for writes.
  - name: Transcriptions
    description: >-
      Transcript text on sessions — fragments, summaries, insights, and
      translations. Requires `read:transcriptions` / `write:transcriptions`
      scopes.
  - name: Session Recordings
    description: >-
      Session audio files for recording archives (live capture or imported
      audio). Requires `read:transcriptions` / `write:transcriptions` scopes.
  - name: Media
    description: >-
      Upload video or audio files for automatic transcription. Requires
      `read:media` / `write:media` scopes.
  - name: Session Files
    description: >
      Documents attached to sessions (PDFs, PowerPoint, Word, images, and
      similar).

      Simple upload: `POST .../files/upload` (multipart, max 50 MB).

      Direct-to-storage: create → PUT → complete (max 500 MB).

      Requires `read:sessions` / `write:sessions` scopes.

      See the [Uploading session files](/guides/uploading-session-files) guide.
  - name: OAuth
    description: >-
      OAuth 2.1 endpoints for AI client authorization (Claude, ChatGPT). Mounted
      at `/oauth/` (not `/v1/`).
  - name: Log Export
    description: >
      Pull your organization's API request, security and audit logs into a SIEM

      such as Splunk, Microsoft Sentinel or Elastic. Requires a dedicated API
      token

      with the `read:audit_logs` scope, which can call nothing else.

      See the [Exporting logs to a SIEM](/guides/exporting-logs-to-a-siem)
      guide.
  - name: Awards
    description: >-
      Read and manage Awards programs and their categories, rounds, promo codes,
      submissions and reviews. Organization-level: paths start at
      `/v1/organization/{orgId}/awards`. Requires `read:awards` / `write:awards`
      scopes.
  - name: Registration
    description: >
      Registration inside Sessionboard: registration forms, ticket types,
      registrations,

      orders, attendees and check-ins for one event. Requires the preview scopes

      `read:registrations` / `write:registrations`, which a token or OAuth
      client gets only

      when they are named explicitly (not by default, and not listed in
      `scopes_supported`).

      The event must have Registration turned on (Early Access); otherwise every
      endpoint

      answers `403 FORBIDDEN`.

      See the [Registration and Expo](/guides/registration-and-expo) guide.
  - name: Expo
    description: >
      Expo floor-map booths and sponsorship inventory for one event. Requires
      the preview

      scopes `read:expo` / `write:expo`, which a token or OAuth client gets only
      when they are

      named explicitly (not by default, and not listed in `scopes_supported`).
      The event must

      have Expo turned on (Early Access); otherwise every endpoint answers `403
      FORBIDDEN`.

      See the [Registration and Expo](/guides/registration-and-expo) guide.
paths:
  /v1/event/{eventId}/registrations:
    get:
      tags:
        - Registration
      summary: List registrations
      description: >
        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).
      operationId: list-registrations
      parameters:
        - $ref: '#/components/parameters/EventId'
        - $ref: '#/components/parameters/RegistrationPage'
        - $ref: '#/components/parameters/RegistrationPageSize'
        - name: status
          in: query
          required: false
          schema:
            type: string
          description: >
            Only these statuses, comma-separated: `incomplete`,
            `pending_approval`,

            `waitlisted`, `confirmed`, `checked_in`, `canceled`, `transferred`,
            `declined`,

            `no_show`. Any other value answers `400`.
        - name: form_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: Only registrations placed through this form.
        - name: ticket_type_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: Only registrations holding this ticket type.
        - name: registrant_type_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: Only registrations of this registrant type (for example Member).
        - name: account_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: Only registrations attached to this exhibitor or sponsor account.
        - name: email
          in: query
          required: false
          schema:
            type: string
          description: Only registrations with this email (case-insensitive, exact match).
        - name: updated_since
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: >
            Only registrations changed at or after this time (ISO 8601). A value
            that is not

            a date is ignored.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Registration'
                  pagination:
                    $ref: '#/components/schemas/ListPagination'
              example:
                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
        '400':
          description: '`VALIDATION_ERROR` — `status` names a value outside the list.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationApiError'
              example:
                error: VALIDATION_ERROR
                message: >-
                  'status' must be a comma list of incomplete, pending_approval,
                  waitlisted, confirmed, checked_in, canceled, transferred,
                  declined, no_show
        '401':
          $ref: '#/components/responses/RegistrationUnauthorized'
        '403':
          $ref: '#/components/responses/RegistrationForbidden'
        '429':
          $ref: '#/components/responses/RegistrationTooManyRequests'
components:
  parameters:
    EventId:
      name: eventId
      in: path
      required: true
      schema:
        type: integer
      description: Event ID
    RegistrationPage:
      name: page
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        default: 1
      description: >-
        Page number, from 1. A value that is not a positive integer is read as
        `1`.
    RegistrationPageSize:
      name: page_size
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 200
        default: 50
      description: >-
        Results per page. Values above 200 are read as 200; a value that is not
        a positive integer is read as 50.
  schemas:
    Registration:
      type: object
      description: One person's registration for the event.
      properties:
        id:
          type: string
          format: uuid
        event_id:
          type: integer
        status:
          type: string
          enum:
            - incomplete
            - pending_approval
            - waitlisted
            - confirmed
            - checked_in
            - canceled
            - transferred
            - declined
            - no_show
        first_name:
          type:
            - string
            - 'null'
        last_name:
          type:
            - string
            - 'null'
        email:
          type: string
        company:
          type:
            - string
            - 'null'
        job_title:
          type:
            - string
            - 'null'
        ticket_type:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        registrant_type:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        form:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
            kind:
              type: string
        order_id:
          type:
            - string
            - 'null'
          format: uuid
        account_id:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            The exhibitor or sponsor account the person registered under (booth
            staff).
        contact_id:
          type:
            - string
            - 'null'
          description: The person's contact in Sessionboard.
        badge_id:
          type:
            - string
            - 'null'
        answers:
          type: object
          additionalProperties: true
          description: >-
            Answers to the form's questions beyond name, email, company and job
            title, keyed by the question's field `internal_name`.
        session_ids:
          type: array
          items:
            type: string
          description: Sessions the person reserved or paid for.
        membership:
          type:
            - object
            - 'null'
          additionalProperties: true
          description: >-
            The membership check made at registration, when the event verifies
            membership.
        awaiting_assignment:
          type: boolean
          description: >-
            `true` for a seat bought by a group purchaser and not yet assigned
            to a person.
        checked_in_at:
          type:
            - string
            - 'null'
          format: date-time
        badge:
          type: object
          properties:
            printed:
              type: boolean
            print_count:
              type: integer
            last_printed_at:
              type:
                - string
                - 'null'
              format: date-time
        approval:
          type:
            - object
            - 'null'
          description: >-
            The approval request for this registration, when the event's
            approval workflow opened one.
          properties:
            id:
              type: string
            status:
              type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
          description: >-
            When the registration last changed. `updated_since` on List
            registrations filters on it.
    ListPagination:
      type: object
      description: >-
        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.
      properties:
        current_page:
          type: integer
          examples:
            - 1
        page_size:
          type: integer
          examples:
            - 25
        total_pages:
          type: integer
          examples:
            - 4
        total_results:
          type: integer
          examples:
            - 97
    RegistrationApiError:
      type: object
      description: Error body of the Registration and Expo endpoints.
      required:
        - error
        - message
      properties:
        error:
          type: string
          enum:
            - VALIDATION_ERROR
            - NOT_FOUND
            - FORBIDDEN
            - CONFLICT
            - SCOPE_REQUIRED
            - EVENT_NOT_ALLOWED
            - EVENT_ARCHIVED
            - INTERNAL_ERROR
        message:
          type: string
        details:
          type: object
          description: Present when there is a machine-readable reason.
          properties:
            reason:
              type: string
              description: >
                Why the request was refused, for example `duplicate`,
                `sold_out`, `too_many`,

                `ticket_unavailable`, `not_on_sale`,
                `registrant_type_unavailable`,

                `answers_invalid`, `discount_invalid`, `wrong_status`,
                `account_required` or

                `booth_not_found`.
            status:
              type: string
              description: >-
                For `wrong_status` on Check someone in, the registration's
                current status.
            errors:
              type: object
              additionalProperties: true
              description: >-
                More detail for some reasons — the email for `duplicate`, the
                `ticket_type_id` for `sold_out`, the problems per answer for
                `answers_invalid`.
  responses:
    RegistrationUnauthorized:
      description: >-
        Missing, invalid or expired token, or the event does not belong to your
        organization.
    RegistrationForbidden:
      description: >
        - `SCOPE_REQUIRED` — the token lacks the scope (`read:registrations` for
        reads, `write:registrations` for writes). A write scope does not grant
        reads, and legacy tokens with no scopes cannot write.

        - `EVENT_NOT_ALLOWED` — the event is outside the token's event
        allow-list.

        - `EVENT_ARCHIVED` — the event is archived.

        - `FORBIDDEN` — Registration is not turned on for this event.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RegistrationApiError'
          examples:
            feature_off:
              summary: Registration is off for the event
              value:
                error: FORBIDDEN
                message: Registration is not enabled for this event
            scope_required:
              summary: Token lacks the write scope
              value:
                error: SCOPE_REQUIRED
                message: This operation requires the 'write:registrations' scope.
    RegistrationTooManyRequests:
      description: |
        The token's request limit (100 requests per 15 minutes per bucket — see
        [Rate Limiting](/rate-limiting)). Wait `Retry-After` seconds.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-access-token
      description: >-
        Organization API token. Generate from Organization Settings → API
        Tokens.
    BearerToken:
      type: http
      scheme: bearer
      description: >-
        OAuth 2.1 access token. Obtained via the OAuth PKCE flow at
        `/oauth/token`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.