Get a webinar's email signatures
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
The email signatures your team adds before a webinar: a small banner (480×120) and a one-line invite, every link going to the registration page through the teammate's own tracked link.
banner_url is stable: it shows the "Save your seat" banner until the webinar starts and the "Watch the
recording" banner after, so a signature already pasted changes by itself. stale: true means the
title, date, registration link or brand changed since the signatures were made. team lists each
teammate with their link, when they were emailed, opened and copied their signature, and the clicks and
registrations it brought.
Webinars only (409 otherwise). Requires read:events and a user whose role on the webinar can read sharing.
Request example
curl --request GET \ --url 'https://public-api.sessionboard.com/v1/event/{eventId}/sharing/signatures' \ --header 'x-access-token: <api-token>'const response = await fetch('https://public-api.sessionboard.com/v1/event/{eventId}/sharing/signatures', { 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/event/{eventId}/sharing/signatures", 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/event/{eventId}/sharing/signatures", 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/event/{eventId}/sharing/signatures", 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/event/{eventId}/sharing/signatures")) .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
eventIdintegerpathrequiredThe webinar's event id.
Responses
200application/json
The signatures and the team.
successbooleanpayloadSharingSignaturesShow child attributes
generatedbooleangenerated_atstring<date-time> | nullstalebooleanstartedbooleanstarts_atstring<date-time> | nulltimezonestring | nullregistration_urlstring | nullwidthintegerheightintegerbanner_urlstring | nullStable banner URL; "Save your seat" until the start, "Watch the recording" after.
bannersobjectShow child attributes
livestring | nullon_demandstring | null
variantsobject[]Show child attributes
idstring- Allowed values
"banner", "line", "text"
namestringhtmlstringtextstring
variants_availableobject[]Show child attributes
idstringnamestring
teamobject[]Show child attributes
idstring<uuid>user_idintegernamestringemailstringshare_urlstringemailed_atstring<date-time> | nullopened_atstring<date-time> | nullcopied_atstring<date-time> | nullclicksintegerregistrationsinteger
401
Missing, invalid or expired token.
403
SCOPE_REQUIRED: the token lacksread:events(reads) orwrite:marketing(writes).EVENT_NOT_ALLOWED: the event is outside the token's event allow-list.- Otherwise the token's user cannot read (or edit) sharing on this webinar.
404
The event is not in the token's organization.
409
The event is not a webinar.
Response examples
{ "success": true, "payload": { "generated": true, "generated_at": "2026-01-15T09:30:00Z", "stale": true, "started": true, "starts_at": "2026-01-15T09:30:00Z", "timezone": "<string>", "registration_url": "<string>", "width": 123, "height": 123, "banner_url": "<string>", "banners": { "live": "<string>", "on_demand": "<string>" }, "variants": [ { "id": "banner", "name": "<string>", "html": "<string>", "text": "<string>" } ], "variants_available": [ { "id": "<string>", "name": "<string>" } ], "team": [ { "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a", "user_id": 123, "name": "<string>", "email": "<string>", "share_url": "<string>", "emailed_at": "2026-01-15T09:30:00Z", "opened_at": "2026-01-15T09:30:00Z", "copied_at": "2026-01-15T09:30:00Z", "clicks": 123, "registrations": 123 } ] }}