Skip to content

Set an event's registration and attendance goal

POST/v1/organization/{orgId}/marketing/goals/turnout/{eventId}/goal

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

Sets the event's registration goal, attendance goal, or both. null clears one; with no goal set, the last comparable edition's numbers are used. Answers with the same body as GET /v1/organization/{orgId}/marketing/goals/turnout, so pace against the new goal shows at once. An event has at most one open registration goal: when it has one (made on the Goals page or with plan_goal), registrationsGoal changes that goal's number and the answer's goal.source is goal; nothing new is created. Sends and spends nothing. Requires write:marketing. Also at POST /v1/marketing/goals/turnout/{eventId}/goal.

Request example

Terminal window
curl --request POST \
--url 'https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/goals/turnout/{eventId}/goal' \
--header 'x-access-token: <api-token>' \
--header 'Content-Type: application/json' \
--data '{
"registrationsGoal": 1,
"attendanceGoal": 1
}'

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
Body application/json
POST

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.

  • eventIdintegerpathrequired

    The event or webinar.

Request body

application/jsonrequired

At least one of the two. Each key is also accepted in snake_case (registrations_goal, attendance_goal).

  • registrationsGoalinteger | null

    Registrations wanted by the event date. null clears it.

    Minimum
    1
    Maximum
    10000000
  • attendanceGoalinteger | null

    People wanted at the event. null clears it.

    Minimum
    1
    Maximum
    10000000
{
"registrationsGoal": 1,
"attendanceGoal": 1
}

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.

400

Neither goal was given, or a goal is not a whole number from 1 to 10,000,000.

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>"
}
}