Get the results report
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
One report for an event, a webinar (leave out eventId for the latest), the organization, or one sponsor (scope=sponsor, counts only — no attendee is ever named). Event, webinar and org reports carry totals, funnel, channels, people (who shared), posts, content, gaps and the net_new split; a sponsor report carries totals and sessions. Every report also carries story: the same numbers as a headline, findings, drivers, a next move and deck-ready sections, each claim citing the fields it comes from. Requires read:marketing; a key restricted to particular events must name one of them as eventId. Also at GET /v1/marketing/results.
Request example
curl --request GET \ --url 'https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results' \ --header 'x-access-token: <api-token>'const response = await fetch('https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results', { method: 'GET', headers: { "x-access-token": "<api-token>" },});
const data = await response.json();console.log(data);import requests
response = requests.request( "GET", "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results", headers={ "x-access-token": "<api-token>" },)
print(response.json())<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => [ "x-access-token: <api-token>", ],]);
$response = curl_exec($curl);curl_close($curl);
echo $response;package main
import ( "fmt" "io" "net/http")
func main() { req, _ := http.NewRequest("GET", "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results", nil) req.Header.Add("x-access-token", "<api-token>")
res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results")) .header("x-access-token", "<api-token>") .method("GET", HttpRequest.BodyPublishers.noBody()) .build();
HttpResponse<String> response = HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Try it
Response headers
Authorizations
x-access-tokenstringheaderOrganization API token. Generate from Organization Settings → API Tokens.
AuthorizationBearer <token>headerorOAuth 2.1 access token. Obtained via the OAuth PKCE flow at
/oauth/token.
Send one of these. See Authentication.
Path parameters
orgIdstringpathrequiredYour organization ID. Any other organization returns
404.
Query parameters
scopestringquery- Allowed values
"event", "webinar", "org", "sponsor"- Default
"event"
eventIdstringquerysponsorIdstringqueryWith
scope=sponsor. Pick one withGET …/marketing/results/sponsors.fromstring<date>querytostring<date>query
Responses
200application/json
payload with the report and its story
payloadobjectShow child attributes
scopestringtotalsobjectstoryResultsStoryThe report as a narrative, ready to say back or to turn into slides. Every number in it is a field of the same response, named in
cites(paths such astotals.registrationsorchannels[0].share). Nothing is estimated or taken from outside Sessionboard; what the data cannot support is listed inmissing. Attendees are never named.Show child attributes
versioninteger- Example
1
kindstring- Allowed values
"event", "webinar", "org", "sponsor", "advocacy", "field_event", "webinar_outcomes"
titlestringheadlineStoryClaimShow child attributes
textstringcitesstring[]
findingsobject[]- Max items
5
Show child attributes
textstringcitesstring[]idstringvaluenumber | null
driversStoryClaim[]Show child attributes
textstringcitesstring[]
next_moveobject | nullShow child attributes
textstringwhystringcitesstring[]
sectionsobject[]One slide each.
Show child attributes
titlestringbulletsStoryClaim[]Show child attributes
textstringcitesstring[]
chartobject | nullShow child attributes
typestring- Allowed values
"bar", "funnel", "kpi"
titlestringxstring- Example
"label"
ystring- Example
"value"
dataobject[]Show child attributes
labelstringvaluenumber
citesstring
missingstring[]rulesstring
403
SCOPE_REQUIRED— the token lacksread:marketing(reads) orwrite: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).
Response examples
{ "payload": { "scope": "<string>", "totals": {}, "story": { "version": 1, "kind": "event", "title": "<string>", "headline": { "text": "<string>", "cites": [ "<string>" ] }, "findings": [ { "text": "<string>", "cites": [ "<string>" ], "id": "<string>", "value": 123.45 } ], "drivers": [ { "text": "<string>", "cites": [ "<string>" ] } ], "next_move": { "text": "<string>", "why": "<string>", "cites": [ "<string>" ] }, "sections": [ { "title": "<string>", "bullets": [ { "text": "<string>", "cites": [ null ] } ], "chart": { "type": "bar", "title": "<string>", "x": "label", "y": "value", "data": [ { "label": null, "value": null } ], "cites": "<string>" } } ], "missing": [ "<string>" ], "rules": "<string>" } }}