A guide to Muxy MEDKit and GameLink SDK terminology

TermMeaningSee more
AdminA user role that authorizes extension-wide changes which affect all channels running the extension.

Authentication tokens with the admin or backend role have highest-tier access to API routes. The admin user has the same access rights as a backend user, but can be assigned the role in the Muxy Developer Portal.
Set up User Simulation
AggregationA basic technique for scaling up by accumulating data from large numbers of viewers and subjecting the aggregated data to analysis of various kinds, such as ranking the popularity of particular responses.Data Aggregation
AuthenticationProof that a call into the Muxy API comes from a registered extension.

An unauthorized connection to Muxy servers uses a provided Extension Client ID to associate the connection with an extension, so that further calls can be authorized.

Compare authorization.
Register your Extension

Basic Muxy Login Workflow

AuthorizationA connection to Muxy servers that identifies the user operating the connection and allows the appropriate access rights.

Provide a registered Client ID in an unauthorized call to establish a connection and obtain the credentials that authorize all subsequent calls into the Muxy SDK.

The authorization process is handled automatically from within an extension by Twitch and the MEDKit SDK, but must be performed explicitly when using the GameLink library.
Register your Extension

Basic Muxy Login Workflow

BackendThe backend user role authorizes an external server for server-to-server communication with the Muxy server.

The backend user role has the same access rights as admin, but the user must generate their own JWT from a known extension secret.
Communication API
Broadcast messagingA messaging protocol allows bidirectional data flow between extensions and Muxy servers.
Allows game-generated data and events to be communicated back to all viewers of a channel, and viewer-generated events (such as votes or item purchases) to be sent back to the game client.

Messages can be directed at all viewers or a subset (such as subscribers only, or single viewer IDs).

The broadcast messaging system also allows private backchannel communication for coordinating activity among extension instances across channels. Backchannel calls are authorized by a JWT with the backend role.
Communication API

Client-Server Communication
BroadcasterA user who is broadcasting a Muxy-powered Twitch extension.
A JWT with the broadcaster role authorizes the caller to access a greater range of functionality than one with the viewer role.
Set up User Simulation
Client IDTo authenticate your extension to the Muxy server, you must have a valid Twitch Extension Client ID in the Twitch Developer Console, and register it with Muxy.

Once registered, the Twitch Extension Client ID becomes a valid Muxy Client ID.
Register your Extension
Configuration dataThe MEDKit SDK provides two data stores with different scopes for developer-defined data that is expected to be used mainly on extension startup.Data Tracking

Store Configuration Data

Config API

State and Configuration Handling
Data storesThe MEDKit SDK provides tools for defining, storing, and retrieving configuration data and real-time extension state data.Data Tracking
Event handlingIn the GameLink API, event subscriptions and notifications are handled slightly differently in different areas.
- Debugging events report error information in the development environment.
- Datastream events provide generic pub-sub broadcast messaging.
- State and configuration events report activity that affects data stores.
- Polling events report activity in named viewer polls.
- Transaction events report Twitch Bit Transaction activity involving an extension user.
Muxy GameLink Library

Using the WebSocket Protocol
Extension Client IDA unique identifier for a Muxy-powered Twitch extension, created in Twitch and registered with Muxy.

See Client ID, Authentication.
Quick Start for Developers
GameLinkThe GameLink API lets a game developer establish a permanent connection to Muxy backend servers to send and receive real-time data and events.
This allows a game to present channel viewers with up-to-the-second information and instantly respond to in-extension viewer actions.
Muxy GameLink Library

Using the WebSocket Protocol
JWTA JSON Web Token (JWT) is a credential that can grant access to resources. A JWT obtained from the Muxy SDK is associated with a user role that determines the level of access.Authentication

Basic Muxy Login Workflow
MEDKit SDKA JavaScript library for building viewer-facing extensions on Twitch. It uses the MEDKit REST API, which you can also use directly.Developing with MEDKit
PIN authorizationAn authentication/authorization workflow with these steps:

1. A JWT with the broadcaster user role (such as that provided by the extension config and live pages) is used to request a unique authorization PIN code.
2. The PIN is displayed to the user.
3. The user enters the PIN into the game client, which uses the GameLink library to provide credentials for current and future authorization.

The PIN expires when it is used or 5 minutes after being generated.

See also Stored refresh-token authorization.
Generating a PIN

User-entered PIN Authentication

Basic Muxy Login Workflow
PollsThe polling and voting service allows admins or broadcasters to set up and manage user polls that are displayed to all viewers, who can submit votes. The service accumulates votes and sends results in real time to the admin or broadcaster.Polls and User Voting

Poll Management
Refresh tokenA JWT that can be stored and exchanged for a new authorization token when a current authorization token expires.

A refresh token is provided in response to the GameLink authenticate() call, along with a current JWT.

See also Stored refresh-token authorization.
RoleA caller's role (one of viewer, broadcaster, or admin) determines what functionality the caller is entitled to access. For example, an admin or broadcaster can set up and manage a poll, and viewers can submit votes in that poll.

The role of the calling user is encoded in the JWT that authorizes calls. Roles can be simulated in the sandbox environment for testing and debugging.

See also User role.
Set up User Simulation
SandboxA staging area for testing and debugging API calls with simulated authorization.

Data is regularly wiped and the environment is not accessible from a “live” extension.

The MEDKit SDK and GameLink libraries all have methods to switch environments.
Set up User Simulation

Developing in the Sandbox
SDK objectIn the GameLink and MEDKit JavaScript APIs, a singleton instance of the control class that gives you access to all Muxy functionality.SDK Class

Developing with MEDKit
State dataThe MEDKit SDK provides four data stores with different scopes for developer-defined data that is expected to be accessed frequently in real time.Data Tracking

Store Extension and Viewer State

State API

State and Configuration Handling
Stored refresh-token authorizationWhen a user authenticates using the PIN authorization method, the server provides a refresh token. Use this token in subsequent calls to the ‘authenticate()’ method to re-authorize a GameLink connection without requiring user interaction.Generating a PIN

User-entered PIN Authentication

Basic Muxy Login Workflow
TransactionsThe Muxy SDK provides tools for handling Twitch Extension Bits purchases of products that you offer through your extension.
Set up product offers using the Twitch Extension Bits Monetization API.
Transaction Management

Purchase Transactions
Trivia contestsThe trivia service allows admins or broadcasters to set up and manage contests with multiple-choice questions, and viewers to choose answers.Trivia Contests
Trivia Contest Management
Unauthorized callA REST API call that requires no Authorization header, used to obtain authorization credentials for subsequent calls.

An unauthorized call to the pin endpoint must be authenticated with a registered Client ID.

See also PIN authorization.

Basic Muxy Login Workflow
User roleAll connections to Muxy’s servers, whether through GameLink, a backend server, or from a Twitch extension, are associated with a user role that determines access rights. A user's role is encoded in the JWT that authorizes an API call. Access limitations are enforced on the server side.

Access levels range from anonymous viewer with limited access to resources, up to administrative access that can authorize extension-wide changes.
Set up User Simulation
ViewerAn end user of a Muxy-powered Twitch extension.

Calls submitted from a viewer's instance are authorized by a JWT with the viewer role.
Set up User Simulation
Web SocketA messaging protocol for data exchanges between a game or Twitch extension and a Muxy server, using the GameLInk API.Using the WebSocket Protocol