Skip to content

Entities

TV1ExtContext

FieldTypeDescription
modelTV1ExtModel | undefinedBroadcaster for the current room.
userTV1ExtUser | undefinedCurrent user running the extension (viewer, model, or studio context).
slugstringUnique identifier for the extension.

TV1ExtViewers

FieldTypeDescription
guestsnumberNumber of guest (unauthenticated) viewers.
withTokensnumberNumber of viewers who hold tokens.
totalnumberTotal number of viewers in the room.

TV1ExtModel

FieldTypeDescription
idnumberModel user ID.
usernamestringModel username.
namestringModel display name. Empty string for models with no display name.
avatarUrlThumbstringURL of model avatar thumbnail.
genderTV1GendersPerformer composition in the room.
statusTV1ModelStatusCurrent show status.
isPrivateEnabledbooleanWhether Private show is enabled.
isSpyEnabledbooleanWhether spy feature is enabled for the Private show. When enabled, users can spy on an already started Private show at a lower cost.
isExclusivePrivateEnabledbooleanWhether Exclusive Private show is enabled.
isNonNudebooleanWhether the model account is configured as non-nude (also known as Flirting Mode).

TV1ExtUser

Discriminated union on isGuest: TV1ExtGuestUser | TV1ExtLoggedInUser.

TV1ExtGuestUser

Guest user (not logged in).

FieldTypeDescription
isGuesttrueUser is a guest (not logged in).
guestHashstringUnique identifier for a guest user.

TV1ExtLoggedInUser

Logged-in user.

FieldTypeDescription
fanClubTV1UsersFanClubUser's fan club data. Contains information regarding user's subscription to the model's fan club.
hasPaidBeforebooleanUser previously purchased tokens.
hasTokensbooleanUser has tokens.
hasUltimateSubscriptionbooleanUser currently has Ultimate membership.
idnumberUser ID.
isGuestfalseUser is logged in.
isKingbooleanUser is the highest tipper in the room over past 12 hours.
isKnightbooleanUser is a knight of the model.
isModelbooleanUser has a model account. This can be true for another model visiting the stream. To check whether the current user is the broadcaster, compare context.user.id and context.model.id.
statusTV1UserStatusCurrent show/session state for this user.
isInvisiblebooleanUser is invisible. Do not expose any data of invisible users.
usernamestringUser username.
userRankingTV1UserRanking | undefinedUser activity ranking data when available.

TV1UserRanking

User activity ranking system.

TV1UserRanking fields:

  • league: League representation of the user's activity level. Could be grey, bronze, silver, gold, diamond, royal or legend.
  • level: Activity level from 1 to 100.

League values are ordered from lowest to highest activity rank:

  • grey: new or low-activity users (level 1–9).
  • bronze: early active users (level 10–19).
  • silver: regularly active users (level 20–34).
  • gold: highly active users (level 35–54).
  • diamond: very highly active users (level 55–79).
  • royal: elite activity users (level 80–99).
  • legend: top activity users (level 100).

TV1FanClubTier

Fan club subscription tier. Ordered from lowest to highest:

ValueDescription
soldierFirst tier with basic benefits.
lordSecond tier with more benefits than soldier.
princeThird tier with the most benefits.

TV1UsersFanClub

Discriminated union on isSubscribed: TV1UsersFanClubSubscribed | TV1UsersFanClubNotSubscribed.

TV1UsersFanClubSubscribed

FieldTypeDescription
isSubscribedtrueWhether user is subscribed to the model's fan club or not.
tierTV1FanClubTierThe tier of the fan club subscription. Could be soldier, lord or prince. Higher tiers provide more benefits.

TV1UsersFanClubNotSubscribed

FieldTypeDescription
isSubscribedfalseWhether user is subscribed to the model's fan club or not.

TV1PaymentHash

Payment hash used for authentication. Do not store or reuse it. Use it only once for the request it authorizes.

Type: string

TV1ShowStatus

ValueDescription
ticketShowTicket show.
groupShowGroup show.
offModel is not on the site.
privatePrivate show.
exclusivePrivateExclusive private show.
publicPublic show.
idleModel is idle but on the site.
spyIn spy mode.

TV1ModelStatus

Status that indicates which type of show model is producing now.

Equivalent to TV1ShowStatus, excluding spy.

TV1UserStatus

Status that indicates which type of show user is watching now.

Equivalent to TV1ShowStatus, excluding idle.

TV1Genders

Performer composition in the room:

ValueDescription
maleMale performer.
femaleFemale performer.
groupGroup of performers.
trannyTransgender performer.

TMovableOverlayStatus

Status of the movable overlay.

ValueDescription
activePulsing green.
inactiveGreen.
connectingOrange.
errorRed.

TV1TipData

FieldTypeDescription
amountnumberAmount of tokens spent.
idstringTip id.
isAnonymousbooleanIs anonymous tip or not.
isFromTheCurrentUserbooleanIs tip sent from the current user or not.
isOriginalSourcebooleanIs tip sent from the current extension or not.
messagestring | undefinedMessage that was sent with the tip. Empty string if no message was sent.
sourceTV1TipSourceSource of the tip.
type'private' | 'public'Message visibility: public — visible to everyone in the room; private — visible only to the model.
userTV1ExtUser | null | undefinedUser who sent the tip. Can be null in case of anonymous tip.

TV1TipMenu

Tip menu data.

FieldTypeDescription
isEnabledbooleanWhether tip menu is enabled or not. If it's disabled, the items array will be empty.
itemsTV1TipMenuItem[]The list of tip menu items sorted by the model.

TV1TipMenuItem

Tip menu item defined by the model.

FieldTypeDescription
activitystringActivity name.
pricenumberPrice of the activity for the current user applying all discounts. Discounts can be applied based on the user's fan club membership.

TV1TipSource

Source of a tip. Possible values:

ValueDescription
consoleTip was sent using / command.
tipMenuTip was sent using tip menu.
goalTip was sent via goal button.
epicGoalTip was sent to epic goal.
fullscreenTip was sent from the fullscreen view.
interactiveToyTip was sent from the interactive toy.
publicChatTip was sent using public chat, either in public or group show.
privateChatTip was sent from the private chat, in any type of show.
extensionTip was sent from one of the extensions.
sendTipButtonTip was sent using send tip button.
feedTip was sent from the feed.

TV1TopWindow

Sliding time horizon for v1.storage.top.get. Determines how far back increments are summed.

ValueDescription
TOP_UNSPECIFIEDUnspecified top window value.
TOP_1DLast 24 hours.
TOP_7DLast 7 days.
TOP_30DLast 30 days.

TV1TopIncrementWindowStat

Per-window statistics for a user after calling v1.storage.top.increment.

FieldTypeDescription
valuestringUser's summed total within this window after the increment.
windowTV1TopWindowSliding time horizon (1d, 7d, or 30d).

IV1IntIncrementFailureReason

Failure reason values returned by v1.storage.int.increment when success is false.

ValueDescription
INT_INCREMENT_FAILURE_REASON_UNSPECIFIEDUnspecified failure reason.
INT_INCREMENT_FAILURE_REASON_NONENo failure reason reported.
INT_INCREMENT_FAILURE_REASON_VALIDATION_DENIEDIncrement was rejected by server-side validation.

TV1TopUserEntry

One ranked user in a top counter window.

FieldTypeDescription
metastringAn optional string saved for this increment from that user's latest event.
totalstringSum of increment amounts within the sliding window for this user.
userIdstringUser ID recorded as incrementer.

TV1SessionOther

Session exists, but it belongs to a different extension.

FieldTypeDescription
owner'other'The session exists but belongs to a different extension

TV1SessionSelf

Session exists and belongs to the current extension.

FieldTypeDescription
meta{ sessionId: string; ttlSec: number; }
owner'self'The session exists and belongs to this extension

TV1Session

Discriminated union on owner: TV1SessionSelf | TV1SessionOther.

In runtime API payloads this value can also be null when no session exists.

TV1SessionUpdate

FieldTypeDescription
actionTV1SessionActionType
sessionTV1Session | null
userIdnumber

TV1SessionActionType

Session lifecycle action emitted/used by session-related flows.

ValueDescription
joinJoin-related session update.
finishSession was explicitly finished.

TV1SessionWhisperData

Record<string, unknown>

TV1GoalData

Regular goal data emitted when a goal is completed or returned from v1.goal.get.

FieldTypeDescription
descriptionstringGoal description set by the model.
isCompletedbooleanWhether the goal is fully completed.
tokensTargetnumberTarget amount of tokens required to complete the goal.
tokensCollectednumberAmount of tokens already collected.