AttendBeacon
Open the workspace

API reference

Programme

Sessions, rooms, tracks and speakers.

List sessions

GET/events/{eventId}/sessions

Lists an event's sessions, oldest change first, each in UTC and in the venue's local time, with its room, track and speakers.

Scopes
program:read

    Parameters

    path

    • eventIdstring (uuid)required

      The event's id.

    query

    • cursorstring

      Where the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.

    • limitinteger (int32)

      How many on a page, up to 500.

      Default: 100

    • updatedSincestring (date-time)

      Only what changed at or after this moment, in UTC unless it says otherwise. Pass the newest updatedUtc your last sync saw.

    Answers

    • 200 A page of sessions. SessionList
      Fields
      • dataSession[]

        The items of this page.

        Show the fields
        • sessionIdstring (uuid)

          The session's id.

        • eventIdstring (uuid)

          The event's id.

        • titlestring

          Its title.

        • summarystring or null

          What it is about, in Markdown.

        • kindstring

          Talk, keynote, workshop, panel, break, meal, networking or other.

          One of: talk, keynote, workshop, panel, break, meal, networking, other

        • roomIdstring (uuid) or null

          Its room.

        • trackIdstring (uuid) or null

          Its track.

        • startsUtcstring (date-time)

          When it starts, in UTC.

        • endsUtcstring (date-time)

          When it ends, in UTC.

        • startsLocalstring

          When it starts, in the venue's time: what the agenda shows.

        • endsLocalstring

          When it ends, in the venue's time.

        • timeZonestring

          The venue's time zone.

        • minutesinteger (int32)

          How long it is.

        • capacityinteger (int32) or null

          Seats, when fewer than the room's.

        • languagestring or null

          The language it is given in.

        • joinProviderstring or null

          For an online session, which service it streams on: zoom, teams, youtube and so on. Never the link.

        • speakerIdsstring (uuid)[]

          Its speakers, in order.

        • updatedUtcstring (date-time) or null

          When it last changed, in UTC.

      • nextCursorstring or null

        The cursor for the next page; null on the last page. Pass it as cursor, with the same filters.

      • hasMoreboolean

        Whether there is another page.

    • 400 invalidCursor, invalidUpdatedSince, invalidRequest.
    • 401 invalidKey, keyExpired, keyRevoked.
    • 403 missingScope.
    • 404 eventNotFound.
    • 429 rateLimited.

    Refusals

    invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound invalidCursor invalidUpdatedSince invalidRequest

    Request

    curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions?limit=2" \
      -H "Authorization: Bearer $ATTENDBEACON_KEY"

    200 Example answer

    JSON
    {
      "data": [
        {
          "sessionId": "b3ac0004-0000-4000-8000-000000000000",
          "eventId": "b3ac0000-0000-4000-8000-000000000001",
          "title": "Registration and coffee",
          "summary": null,
          "kind": "other",
          "roomId": null,
          "trackId": null,
          "startsUtc": "2026-11-12T07:30:00.000Z",
          "endsUtc": "2026-11-12T08:30:00.000Z",
          "startsLocal": "2026-11-12T08:30",
          "endsLocal": "2026-11-12T09:30",
          "timeZone": "Europe/Amsterdam",
          "minutes": 60,
          "capacity": null,
          "language": null,
          "joinProvider": null,
          "speakerIds": [],
          "updatedUtc": "2026-10-14T21:40:48.084Z"
        },
        {
          "sessionId": "b3ac0004-0000-4000-8000-000000000001",
          "eventId": "b3ac0000-0000-4000-8000-000000000001",
          "title": "Opening keynote: software that finds its way",
          "summary": "Opening keynote: software that finds its way. What worked, what did not, and what to try on Monday.",
          "kind": "keynote",
          "roomId": "b3ac0001-0000-4000-8000-000000000000",
          "trackId": null,
          "startsUtc": "2026-11-12T08:30:00.000Z",
          "endsUtc": "2026-11-12T09:15:00.000Z",
          "startsLocal": "2026-11-12T09:30",
          "endsLocal": "2026-11-12T10:15",
          "timeZone": "Europe/Amsterdam",
          "minutes": 45,
          "capacity": null,
          "language": null,
          "joinProvider": null,
          "speakerIds": [
            "b3ac0003-0000-4000-8000-000000000009"
          ],
          "updatedUtc": "2026-10-14T21:40:48.086Z"
        }
      ],
      "nextCursor": "YzE6MDYzOTI3NjEwODQ4MDg2MDAwMHxiM2FjMDAwNDAwMDA0MDAwODAwMDAwMDAwMDAwMDAwMQ",
      "hasMore": true
    }
    400 invalidCursor, invalidUpdatedSince, invalidRequest.
    JSON
    {
      "type": "https://attendbeacon.com/developers/errors#invalidCursor",
      "title": "The cursor is not valid",
      "status": 400,
      "detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
      "instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions",
      "code": "invalidCursor",
      "traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
      "error": "Pass nextCursor exactly as a list returned it, with the same filters."
    }

    Add a session Changes data

    POST/events/{eventId}/sessions

    Adds a session to the agenda by the agenda's rules: a room holds one session at a time unless allowClash is set, and the room, track and speakers are the event's own. When the event is published attendees see it at once.

    Scopes
    program:write
    • Send an Idempotency-Key to make retries safe. →

    Parameters

    path

    • eventIdstring (uuid)required

      The event's id.

    header

    • Idempotency-Keystring

      A key of your own, such as a UUID, so a retry after a lost connection is answered with the first answer instead of doing it twice. Kept 24 hours.

    Body NewSession

    The session.

    • titlestringrequired

      Its title, at most 300 characters.

    • kindstring

      Talk (the default), keynote, workshop, panel, break, meal, networking or other.

      One of: talk, keynote, workshop, panel, break, meal, networking, other

    • startsLocalstring

      When it starts, in the venue's time.

    • endsLocalstring

      When it ends, in the venue's time.

    • startsUtcstring (date-time)

      Or when it starts, in UTC.

    • endsUtcstring (date-time)

      Or when it ends, in UTC.

    • roomIdstring (uuid) or null

      A room of the event.

    • trackIdstring (uuid) or null

      A track of the event.

    • summarystring or null

      What it is about, in Markdown.

    • capacityinteger (int32) or null

      Seats, when fewer than the room's.

    • languagestring or null

      The language it is given in.

    • speakerIdsstring (uuid)[]

      Speakers of the event.

    • allowClashboolean

      Place it even when another session has the room then.

    Answers

    • 201 The session. Session
      Fields
      • sessionIdstring (uuid)

        The session's id.

      • eventIdstring (uuid)

        The event's id.

      • titlestring

        Its title.

      • summarystring or null

        What it is about, in Markdown.

      • kindstring

        Talk, keynote, workshop, panel, break, meal, networking or other.

        One of: talk, keynote, workshop, panel, break, meal, networking, other

      • roomIdstring (uuid) or null

        Its room.

      • trackIdstring (uuid) or null

        Its track.

      • startsUtcstring (date-time)

        When it starts, in UTC.

      • endsUtcstring (date-time)

        When it ends, in UTC.

      • startsLocalstring

        When it starts, in the venue's time: what the agenda shows.

      • endsLocalstring

        When it ends, in the venue's time.

      • timeZonestring

        The venue's time zone.

      • minutesinteger (int32)

        How long it is.

      • capacityinteger (int32) or null

        Seats, when fewer than the room's.

      • languagestring or null

        The language it is given in.

      • joinProviderstring or null

        For an online session, which service it streams on: zoom, teams, youtube and so on. Never the link.

      • speakerIdsstring (uuid)[]

        Its speakers, in order.

      • updatedUtcstring (date-time) or null

        When it last changed, in UTC.

    • 400 invalidBody, invalidRequest, invalidIdempotencyKey.
    • 401 invalidKey, keyExpired, keyRevoked.
    • 403 missingScope, demoWorkspace.
    • 404 eventNotFound.
    • 409 idempotencyKeyInUse, clash.
    • 422 idempotencyKeyReused.
    • 429 rateLimited.

    Refusals

    invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound invalidBody invalidRequest demoWorkspace idempotencyKeyInUse idempotencyKeyReused invalidIdempotencyKey clash

    Request

    curl -X POST "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions" \
      -H "Authorization: Bearer $ATTENDBEACON_KEY" \
      -H "Idempotency-Key: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d '{
      "title": "Closing keynote: what we learned",
      "kind": "keynote",
      "startsLocal": "2026-11-13T16:30",
      "endsLocal": "2026-11-13T17:15",
      "roomId": "b3ac0001-0000-4000-8000-000000000000",
      "speakerIds": [
        "b3ac0003-0000-4000-8000-000000000000"
      ]
    }'

    201 Example answer

    JSON
    {
      "sessionId": "b3ac0004-0000-4000-8000-000000000000",
      "eventId": "b3ac0000-0000-4000-8000-000000000001",
      "title": "Registration and coffee",
      "summary": null,
      "kind": "other",
      "roomId": null,
      "trackId": null,
      "startsUtc": "2026-11-12T07:30:00.000Z",
      "endsUtc": "2026-11-12T08:30:00.000Z",
      "startsLocal": "2026-11-12T08:30",
      "endsLocal": "2026-11-12T09:30",
      "timeZone": "Europe/Amsterdam",
      "minutes": 60,
      "capacity": null,
      "language": null,
      "joinProvider": null,
      "speakerIds": [],
      "updatedUtc": "2026-10-14T21:40:48.084Z"
    }
    400 invalidBody, invalidRequest, invalidIdempotencyKey.
    JSON
    {
      "type": "https://attendbeacon.com/developers/errors#invalidBody",
      "title": "The body is not readable",
      "status": 400,
      "detail": "The body is not JSON, or a field has the wrong type.",
      "instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions",
      "code": "invalidBody",
      "traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
      "error": "The body is not JSON, or a field has the wrong type."
    }

    Get a session

    GET/events/{eventId}/sessions/{sessionId}

    Gets one session, in UTC and in the venue's local time.

    Scopes
    program:read
    • Answers with an ETag; send If-None-Match to save a download.

    Parameters

    path

    • eventIdstring (uuid)required

      The event's id.

    • sessionIdstring (uuid)required

      The session's id.

    header

    • If-None-Matchstring

      The ETag you have: when it is still current the answer is 304 with no body.

    Answers

    • 200 The session. Session
      Fields
      • sessionIdstring (uuid)

        The session's id.

      • eventIdstring (uuid)

        The event's id.

      • titlestring

        Its title.

      • summarystring or null

        What it is about, in Markdown.

      • kindstring

        Talk, keynote, workshop, panel, break, meal, networking or other.

        One of: talk, keynote, workshop, panel, break, meal, networking, other

      • roomIdstring (uuid) or null

        Its room.

      • trackIdstring (uuid) or null

        Its track.

      • startsUtcstring (date-time)

        When it starts, in UTC.

      • endsUtcstring (date-time)

        When it ends, in UTC.

      • startsLocalstring

        When it starts, in the venue's time: what the agenda shows.

      • endsLocalstring

        When it ends, in the venue's time.

      • timeZonestring

        The venue's time zone.

      • minutesinteger (int32)

        How long it is.

      • capacityinteger (int32) or null

        Seats, when fewer than the room's.

      • languagestring or null

        The language it is given in.

      • joinProviderstring or null

        For an online session, which service it streams on: zoom, teams, youtube and so on. Never the link.

      • speakerIdsstring (uuid)[]

        Its speakers, in order.

      • updatedUtcstring (date-time) or null

        When it last changed, in UTC.

    • 304 Not modified: If-None-Match named the representation as it is.
    • 401 invalidKey, keyExpired, keyRevoked.
    • 403 missingScope.
    • 404 eventNotFound, notFound.
    • 429 rateLimited.

    Refusals

    invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound notFound

    Request

    curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions/b3ac0004-0000-4000-8000-000000000000" \
      -H "Authorization: Bearer $ATTENDBEACON_KEY"

    200 Example answer

    JSON
    {
      "sessionId": "b3ac0004-0000-4000-8000-000000000000",
      "eventId": "b3ac0000-0000-4000-8000-000000000001",
      "title": "Registration and coffee",
      "summary": null,
      "kind": "other",
      "roomId": null,
      "trackId": null,
      "startsUtc": "2026-11-12T07:30:00.000Z",
      "endsUtc": "2026-11-12T08:30:00.000Z",
      "startsLocal": "2026-11-12T08:30",
      "endsLocal": "2026-11-12T09:30",
      "timeZone": "Europe/Amsterdam",
      "minutes": 60,
      "capacity": null,
      "language": null,
      "joinProvider": null,
      "speakerIds": [],
      "updatedUtc": "2026-10-14T21:40:48.084Z"
    }
    401 invalidKey, keyExpired, keyRevoked.
    JSON
    {
      "type": "https://attendbeacon.com/developers/errors#invalidKey",
      "title": "No working API key",
      "status": 401,
      "detail": "No key was sent, or it is not one this platform made. Send it as Authorization: Bearer abk_... or in X-Api-Key.",
      "instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions/{sessionId}",
      "code": "invalidKey",
      "traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
      "error": "No key was sent, or it is not one this platform made. Send it as Authorization: Bearer abk_... or in X-Api-Key."
    }

    Change a session Changes data

    PATCH/events/{eventId}/sessions/{sessionId}

    Changes a session as a JSON merge patch. Those who saved it in the app hear when it moves, as when the organiser moves it in the workspace.

    Scopes
    program:write
    • Send If-Match with the ETag you read, so a change in between is not overwritten.

    Parameters

    path

    • eventIdstring (uuid)required

      The event's id.

    • sessionIdstring (uuid)required

      The session's id.

    header

    • If-Matchstring

      The ETag you read, so a change made since is refused (412) rather than overwritten.

    Body SessionPatch

    The fields to change.

    • titlestring

      Its title.

    • kindstring

      Its kind.

    • startsLocalstring

      When it starts, in the venue's time.

    • endsLocalstring

      When it ends, in the venue's time.

    • startsUtcstring (date-time)

      Or when it starts, in UTC.

    • endsUtcstring (date-time)

      Or when it ends, in UTC.

    • roomIdstring (uuid) or null

      A room of the event, or null for none.

    • trackIdstring (uuid) or null

      A track of the event, or null for none.

    • summarystring or null

      What it is about.

    • capacityinteger (int32) or null

      Seats, or null for the room's.

    • languagestring or null

      Its language.

    • speakerIdsstring (uuid)[]

      Its speakers: the whole list.

    • allowClashboolean

      Place it even when another session has the room then.

    Answers

    • 200 The session as it is now. Session
      Fields
      • sessionIdstring (uuid)

        The session's id.

      • eventIdstring (uuid)

        The event's id.

      • titlestring

        Its title.

      • summarystring or null

        What it is about, in Markdown.

      • kindstring

        Talk, keynote, workshop, panel, break, meal, networking or other.

        One of: talk, keynote, workshop, panel, break, meal, networking, other

      • roomIdstring (uuid) or null

        Its room.

      • trackIdstring (uuid) or null

        Its track.

      • startsUtcstring (date-time)

        When it starts, in UTC.

      • endsUtcstring (date-time)

        When it ends, in UTC.

      • startsLocalstring

        When it starts, in the venue's time: what the agenda shows.

      • endsLocalstring

        When it ends, in the venue's time.

      • timeZonestring

        The venue's time zone.

      • minutesinteger (int32)

        How long it is.

      • capacityinteger (int32) or null

        Seats, when fewer than the room's.

      • languagestring or null

        The language it is given in.

      • joinProviderstring or null

        For an online session, which service it streams on: zoom, teams, youtube and so on. Never the link.

      • speakerIdsstring (uuid)[]

        Its speakers, in order.

      • updatedUtcstring (date-time) or null

        When it last changed, in UTC.

    • 400 invalidBody, invalidRequest.
    • 401 invalidKey, keyExpired, keyRevoked.
    • 403 missingScope, demoWorkspace.
    • 404 eventNotFound, notFound.
    • 409 clash.
    • 412 preconditionFailed.
    • 429 rateLimited.

    Refusals

    invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound notFound invalidBody invalidRequest demoWorkspace preconditionFailed clash

    Request

    curl -X PATCH "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions/b3ac0004-0000-4000-8000-000000000000" \
      -H "Authorization: Bearer $ATTENDBEACON_KEY" \
      -H "If-Match: $ETAG" \
      -H "Content-Type: application/json" \
      -d '{
      "startsLocal": "2026-11-12T11:15",
      "endsLocal": "2026-11-12T12:00"
    }'

    200 Example answer

    JSON
    {
      "sessionId": "b3ac0004-0000-4000-8000-000000000000",
      "eventId": "b3ac0000-0000-4000-8000-000000000001",
      "title": "Registration and coffee",
      "summary": null,
      "kind": "other",
      "roomId": null,
      "trackId": null,
      "startsUtc": "2026-11-12T07:30:00.000Z",
      "endsUtc": "2026-11-12T08:30:00.000Z",
      "startsLocal": "2026-11-12T08:30",
      "endsLocal": "2026-11-12T09:30",
      "timeZone": "Europe/Amsterdam",
      "minutes": 60,
      "capacity": null,
      "language": null,
      "joinProvider": null,
      "speakerIds": [],
      "updatedUtc": "2026-10-14T21:40:48.084Z"
    }
    400 invalidBody, invalidRequest.
    JSON
    {
      "type": "https://attendbeacon.com/developers/errors#invalidBody",
      "title": "The body is not readable",
      "status": 400,
      "detail": "The body is not JSON, or a field has the wrong type.",
      "instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions/{sessionId}",
      "code": "invalidBody",
      "traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
      "error": "The body is not JSON, or a field has the wrong type."
    }

    List rooms

    GET/events/{eventId}/rooms

    Lists an event's rooms in the agenda's order, left to right.

    Scopes
    program:read

      Parameters

      path

      • eventIdstring (uuid)required

        The event's id.

      query

      • cursorstring

        Where the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.

      • limitinteger (int32)

        How many on a page, up to 500.

        Default: 100

      Answers

      • 200 A page of rooms. RoomList
        Fields
        • dataRoom[]

          The items of this page.

          Show the fields
          • roomIdstring (uuid)

            The room's id.

          • eventIdstring (uuid)

            The event's id.

          • namestring

            Its name.

          • locationstring or null

            How to find it.

          • capacityinteger (int32) or null

            Seats.

          • sortOrderinteger (int32)

            Its place on the agenda, left to right.

        • nextCursorstring or null

          The cursor for the next page; null on the last page. Pass it as cursor, with the same filters.

        • hasMoreboolean

          Whether there is another page.

      • 400 invalidCursor.
      • 401 invalidKey, keyExpired, keyRevoked.
      • 403 missingScope.
      • 404 eventNotFound.
      • 429 rateLimited.

      Refusals

      invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound invalidCursor

      Request

      curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/rooms?limit=2" \
        -H "Authorization: Bearer $ATTENDBEACON_KEY"

      200 Example answer

      JSON
      {
        "data": [
          {
            "roomId": "b3ac0001-0000-4000-8000-000000000000",
            "eventId": "b3ac0000-0000-4000-8000-000000000001",
            "name": "Main Hall",
            "location": "Ground floor, straight ahead",
            "capacity": 600,
            "sortOrder": 0
          },
          {
            "roomId": "b3ac0001-0000-4000-8000-000000000001",
            "eventId": "b3ac0000-0000-4000-8000-000000000001",
            "name": "Graanbeurs",
            "location": "Ground floor, left wing",
            "capacity": 220,
            "sortOrder": 1
          }
        ],
        "nextCursor": "YzE6MDAwMDAwMTAwMDAwMDAwMDAwMXxiM2FjMDAwMTAwMDA0MDAwODAwMDAwMDAwMDAwMDAwMQ",
        "hasMore": true
      }
      400 invalidCursor.
      JSON
      {
        "type": "https://attendbeacon.com/developers/errors#invalidCursor",
        "title": "The cursor is not valid",
        "status": 400,
        "detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
        "instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/rooms",
        "code": "invalidCursor",
        "traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
        "error": "Pass nextCursor exactly as a list returned it, with the same filters."
      }

      List tracks

      GET/events/{eventId}/tracks

      Lists an event's tracks: the themes through its agenda.

      Scopes
      program:read

        Parameters

        path

        • eventIdstring (uuid)required

          The event's id.

        query

        • cursorstring

          Where the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.

        • limitinteger (int32)

          How many on a page, up to 500.

          Default: 100

        Answers

        • 200 A page of tracks. TrackList
          Fields
          • dataTrack[]

            The items of this page.

            Show the fields
            • trackIdstring (uuid)

              The track's id.

            • eventIdstring (uuid)

              The event's id.

            • namestring

              Its name.

            • colourstring

              Its colour on the agenda, as #rrggbb.

            • sortOrderinteger (int32)

              Its place in the filter.

          • nextCursorstring or null

            The cursor for the next page; null on the last page. Pass it as cursor, with the same filters.

          • hasMoreboolean

            Whether there is another page.

        • 400 invalidCursor.
        • 401 invalidKey, keyExpired, keyRevoked.
        • 403 missingScope.
        • 404 eventNotFound.
        • 429 rateLimited.

        Refusals

        invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound invalidCursor

        Request

        curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/tracks?limit=2" \
          -H "Authorization: Bearer $ATTENDBEACON_KEY"

        200 Example answer

        JSON
        {
          "data": [
            {
              "trackId": "b3ac0002-0000-4000-8000-000000000000",
              "eventId": "b3ac0000-0000-4000-8000-000000000001",
              "name": "Cloud & AI",
              "colour": "#2b8fd0",
              "sortOrder": 0
            },
            {
              "trackId": "b3ac0002-0000-4000-8000-000000000001",
              "eventId": "b3ac0000-0000-4000-8000-000000000001",
              "name": "Product",
              "colour": "#c2410c",
              "sortOrder": 1
            }
          ],
          "nextCursor": "YzE6MDAwMDAwMTAwMDAwMDAwMDAwMXxiM2FjMDAwMjAwMDA0MDAwODAwMDAwMDAwMDAwMDAwMQ",
          "hasMore": true
        }
        400 invalidCursor.
        JSON
        {
          "type": "https://attendbeacon.com/developers/errors#invalidCursor",
          "title": "The cursor is not valid",
          "status": 400,
          "detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
          "instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/tracks",
          "code": "invalidCursor",
          "traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
          "error": "Pass nextCursor exactly as a list returned it, with the same filters."
        }

        List speakers

        GET/events/{eventId}/speakers

        Lists an event's speakers as its page shows them, with the sessions they speak at. Their email address only with people:read.

        Scopes
        program:read

          Parameters

          path

          • eventIdstring (uuid)required

            The event's id.

          query

          • cursorstring

            Where the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.

          • limitinteger (int32)

            How many on a page, up to 500.

            Default: 100

          Answers

          • 200 A page of speakers. SpeakerList
            Fields
            • dataSpeaker[]

              The items of this page.

              Show the fields
              • speakerIdstring (uuid)

                The speaker's id.

              • eventIdstring (uuid)

                The event's id.

              • namestring

                Their name.

              • jobTitlestring or null

                Their job.

              • companystring or null

                Their company.

              • biostring or null

                About them, in Markdown.

              • photoUrlstring or null

                Their photo.

              • emailstring or null

                Their address: only with people:read.

              • linksstring (uri)[]

                Their links.

              • sessionIdsstring (uuid)[]

                The sessions they speak at.

              • sortOrderinteger (int32)

                Their place on the speakers page.

            • nextCursorstring or null

              The cursor for the next page; null on the last page. Pass it as cursor, with the same filters.

            • hasMoreboolean

              Whether there is another page.

          • 400 invalidCursor.
          • 401 invalidKey, keyExpired, keyRevoked.
          • 403 missingScope.
          • 404 eventNotFound.
          • 429 rateLimited.

          Refusals

          invalidKey keyExpired keyRevoked rateLimited missingScope eventNotFound invalidCursor

          Request

          curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/speakers?limit=2" \
            -H "Authorization: Bearer $ATTENDBEACON_KEY"

          200 Example answer

          JSON
          {
            "data": [
              {
                "speakerId": "b3ac0003-0000-4000-8000-000000000000",
                "eventId": "b3ac0000-0000-4000-8000-000000000001",
                "name": "Ada Verhoeven",
                "jobTitle": "Principal Engineer",
                "company": "Northwind Cloud",
                "bio": "Ada builds the platforms other engineers build on, and writes about what breaks.",
                "photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000000.jpg",
                "email": "ada@speakers.example",
                "links": [],
                "sessionIds": [
                  "b3ac0004-0000-4000-8000-000000000002",
                  "b3ac0004-0000-4000-8000-000000000015"
                ],
                "sortOrder": 0
              },
              {
                "speakerId": "b3ac0003-0000-4000-8000-000000000001",
                "eventId": "b3ac0000-0000-4000-8000-000000000001",
                "name": "Malik Osei",
                "jobTitle": "VP Product",
                "company": "Contoso",
                "bio": "Malik has shipped products in four countries and still reads every support ticket.",
                "photoUrl": "/media/f0de0000000040008000000000000001/b3ac00fa000040008000000000000001.jpg",
                "email": "malik@speakers.example",
                "links": [],
                "sessionIds": [
                  "b3ac0004-0000-4000-8000-000000000010",
                  "b3ac0004-0000-4000-8000-000000000003"
                ],
                "sortOrder": 1
              }
            ],
            "nextCursor": "YzE6MDAwMDAwMTAwMDAwMDAwMDAwMXxiM2FjMDAwMzAwMDA0MDAwODAwMDAwMDAwMDAwMDAwMQ",
            "hasMore": true
          }
          400 invalidCursor.
          JSON
          {
            "type": "https://attendbeacon.com/developers/errors#invalidCursor",
            "title": "The cursor is not valid",
            "status": 400,
            "detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
            "instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/speakers",
            "code": "invalidCursor",
            "traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
            "error": "Pass nextCursor exactly as a list returned it, with the same filters."
          }

          The guides and this site are in your language. The API reference's own descriptions are in English, as the API itself speaks.