Skip to content

How an event is doing (turnout and pacing)

GET/v1/organization/{orgId}/marketing/goals/turnout

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

"How's it doing?" for one event or webinar. Defaults to the next upcoming event; pass eventId for another one. Returns registrations so far, an estimate of registrations and turnout at the event date, and pace against the event's goal. The estimate comes with a range, a confidence label (low, medium, high) and a plain sentence saying how it was estimated. You also get the last comparable edition, registrations by day before the event (for a chart), the time of week the organization's emails get opened most, and two or three suggestions. Every number under prediction is an estimate. When there is not enough history, prediction.status is insufficient_history (or too_early) and no number is returned. With no goal set, the goal is the last comparable edition's numbers (goal.source: last_edition, goal.default: true). Cancelled registrations are not counted. Comparisons with other organizations are aggregate statistics only, never another organization's events or numbers. Requires read:marketing. Also at GET /v1/marketing/goals/turnout.

Request example

Terminal window
curl --request GET \
--url 'https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/goals/turnout' \
--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

  • orgIdstringpathrequired

    Your organization ID. Any other organization returns 404.

Query parameters

  • eventIdintegerquery

    The event or webinar. Defaults to the next upcoming one, else the latest.

Responses

200application/json

OK

  • payloadEventTurnout

    How one event is doing. Every number under prediction is an estimate.

    Show child attributes
    • eventobject | null
      Show child attributes
      • idinteger
      • namestring
      • kindstring

        webinar, gathering (in-person), lite or standard.

      • datestring<date> | null
      • time_zonestring
    • show_cardboolean

      True once the event has a registration.

    • goalobject
      Show child attributes
      • registrationsinteger | null
      • attendanceinteger | null
      • sourcestring | null

        turnout set with this API; goal a Goals registration goal on the event; last_edition the default.

        Allowed values
        "turnout", "goal", "last_edition"
      • defaultboolean

        True when nobody set a goal and it is the last edition's numbers.

    • predictionobject
      Show child attributes
      • labelstring
        Allowed values
        "Estimate"
      • statusstring
        Allowed values
        "estimated", "insufficient_history", "too_early", "final", "no_date"
      • current_registrationsinteger
      • current_attendedinteger
      • days_leftinteger | null
      • expected_registrationsinteger | null

        Estimate at the event date. null unless status is estimated or final.

      • expected_turnoutinteger | null
      • rangeobject | null
        Show child attributes
        • lowinteger
        • highinteger
      • confidencestring | null
        Allowed values
        "low", "medium", "high"
      • howstring

        How the estimate was made, in a plain sentence.

      • sourcestring | null

        benchmark means aggregate statistics across organizations (never one organization's numbers).

        Allowed values
        "org_history", "benchmark"
    • paceobject
      Show child attributes
      • registrationsobject | null
        Show child attributes
        • goalinteger
        • currentinteger
        • statusstring
          Allowed values
          "ahead", "on_track", "behind", "reached", "missed", "unknown"
        • expected_by_todayinteger | null
        • projectedinteger | null
        • gap_at_eventinteger | null
        • linestring
      • attendanceobject | null
    • last_editionobject | null
      Show child attributes
      • idinteger
      • namestring
      • datestring<date> | null
      • registrationsinteger
      • attendedinteger
    • seriesobject[]

      Registrations by day before the event, from the furthest day with data (at most 120) to the event day.

      Show child attributes
      • days_beforeinteger
      • datestring<date> | null
      • this_eventinteger | null
      • last_editioninteger | null
      • goal_pathinteger | null
      • projectedinteger | null
    • send_timeobject | null
      Show child attributes
      • statusstring
        Allowed values
        "suggested", "no_history"
      • labelstring
        Example
        "Tuesday 10am"
      • next_atstring<date-time> | null
      • linestring
    • suggestionsobject[]
      Show child attributes
      • keystring
      • textstring
      • askstring

        A request an assistant can act on.

    • summarystring

      One plain paragraph to lead with.

403

  • SCOPE_REQUIRED — the token lacks read:marketing (reads) or write:marketing (writes).
  • ORG_WIDE_TOKEN_REQUIRED — the token is restricted to particular events; this operation reads the whole organization.
  • FORBIDDEN — the organization's plan does not include Marketing, or the token's user cannot change goals (writes need an organization admin or the organization settings permission).

404

The event is not in your organization.

Response examples

{
"payload": {
"event": {
"id": 123,
"name": "<string>",
"kind": "<string>",
"date": "2026-01-15",
"time_zone": "<string>"
},
"show_card": true,
"goal": {
"registrations": 123,
"attendance": 123,
"source": "turnout",
"default": true
},
"prediction": {
"label": "Estimate",
"status": "estimated",
"current_registrations": 123,
"current_attended": 123,
"days_left": 123,
"expected_registrations": 123,
"expected_turnout": 123,
"range": {
"low": 123,
"high": 123
},
"confidence": "low",
"how": "<string>",
"source": "org_history"
},
"pace": {
"registrations": {
"goal": 123,
"current": 123,
"status": "ahead",
"expected_by_today": 123,
"projected": 123,
"gap_at_event": 123,
"line": "<string>"
},
"attendance": {}
},
"last_edition": {
"id": 123,
"name": "<string>",
"date": "2026-01-15",
"registrations": 123,
"attended": 123
},
"series": [
{
"days_before": 123,
"date": "2026-01-15",
"this_event": 123,
"last_edition": 123,
"goal_path": 123,
"projected": 123
}
],
"send_time": {
"status": "suggested",
"label": "Tuesday 10am",
"next_at": "2026-01-15T09:30:00Z",
"line": "<string>"
},
"suggestions": [
{
"key": "<string>",
"text": "<string>",
"ask": "<string>"
}
],
"summary": "<string>"
}
}