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.
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).

TV1UsersFanClub

Discriminated union on isSubscribed: TV1UsersFanClubSubscribed | TV1UsersFanClubNotSubscribed.

TV1UsersFanClubSubscribed

FieldTypeDescription
isSubscribedtrueWhether user is subscribed to the model's fan club or not.
tier'soldier' | 'lord' | 'prince'The tier of the fan club subscription. Could be soldier, lord or prince. The higher the tier, the more benefits the user gets.

TV1UsersFanClubNotSubscribed

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

TV1PaymentData

FieldTypeDescription
amountstringThe amount of tokens spent.
paymentTokenstringPayment token used for authentication.
transactionIdstringTransaction identifier.
userIdstringUser's ID.

TV1ModelStatus

Show status values for the model:

  • public: public broadcast.
  • private: private show.
  • exclusivePrivate: exclusive private show.
  • groupShow: group show.
  • ticketShow: ticket show.
  • idle: in between private/public shows.
  • off: offline.

TV1UserStatus

Show/session status values for the user:

  • public: public broadcast context.
  • private: private show context.
  • exclusivePrivate: exclusive private show context.
  • groupShow: group show context.
  • ticketShow: ticket show context.
  • spy: spying on a private show.
  • off: offline.

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.
inactiveOrange.
connectingGreen.
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'Determins whether tip was sent in public or private chat.
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>