Webinar questions to follow up
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
Questions people asked in your webinars that are worth following up, and whether anyone has followed up in your CRM or AMS since. Which questions count depends on your organization's kind (org_kind): buying and evaluating questions for a company; joining, renewing, rejoining, group and credit questions for an association; booth and sponsorship questions for an event organizer. Each question is classified once, when it is brought in. follow_up is none_seen (no sales activity after the question), followed_up, or unknown when the connected system does not report activity. A question not classified yet has intent: null, and not_tracked says so. Defaults to the last 30 days and every webinar. Read-only. Requires read:marketing. Also at GET /v1/marketing/results/questions. A key restricted to particular events must pass one of them as eventId.
Request example
curl --request GET \ --url 'https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results/questions' \ --header 'x-access-token: <api-token>'const response = await fetch('https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results/questions', { 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/questions", 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/questions", 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/questions", 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/questions")) .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
eventIdintegerqueryOne webinar. Leave out for every webinar in the period.
fromstring<date>queryStart of the period,
YYYY-MM-DD.tostring<date>queryEnd of the period,
YYYY-MM-DD, inclusive.intentstringqueryfollow_up: only the classes worth following up for your kind of organization.all: every question.- Allowed values
"follow_up", "all"- Default
"follow_up"
followUpstringqueryKeep questions by their follow-up state.
- Allowed values
"none_seen", "followed_up", "unknown", "any"- Default
"none_seen"
ownerstringqueryOnly questions from people this owner (account owner, staff contact or sales rep) has.
limitintegerqueryHow many questions to return.
- Default
25- Minimum
1- Maximum
100
Responses
200application/json
OK
payloadWebinarQuestionsReportFields every webinar report carries.
Show child attributes
org_kindstring | nullCompany, association or event organizer.
nulluntil your organization sets it;labelsare then neutral.- Allowed values
"corporate", "association", "organizer", null
labelsOrgKindLabelsYour organization's own words, chosen by
org_kind. Use them for every word about people, organizations and money. For examplepeople_knownisCustomersfor a company,Membersfor an association andExhibitors and sponsorsfor an event organizer.Show child attributes
kind_namestring- Example
"Association"
people_knownstring- Example
"Members"
people_known_onestring- Example
"Member"
people_otherstring- Example
"Nonmembers"
organizationsstring- Example
"Member organizations"
organization_onestring- Example
"Member organization"
ownerstring- Example
"Staff contact"
system_of_recordstring- Example
"AMS"
questions_titlestring- Example
"Joining and renewal questions nobody has followed up"
outcomes_titlestring- Example
"Membership from people who attended"
createdstring- Example
"Became members"
closedstring- Example
"Renewed"
becamestring- Example
"Lapsed members back"
in_the_roomstring- Example
"In the room: annual dues of members who attended"
periodobjectShow child attributes
fromstring<date>tostring<date>
as_ofstring<date-time> | nullWhen the CRM or AMS was last read.
nullwhen nothing is connected.not_trackedobject[]What this report cannot measure, one plain sentence each.
Show child attributes
keystringreasonstring
truncatedbooleantruewhen the list was capped;<list>_totalthen gives the full count.totalsobjectShow child attributes
questionsintegerfollow_up_worthyintegerwithout_follow_upinteger
questions_totalintegerquestionsobject[]Show child attributes
signal_idstringasked_atstring<date-time>textstringintentstring | nullnulluntil the question is classified (not_trackedthen has anintententry). company:buying,evaluating; association:joining,renewing,rejoining,group,credit; event organizer:booth,sponsorship; and for everyonesupport,content,other.intent_reasonstringpersonobjectShow child attributes
person_idstringnamestringemailstringcompanystring | nulltitlestring | nullrelationshipstring | nullFor example
customer,member,nonmember,lapsed,exhibitororsponsor.
webinarobjectShow child attributes
event_idintegernamestringdatestring<date>
other_signalsstring[]owner_namestring | nullfollow_upstring- Allowed values
"none_seen", "followed_up", "unknown"
follow_up_detailstring | null- Example
"Last sales activity Oct 2, before the question"
clipobject | nullShow child attributes
media_idstringoffset_secondsintegerurlstring
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).
404
The event is not in your organization.
Response examples
{ "payload": { "org_kind": "corporate", "labels": { "kind_name": "Association", "people_known": "Members", "people_known_one": "Member", "people_other": "Nonmembers", "organizations": "Member organizations", "organization_one": "Member organization", "owner": "Staff contact", "system_of_record": "AMS", "questions_title": "Joining and renewal questions nobody has followed up", "outcomes_title": "Membership from people who attended", "created": "Became members", "closed": "Renewed", "became": "Lapsed members back", "in_the_room": "In the room: annual dues of members who attended" }, "period": { "from": "2026-01-15", "to": "2026-01-15" }, "as_of": "2026-01-15T09:30:00Z", "not_tracked": [ { "key": "<string>", "reason": "<string>" } ], "truncated": true, "totals": { "questions": 123, "follow_up_worthy": 123, "without_follow_up": 123 }, "questions_total": 123, "questions": [ { "signal_id": "<string>", "asked_at": "2026-01-15T09:30:00Z", "text": "<string>", "intent": "<string>", "intent_reason": "<string>", "person": { "person_id": "<string>", "name": "<string>", "email": "<string>", "company": "<string>", "title": "<string>", "relationship": "<string>" }, "webinar": { "event_id": 123, "name": "<string>", "date": "2026-01-15" }, "other_signals": [ "cta.clicked", "demo_requested" ], "owner_name": "<string>", "follow_up": "none_seen", "follow_up_detail": "Last sales activity Oct 2, before the question", "clip": { "media_id": "<string>", "offset_seconds": 123, "url": "<string>" } } ] }}