List signed-in viewers
Every account that has signed in to the tip page (Twitch or Kick), most recently signed-in first, each with the person’s sub-reward credit balance (summed across their linked accounts, so a viewer who signed in here with both shows two rows with the same balance). Viewers who have never signed in don’t appear - signing in is what creates a viewer. Requires viewers:read.
GET
/viewersAuthorization
AuthorizationBearer token (tp_live_... or tpat_...) · headerrequiredA TipPage API key (`tp_live_...`, created in Dashboard → Settings → Developer) or an OAuth 2.0 access token (`tpat_...`, see the OAuth guide). Both carry the same scopes and are accepted on every endpoint.
Query parameters
limitintegermin 1 · max 100 · default: 25
beforestringCursor - the `next_cursor` from a previous page. Opaque (base64url of the sign-in time + platform + id the page ended on); a malformed one answers `400 bad_cursor`. Returns viewers who signed in before that point.
Responses
200One page of viewers, newest sign-up first.
viewersobject[]Show propertiesHide properties
Array of
objectplatformstringrequiredAllowed:
twitchkickplatform_user_idstringrequiredloginstring | nulldisplay_namestring | nullprofile_image_urlstring<uri> | nullsubscriber_tierintegerTheir sub tier as last seen (0 = not subscribed).
Allowed:
0123first_signed_in_atstring<date-time>When they first signed in to this tip page.
last_active_atstring<date-time>Last account activity seen (profile refreshes included).
linked_accountsobject[]requiredThe person's OTHER platform accounts - never the one above. Empty when nothing is linked.
Show propertiesHide properties
Array of
objectplatformstringAllowed:
twitchkickplatform_user_idstringloginstring | nulldisplay_namestring | nullcreditsCreditBalanceA viewer's sub-reward credit balance.
Show propertiesHide properties
availableintegerCredits spendable right now.
totalintegerCredits ever granted.
usedintegerCredits already spent.
has_morebooleannext_cursorstring | nullPass as `before` to fetch the next page.
400Unknown `before` cursor (`bad_cursor`).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
401Missing or invalid credential (`missing_api_key` / `invalid_api_key`, or `invalid_token` for an expired/revoked OAuth access token).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
403The key lacks the required scope (`missing_scope`).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
required_scopestring429Rate limit exceeded - check the `RateLimit-*` headers.
errorstringRequest
curl -X GET "https://api.tippage.com/v1/viewers" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("https://api.tippage.com/v1/viewers", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});import requests
response = requests.get(
"https://api.tippage.com/v1/viewers",
headers={
"Authorization": "Bearer YOUR_TOKEN"
},
)Response
{
"viewers": [
{
"platform": "twitch",
"platform_user_id": "123456789",
"login": "gigachad42",
"display_name": "GigaChad42",
"profile_image_url": "http://example.com",
"subscriber_tier": 0,
"first_signed_in_at": "2019-08-24T14:15:22Z",
"last_active_at": "2019-08-24T14:15:22Z",
"linked_accounts": [
{
"platform": "twitch",
"platform_user_id": "string",
"login": "string",
"display_name": "string"
}
],
"credits": {
"available": 0,
"total": 0,
"used": 0
}
}
],
"has_more": true,
"next_cursor": "string"
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string",
"required_scope": "string"
}{
"error": "string"
}