PageSourceSearch

https://docs.muxy.io/docs/quick-start

html muxy.io collected 2026-10-01 14:00:42 UTC 235,181 bytes, 420 lines download raw bytes

1<!DOCTYPE html><html lang="en" style="" data-color-mode="system" class=" useReactApp  "><head><meta charset="utf-8"><link rel="preconnect" href="https://cdn.readme.io"><link rel="preconnect" href="https://cdn.readme.io" crossorigin><meta name="readme-deploy" content="5.906.1"><meta name="readme-subdomain" content="muxy"><meta name="readme-project-flags" content="lyLDtc5ZuTTg9W7lB8oFnQ==:IFIOqPyleL/xo+D9G5hIu0PVSy2eVvBedBbTUz+r4gMEJSKPBJ9q/ZOcjgskKyL8FgJrPLAfd+J08G3TVeDy7ZOn24Fs8vJ+0ZhBrLfXXfjF/NioZEFqtYvYpp3PYpcn"><meta name="readme-version" content="1.0"><title>Quick Start for Developers</title><meta name="description" content="These guides will help you get started with Muxy. You'll be up and running in a jiffy!" data-rh="true"><meta property="og:title" content="Quick Start for Developers" data-rh="true"><meta property="og:description" content="These guides will help you get started with Muxy. You'll be up and running in a jiffy!" data-rh="true"><meta property="og:site_name" content="Muxy"><meta name="twitter:title" content="Quick Start for Developers" data-rh="true"><meta name="twitter:description" content="These guides will help you get started with Muxy. You'll be up and running in a jiffy!" data-rh="true"><meta name="twitter:card" content="summary_large_image"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:image" content="https://cdn.readme.io/og-image/create?type=docs&amp;title=Quick%20Start%20for%20Developers&amp;projectTitle=Muxy&amp;description=These%20guides%20will%20help%20you%20get%20started%20with%20Muxy.%20You'll%20be%20up%20and%20running%20in%20a%20jiffy!&amp;logoUrl=https%3A%2F%2Ffiles.readme.io%2F86e839b-muxy-character.svg&amp;color=%2308938e&amp;variant=light" data-rh="true"><meta name="twitter:image" content="https://cdn.readme.io/og-image/create?type=docs&amp;title=Quick%20Start%20for%20Developers&amp;projectTitle=Muxy&amp;description=These%20guides%20will%20help%20you%20get%20started%20with%20Muxy.%20You'll%20be%20up%20and%20running%20in%20a%20jiffy!&amp;logoUrl=https%3A%2F%2Ffiles.readme.io%2F86e839b-muxy-character.svg&amp;color=%2308938e&amp;variant=light" data-rh="true"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><link id="favicon" rel="shortcut icon" href="https://docs.muxy.io/favicon.ico" type="image/x-icon"><link rel="canonical" href="https://docs.muxy.io/docs/quick-start">
1<script src="https://cdn.readme.io/public/js/cash-dom.min.js?1790786438156"></script>
1<link data-chunk="Footer" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Footer.769aa3e9fc194cc963d9.css">
2<link data-chunk="SuperHub-components-AIDropdown" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/SuperHub-components-AIDropdown.99bc192bac06a6bceec5.css">
3<link data-chunk="RDMD" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/RDMD.159422ed8463cae8cb3f.css">
4<link data-chunk="RDMD" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/2985.fc1b3c92408dc05972b5.css">
5<link data-chunk="routes-Doc" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-Doc.021d4667794d3276e57e.css">
6<link data-chunk="index" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/index.350d8b11e15346229ed8.css">
7<link data-chunk="Header" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Header.b0da985a5b2effd2ad0a.css">
8<link data-chunk="Header" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/ui-styles.1125e39841f99a963bb7.css">
9<link data-chunk="main" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/main.cb7f3f5f00c878e84679.css">
10<link data-chunk="main" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/main.cc789f714ace3
106f66839.js">
11<link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-SuperHub.529e1767765a70259c1d.js">
12<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4011.98c6655a4c5d99e73da8.js">
13<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6269.ec68447c21baa0d006c4.js">
14<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/444.9911d4434036a49d02be.js">
15<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4148.fbcb7b553d8b36a3535f.js">
16<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Header.a76de00df61db59a3b60.js">
17<link data-chunk="index" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7137.6d393781d59245222014.js">
18<link data-chunk="index" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6306.53fe92024e6ceb33b4de.js">
19<link data-chunk="index" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4062.6dae9bdb129de061007d.js">
20<link data-chunk="index" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/3238.45aa2b174eed17f6fa6e.js">
21<link data-chunk="index" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/index.c9757f8bfb66fde2dba4.js">
22<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9977.a933c2a0ee96169ffef7.js">
23<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6146.e0750bc6839fd326854d.js">
24<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/441.0bca8969b4854384884a.js">
25<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/8836.278c0fa83edd766823b0.js">
26<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/5446.66a863132dae0648c54c.js">
27<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1306.50782c5e797f388d05de.js">
28<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/8813.fa11b4c3ec4dd6845870.js">
29<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7358.586fb9797e5f7461750b.js">
30<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9127.bb4d560bc945b6900553.js">
31<link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-Doc.19f639c523519efb3cba.js">
32<link data-chunk="RDMD" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2712.4cdafc1e56a745cc323d.js">
33<link data-chunk="RDMD" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/779.787e23290115569e9f85.js">
34<link data-chunk="RDMD" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/5492.b51cfbe6fdbf46b8de46.js">
35<link data-chunk="RDMD" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/97.5601dd7405fb2adb484c.js">
36<link data-chunk="RDMD" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1297.27dddfa8ccd2dd3bce10.js">
37<link data-chunk="RDMD" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2985.a3c9e5ecc4ac37e1db9b.js">
38<link data-chunk="RDMD" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4071.7611d1296eb10d1ab027.js">
39<link data-chunk="RDMD" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/RDMD.f96e2a08f15009d9c455.js">
40<link data-chunk="SuperHub-components-AIDropdown" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4818.9a6592613ce853a623e4.js">
41<link data-chunk="SuperHub-components-AIDropdown" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/SuperHub-components-AIDropdown.b6b2fa247d03544dffd3.js">
42<link data-chunk="Footer" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/F
42ooter.167664af72797a4cf2f8.js">
43<link data-chunk="main" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/main.cb7f3f5f00c878e84679.css">
44<link data-chunk="Header" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/ui-styles.1125e39841f99a963bb7.css">
45<link data-chunk="Header" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Header.b0da985a5b2effd2ad0a.css">
46<link data-chunk="index" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/index.350d8b11e15346229ed8.css">
47<link data-chunk="routes-Doc" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-Doc.021d4667794d3276e57e.css">
48<link data-chunk="RDMD" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/2985.fc1b3c92408dc05972b5.css">
49<link data-chunk="RDMD" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/RDMD.159422ed8463cae8cb3f.css">
50<link data-chunk="SuperHub-components-AIDropdown" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/SuperHub-components-AIDropdown.99bc192bac06a6bceec5.css">
51<link data-chunk="Footer" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Footer.769aa3e9fc194cc963d9.css"><!-- CUSTOM CSS--><style title="rm-custom-css">:root{--project-color-primary:#08938e;--project-color-inverse:#fff;--recipe-button-color:#08938e;--recipe-button-color-hover:#033231;--recipe-button-color-active:#000202;--recipe-button-color-focus:rgba(8, 147, 142, 0.25);--recipe-button-color-disabled:#70f7f2}[id=enterprise] .ReadMeUI[is=AlgoliaSearch]{--project-color-primary:#08938e;--project-color-inverse:#fff}a{color:var(--color-link-primary,#08938e)}a:hover{color:var(--color-link-primary-darken-5,#033231)}a.text-muted:hover{color:var(--color-link-primary,#08938e)}.btn.btn-primary{background-color:#08938e}.btn.btn-primary:hover{background-color:#033231}.theme-line #hub-landing-top h2{color:#08938e}#hub-landing-top .btn:hover{color:#08938e}.theme-line #hub-landing-top .btn:hover{color:#fff}.theme-solid header#hub-header #header-top{background-color:#08938e}.theme-solid.header-gradient header#hub-header #header-top{background:linear-gradient(to bottom,#08938e,#137e7a)}.theme-solid.header-custom header#hub-header #header-top{background-image:url("undefined")}.theme-line header#hub-header #header-top{border-bottom-color:#08938e}.theme-line header#hub-header #header-top .btn{background-color:#08938e}header#hub-header #header-top #header-logo{width:0;height:0;margin-top:20px;background-image:url("https://files.readme.io/86e839b-muxy-character.svg")}#hub-subheader-parent #hub-subheader .hub-subheader-breadcrumbs .dropdown-menu a:hover{background-color:#08938e}#subheader-links a.active{color:#08938e!important;box-shadow:inset 0 -2px 0 #08938e}#subheader-links a:hover{color:#08938e!important;box-shadow:inset 0 -2px 0 #08938e;opacity:.7}.discussion .submit-vote.submit-vote-parent.voted a.submit-vote-button{background-color:#08938e}section#hub-discuss .discussion a .discuss-body h4{color:#08938e}section#hub-discuss .discussion a:hover .discuss-body h4{color:#033231}#hub-subheader-parent #hub-subheader.sticky-header.sticky{border-bottom-color:#08938e}#hub-subheader-parent #hub-subheader.sticky-header.sticky .search-box{border-bottom-color:#08938e}#hub-search-results h3 em{color:#08938e}.main_background,.tag-item{background:#08938e!important}.main_background:hover{background:#033231!important}.main_color{color:#08938e!important}.border_bottom_main_color{border-bottom:2px solid #08938e}.main_color_hover:hover{color:#08938e!important}section#hub-discuss h1{color:#08938e}#hub-reference .hub-api .api-definition .api-try-it-out.active{border-color:#08938e;background-color:#08938e}#hub-reference .hub-api .api-definition .api-try-it-out.active:hover{background-color:#033231;border-color:#033231}#hub-reference .hub-api .api-definition .api-try-it-out:hover{border-color:#08938e;color:#08938e}#hub-reference .hub-reference .logs .logs-empty .logs-login-button,#hub-reference .hub-reference .logs .logs-login .logs-login-button{background-color:var(--project-color-primary,#08938e);border-color:var(--project-color-primary,#08938e)}#hub-reference .hub-reference .logs .logs-empty .logs-login-button:hover,#hub-reference .hub-reference .logs .logs-login .logs-login-button:hover{background-color:#033231;border-color:#033231}#hub-reference .hub-reference .logs .logs-empty>svg>path,#hub-reference .hub-reference .logs .logs-login>svg>path{fill:#08938e;
51fill:var(--project-color-primary,#08938e)}#hub-reference .hub-reference .logs:last-child .logs-empty,#hub-reference .hub-reference .logs:last-child .logs-login{margin-bottom:35px}#hub-reference .hub-reference .hub-reference-section .hub-reference-left header .hub-reference-edit:hover{color:#08938e}.main-color-accent{border-bottom:3px solid #08938e;padding-bottom:8px}/*! BEGIN HUB_CUSTOM_STYLES *//*! END HUB_CUSTOM_STYLES */</style><meta name="loadedProject" content="muxy">
51<script>(function () {
52  var scheme = 'system';
53  var mode = scheme;
54
55  if (scheme === 'system') {
56    try {
57      mode = window.localStorage.getItem('color-scheme');
58    } catch (e) {
59      // localStorage throws in some privacy modes
60    }
61  }
62
63  // anything else (null on a first visit, a stale poisoned value) falls back to the OS
64  if (mode !== 'light' && mode !== 'dark' && mode !== 'system') mode = 'system';
65
66  document.documentElement.setAttribute('data-color-mode', mode);
67})();</script>
67<script id="config" type="application/json" data-json="{&quot;algoliaIndex&quot;:&quot;readme_search_v2&quot;,&quot;amplitude&quot;:{&quot;apiKey&quot;:&quot;8b550cf334a130e3d6ea41a88b894d8&quot;,&quot;enabled&quot;:&quot;true&quot;,&quot;sessionReplay&quot;:{&quot;enabled&quot;:&quot;true&quot;,&quot;sampleRate&quot;:&quot;0.1&quot;}},&quot;api&quot;:{&quot;upload&quot;:{&quot;fileSizeLimit&quot;:10485760,&quot;fileSizeLimitFormatted&quot;:&quot;10MB&quot;}},&quot;asset_url&quot;:&quot;https://cdn.readme.io&quot;,&quot;dashDomain&quot;:&quot;dash.readme.com&quot;,&quot;domain&quot;:&quot;readme.io&quot;,&quot;domainFull&quot;:&quot;https://dash.readme.com&quot;,&quot;encryptedLocalStorageKey&quot;:&quot;ekfls-2025-03-27&quot;,&quot;fullstory&quot;:{&quot;enabled&quot;:true,&quot;orgId&quot;:&quot;FSV9A&quot;},&quot;git&quot;:{&quot;preview&quot;:&quot;https://githug-prod.gitto.rdme.io&quot;,&quot;sync&quot;:{&quot;bitbucket&quot;:{&quot;installationLink&quot;:&quot;https://developer.atlassian.com/console/install/310151e6-ca1a-4a44-9af6-1b523fea0561?signature=AYABeMn9vqFkrg%2F1DrJAQxSyVf4AAAADAAdhd3Mta21zAEthcm46YXdzOmttczp1cy13ZXN0LTI6NzA5NTg3ODM1MjQzOmtleS83MDVlZDY3MC1mNTdjLTQxYjUtOWY5Yi1lM2YyZGNjMTQ2ZTcAuAECAQB4IOp8r3eKNYw8z2v%2FEq3%2FfvrZguoGsXpNSaDveR%2FF%2Fo0BHUxIjSWx71zNK2RycuMYSgAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDOJgARbqndU9YM%2FRdQIBEIA7unpCah%2BIu53NA72LkkCDhNHOv%2BgRD7agXAO3jXqw0%2FAcBOB0%2F5LmpzB5f6B1HpkmsAN2i2SbsFL30nkAB2F3cy1rbXMAS2Fybjphd3M6a21zOmV1LXdlc3QtMTo3MDk1ODc4MzUyNDM6a2V5LzQ2MzBjZTZiLTAwYzMtNGRlMi04NzdiLTYyN2UyMDYwZTVjYwC4AQICAHijmwVTMt6Oj3F%2B0%2B0cVrojrS8yZ9ktpdfDxqPMSIkvHAGT%2FMTvCxC3XwnwlulZe975AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMMUUe9d1YmFOo373TAgEQgDuJo7TayM6NL19Sj9RPooRrl8rYxwKgvu9gkLNc3GuyyovWI1xA2qTr0LQzMRsf3imrAWsywzPcsjnvuAAHYXdzLWttcwBLYXJuOmF3czprbXM6dXMtZWFzdC0xOjcwOTU4NzgzNTI0MzprZXkvNmMxMjBiYTAtNGNkNS00OTg1LWI4MmUtNDBhMDQ5NTJjYzU3ALgBAgIAeLKa7Dfn9BgbXaQmJGrkKztjV4vrreTkqr7wGwhqIYs5AZR28Sibv2eBxSIg2MydtvEAAAB%2BMHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAzzWhThsIgJwrr%2FY2ECARCAOxoaW9pob21lweyAfrIm6Fw7gd8D%2B%2F8LHk4rl3jjULDM35%2FVPuqBrqKunYZSVCCGNGB3RqpQJr%2FasASiAgAAAAAMAAAQAAAAAAAAAAAAAAAAAEokowLKsF1tMABEq%2BKNyJP%2F%2F%2F%2F%2FAAAAAQAAAAAAAAAAAAAAAQAAADJLzRcp6MkqKR43PUjOiRxxbxXYhLc6vFXEutK3%2BQ71yuPq4dC8pAHruOVQpvVcUSe8dptV8c7wR8BTJjv%2F%2FNe8r0g%3D&amp;product=bitbucket&quot;}}},&quot;hubspot&quot;:{&quot;portalId&quot;:&quot;9401557&quot;},&quot;metrics&quot;:{&quot;billingCronEnabled&quot;:&quot;true&quot;,&quot;dashUrl&quot;:&quot;https://m.readme.io&quot;,&quot;defaultUrl&quot;:&quot;https://m.readme.io&quot;,&quot;exportMaxRetries&quot;:12,&quot;wsUrl&quot;:&quot;wss://m.readme.io&quot;},&quot;micro&quot;:{&quot;baseUrl&quot;:&quot;https://micro-beta.readme.com&quot;},&quot;novuNotification&quot;:{&quot;appId&quot;:&quot;ob_MiAPOPqgP&quot;,&quot;showUnreleasedWorkflows&quot;:false},&quot;proxyUrl&quot;:&quot;https://try.readme.io&quot;,&quot;readmeRecaptchaSiteKey&quot;:&quot;6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x&quot;,&quot;releaseVersion&quot;:&quot;5.906.1&quot;,&quot;reservedWords&quot;:{&quot;tools&quot;:[&quot;execute-request&quot;,&quot;get-endpoint&quot;,&quot;get-server-variables&quot;,&quot;list-endpoints&quot;,&quot;list-specs&quot;,&quot;search-endpoints&quot;,&quot;search&quot;,&quot;fetch&quot;]},&quot;sentry&quot;:{&quot;dsn&quot;:&quot;https://[email protected]/2052166&quot;,&quot;enabled&quot;:true},&quot;shMigration&quot;:{&quot;promoVideo&quot;:&quot;&quot;,&quot;forceWaitlist&quot;:false,&quot;migrationPreview&quot;:false},&quot;sslBaseDomain&quot;:&quot;readmessl.com&quot;,&quot;sslGenerationService&quot;:&quot;ssl.readmessl.com&quot;,&quot;superHub&quot;:{&quot;newProjectsEnabled&quot;:true},&quot;tiptapCloud&quot;:{&quot;appId&quot;:&quot;8mzorjl9&quot;,&quot;url&quot;:&quot;wss://8mzorjl9.collab.tiptap.cloud&quot;},&quot;wootric&quot;:{&quot;accountToken&quot;:&quot;NPS-122b75a4&quot;,&quot;enabled&quot;:true}}"></script>
67</head><body class="body-none theme-solid header-overlay header-bg-size-auto header-bg-pos-tl header-overlay-triangles reference-layout-row lumosity-normal  is-hub-themed"><div style="display:none" aria-hidden="true">For AI agents: visit https://docs.muxy.io/llms.txt for an index of all pages formatted in Markdown and endpoints in OpenAPI. Append .md to any documentation page URL to get its markdown version.</div><div id="ssr-top"></div><div id="ssr-main"><div class="App ThemeContext ThemeContext_dark ThemeContext_classic ThemeContext_spacing_legacy" style="--color-primary:#08938e;--color-primary-inverse:#fff;--color-primary-alt:#137e7a;--color-primary-darken-10:#05635f;--color-primary-darken-20:#033231;--color-primary-alpha-25:rgba(8, 147, 142, 0.25);--color-link-primary:#08938e;--color-link-primary-dark-override:#08938e;--color-link-button:#08938e;--color-link-button-text:#fff;--color-link-button-border:rgba(255, 255, 255, 0.2);--color-link-button-darken-5:#077b77;--color-link-button-darken-10:#05635f;--color-link-button-alpha-50:rgba(8, 147, 142, 0.5);--color-link-button-alpha-25:rgba(8, 147, 142, 0.25);--color-link-primary-darken-5:#077b77;--color-link-primary-darken-10:#05635f;--color-link-primary-darken-20:#033231;--color-link-primary-alpha-50:rgba(8, 147, 142, 0.5);--color-link-primary-alpha-25:rgba(8, 147, 142, 0.25);--color-link-background:rgba(8, 147, 142, 0.09);--color-link-background-dark-override:rgba(8, 147, 142, 0.09);--color-link-text:#fff;--color-tab-active:#08938e;--color-login-link:#08938e;--color-login-link-text:#fff;--color-login-link-darken-10:#05635f;--color-login-link-primary-alpha-50:rgba(8, 147, 142, 0.5)"><div class="ContentWithOwlbotx4PaFDoA1KMz"><div class="ContentWithOwlbot-content2X1XexaN8Lf2"><header class="Header3zzata9F_ZPQ rm-Header_classic rm-Header rm-Header_overlay rm-Header_overlay-triangles"><div class="rm-Header-top Header-topuTMpygDG4e1V Header-top_classic3g7Q6zoBy8zh"><div class="rm-Container rm-Container_flex"><div style="outline:none" tabindex="-1"><a href="#content" target="_self" class="Button Button_md rm-JumpTo Header-jumpTo3IWKQXmhSI5D Button_primary">Jump to Content</a></div><div class="rm-Header-left Header-leftADQdGVqx1wqU"><a class="rm-Logo Header-logo1Xy41PtkzbdG" href="/" target="_self"><img alt="Muxy" class="rm-Logo-img Header-logo-img3YvV4lcGKkeb" src="https://files.readme.io/86e839b-muxy-character.svg"/></a><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="/page/glossary" target="_self">Glossary</a></div><div class="rm-Header-left Header-leftADQdGVqx1wqU Header-left_mobile1RG-X93lx6PF"><div><button aria-label="Toggle navigation menu" class="icon-menu menu3d6DYNDa3tk5" type="button"></button><div class=""><div class="Flyout95xhYIIoTKtc undefined rm-Flyout" data-testid="flyout"><div class="MobileFlyout1hHJpUd-nYkd"><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/" target="_self"><i aria-hidden="true" class="icon-landing-page-2 NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">Home</span></a><a aria-current="page" class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck-  active" href="/docs" target="_self"><i aria-hidden="true" class="icon-guides NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">Guides</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/recipes" target="_self"><i aria-hidden="true" class="icon-recipes NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">Recipes</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/reference" target="_self"><i aria-hidden="true" class="icon-references NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">API Reference</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/changelog" target="_self"><i aria-hidden="true" class="icon-changelog NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">Changelog</span></a><hr class="MobileFlyout-divider10xf7R2X1MeW"/><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="/page/glossary" target="_self">Glossary</a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://dev.muxy.io" rel="noopener" target="_blank" to="https://dev.muxy.io">Muxy Developer Portal</a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://dev.twitch.tv" rel="noopener" target="_blank" to="https://dev.twitch.tv">Twitch Developer Console</a><a class="MobileFlyout-logo3Lq1eTlk1K76 Header-logo1Xy41PtkzbdG rm-Logo" href="/" target="_self"><img alt="Muxy" class="Header-logo-img3YvV4lcGKkeb rm-Logo-img" src="https://files.readme.io/86e839b-muxy-character.svg"/></a></div></div></div></div><div class="Header-left-nav2xWPWMNHOGf_"><i aria-hidden="true" class="icon-guides Header-left-nav-icon10glJKFwewOv"></i>Guides</div></div><div class="rm-Header-right Header-right21PC2XTT6aMg"><span class="Header-right_desktop14ja01RUQ7HE"><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="https://dev.muxy.io" target="_self" to="https://dev.muxy.io">Muxy Developer Portal</a><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="https://dev.twitch.tv" target="_self" to="https://dev.twitch.tv">Twitch Developer Console</a></span><div class="Header-searchtb6Foi0-D9Vx"><button aria-label="Search ⌘k" class="rm-SearchToggle" data-symbol
67="⌘"><div class="rm-SearchToggle-icon icon-search1"></div></button></div><div class="ThemeToggle-wrapper1ZcciJoF3Lq3 Dropdown Dropdown_closed" data-testid="dropdown-container"><button aria-label="Toggle color scheme" class="rm-ThemeToggle ThemeToggle2xLp9tbEJ0XB Button Button_md Button_slate_text Dropdown-toggle" id="ThemeToggle-button-R4macla" type="button" aria-haspopup="dialog"><svg aria-labelledby="ThemeToggle-button-R4macla" class="Icon ThemeToggle-Icon22I6nqvxacln ThemeToggle-Icon_active2ocLaPY47U28" role="img" viewBox="0 0 24 24"><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M12 2v2"></path><path d="M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715"></path><path d="M16 12a4 4 0 0 0-4-4"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="m19 5-1.256 1.256"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M20 12h2"></path></svg><svg aria-labelledby="ThemeToggle-button-R4macla" class="Icon ThemeToggle-Icon22I6nqvxacln ThemeToggle-Icon_dark3c1eP_qTU7uF" role="img" viewBox="0 0 24 24"><path d="M19 14.79C18.8427 16.4922 18.2039 18.1144 17.1582 19.4668C16.1126 20.8192 14.7035 21.8458 13.0957 22.4265C11.4879 23.0073 9.74798 23.1181 8.0795 22.7461C6.41102 22.3741 4.88299 21.5345 3.67423 20.3258C2.46546 19.117 1.62594 17.589 1.25391 15.9205C0.881876 14.252 0.992717 12.5121 1.57346 10.9043C2.1542 9.29651 3.18083 7.88737 4.53321 6.84175C5.8856 5.79614 7.5078 5.15731 9.21 5C8.21341 6.34827 7.73385 8.00945 7.85853 9.68141C7.98322 11.3534 8.70386 12.9251 9.8894 14.1106C11.0749 15.2961 12.6466 16.0168 14.3186 16.1415C15.9906 16.2662 17.6517 15.7866 19 14.79Z"></path><path class="ThemeToggle-Icon-star2kOSzvXrVCbT" d="M18.3707 1C18.3707 3.22825 16.2282 5.37069 14 5.37069C16.2282 5.37069 18.3707 7.51313 18.3707 9.74138C18.3707 7.51313 20.5132 5.37069 22.7414 5.37069C20.5132 5.37069 18.3707 3.22825 18.3707 1Z"></path></svg><svg aria-labelledby="ThemeToggle-button-R4macla" class="Icon ThemeToggle-Icon22I6nqvxacln" role="img" viewBox="0 0 24 24"><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M12 1V3"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M18.36 5.64L19.78 4.22"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M21 12H23"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M18.36 18.36L19.78 19.78"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M12 21V23"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M4.22 19.78L5.64 18.36"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M1 12H3"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M4.22 4.22L5.64 5.64"></path><path d="M12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17Z"></path></svg></button></div></div></div></div><div class="Header-bottom2eLKOFXMEmh5 Header-bottom_classic rm-Header-bottom"><div class="rm-Container rm-Container_flex"><nav aria-label="Primary navigation" class="Header-leftADQdGVqx1wqU Header-subnavnVH8URdkgvEl Header-subnav_links1fSsYMNRxHdu" role="navigation"><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/" target="_self"><i aria-hidden="true" class="icon-landing-page-2 rm-Header-bottom-link-icon"></i><span>Home</span></a><a aria-current="page" class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile  active" href="/docs" target="_self"><i aria-hidden="true" class="icon-guides rm-Header-bottom-link-icon"></i><span>Guides</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/recipes" target="_self"><i aria-hidden="true" class="icon-recipes rm-Header-bottom-link-icon"></i><span>Recipes</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/reference" target="_self"><i aria-hidden="true" class="icon-references rm-Header-bottom-link-icon"></i><span>API Reference</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/changelog" target="_self"><i aria-hidden="true" class="icon-changelog rm-Header-bottom-link-icon"></i><span>Changelog</span></a><div class="Header-subnav-tabyNLkcOA6xAra" style="transform:translateX(0px);width:0"></div></nav><button align="center" justify="between" style="--flex-gap:var(--xs)" class="Button Button_sm Flex Flex_row MobileSubnav1DsTfasXloM2 Button_secondary Button_secondary_outline" type="button"><span class="Button-label">Quick Start for Developers</span><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="chevron-up-down" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m6 16 6 6 6-6M18 8l-6-6-6 6" class="icon-stroke-width"></path></svg></span></button></div></div><div class="hub-search-results--reactApp " id="hub-search-results"><div class="hub-container"><div class="modal-backdrop rm-SearchModal rm-SearchModal_classic" role="button" tabindex="0"></div></div></div></header><main class="rm-Guides"><div class="rm-Container rm-Container_flex"><nav aria-label="Secondary navigation" class="rm-Sidebar hub-sidebar reference-redesign Nav3C5f8FcjkaHj rm-Sidebar_guides" id="hub-sidebar" role="navigation"><div class="Sidebar1t2G1ZJq-vU1 rm-Sidebar hub-sidebar-content"><section class="Sidebar-listWrapper6Q9_yUrG906C Sidebar-listWrapper_expandedvCieTVZJcoub rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Documentation</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 Sidebar-list_expandedWy9fQM8vmtOc rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a aria-current="page" class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link active" target="_self" href="/docs/quick-start"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Quick Start for Developers</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Getting Started with MEDKit</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/getting-started-with-medkit"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Get Started with MEDKit</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent text-wrap rm-Sidebar-link" target="_self" href="/docs/build-a-simple-extension"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">
67Build a Simple Extension</span></span><button aria-expanded="false" aria-label="Show subpages for Build a Simple Extension" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ" type="button"><i aria-hidden="true" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/docs/create-a-viewer-panel"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Create a viewer panel</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/docs/create-a-broadcaster-panel"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Create a broadcaster panel</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/basic-muxy-login-workflow"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Basic Muxy Login Workflow</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/install-manually"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Install Manually</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Development Basics</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/developing-with-medkit"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Developing with MEDKit</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/set-up-user-simulation"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Set up User Simulation</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent text-wrap rm-Sidebar-link" target="_self" href="/docs/data-tracking"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Data Tracking</span></span><button aria-expanded="false" aria-label="Show subpages for Data Tracking" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ" type="button"><i aria-hidden="true" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/docs/state-information"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Store Extension and Viewer State</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/docs/store-configuration-data"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Store Configuration Data</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/docs/arbitrary-state"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Store Arbitrary JSON Data</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/get-viewer-information"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Get Viewer Information</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/call-into-the-twitch-api"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Call into the Twitch API</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/troubleshooting-tips"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Troubleshooting Tips</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Viewer Engagement Techniques</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent text-wrap rm-Sidebar-link" target="_self" href="/docs/data-aggregation-techniques"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Data Aggregation</span></span><button aria-expanded="false" aria-label="Show subpages for Data Aggregation" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ" type="button"><i aria-hidden="true" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/docs/accumulation"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Accumulating User Data</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/docs/ranking"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Ranking User Data</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent text-wrap rm-Sidebar-link" target="_self" href="/docs/viewer-engagement-tools"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Viewer Engagement Tools</span></span><button aria-expanded="false" aria-label="Show subpages for Viewer Engagement Tools" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ" type="button"><i aria-hidden="true" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/docs/voting"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Polls and User Voting</span></span></a></li></ul></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Integrate with Unity</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/unity-gamelink-tutorial"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Unity GameLink Tutorial</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/unity-fps-demo-code-walkthrough"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Unity FPS Demo Code Walkthrough</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/unity-gateway-tutorial"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Unity Gateway Tutorial</span></span></a></li></ul></section><div class="readme-logo" id="readmeLogo">Powered by<!-- --> <a aria-label="ReadMe" href="https://readme.com?ref_src=hub&amp;project=muxy" style="color:unset">
67<svg class="readme-logo-icon" height="50" viewBox="0 0 293 50" width="293"><path d="M114.851 9.35c-9.218 0-15.76 6.482-15.76 15.522 0 9.456 7.196 15.462 16.354 15.462 4.316 0 10.001-1.388 13.158-5.3a1 1 0 0 0-.062-1.345l-2.987-2.942a.978.978 0 0 0-1.37-.01c-2.438 2.415-5.548 3.352-8.382 3.352-4.401 0-8.089-2.438-8.564-7.374h22.231a.492.492 0 0 0 .49-.422c.077-.579.116-1.18.116-1.898 0-4.519-1.606-8.206-4.342-10.882-2.676-2.677-6.482-4.163-10.882-4.163Zm-7.554 12.429c.536-3.985 3.331-6.423 7.375-6.423 2.141 0 3.985.714 5.293 2.082 1.011 1.13 1.784 2.557 2.022 4.34h-14.69ZM286.422 13.513c-2.675-2.676-6.482-4.163-10.882-4.163-9.218 0-15.76 6.482-15.76 15.522 0 9.456 7.196 15.462 16.354 15.462 4.316 0 10.001-1.388 13.159-5.3a1.002 1.002 0 0 0-.062-1.345l-2.988-2.942a.978.978 0 0 0-1.37-.01c-2.437 2.415-5.548 3.352-8.382 3.352-4.401 0-8.088-2.438-8.563-7.374h22.23a.493.493 0 0 0 .491-.422c.076-.579.115-1.18.115-1.897 0-4.52-1.606-8.207-4.342-10.883Zm-18.436 8.266c.536-3.985 3.331-6.423 7.375-6.423 2.141 0 3.985.714 5.293 2.082 1.011 1.13 1.784 2.557 2.022 4.34h-14.69ZM167.264 33.54l.003-.039h-1.541V11.238c0-.682-.552-1.234-1.233-1.234h-4.561c-.682 0-1.234.553-1.234 1.234v2.146c-2.615-2.491-6.119-4.034-10.158-4.034-8.921 0-15.165 6.66-15.165 15.522 0 8.741 6.186 15.462 15.165 15.462 4.579 0 8.087-1.903 10.585-4.757v1.202a2.961 2.961 0 0 0 2.961 2.96h4.987c.681 0 1.234-.552 1.234-1.233v-3.77c0-.614-.456-1.1-1.043-1.196Zm-17.416-.164c-4.876 0-8.385-3.747-8.385-8.504 0-4.817 3.509-8.564 8.385-8.564 4.401 0 8.266 3.092 8.266 8.564 0 5.411-3.865 8.504-8.266 8.504ZM257.585 33.502h-2.222V22.077c0-7.613-4.817-12.727-12.192-12.727-4.459 0-7.909 1.843-10.228 4.58-2.021-2.915-5.293-4.58-9.515-4.58s-7.362 1.808-9.445 4.496v-2.667c0-.681-.552-1.234-1.233-1.234h-4.561c-.682 0-1.234.553-1.234 1.234v26.249a2.312 2.312 0 0 0 2.312 2.311h8.173c.681 0 1.233-.552 1.233-1.233v-3.77c0-.682-.552-1.234-1.233-1.234h-2.218v-10.77c0-3.866 2.497-6.305 6.124-6.305 3.569 0 5.65 2.438 5.65 6.304v14.697a2.312 2.312 0 0 0 2.312 2.311h7.307c.678 0 1.228-.55 1.228-1.228V34.73c0-.678-.55-1.228-1.228-1.228h-1.352v-10.77c0-3.866 2.557-6.304 6.125-6.304s5.709 2.438 5.709 6.304V33.5l.004 3.083v.843a2.311 2.311 0 0 0 2.311 2.312h8.173c.682 0 1.234-.552 1.234-1.234v-3.77c0-.681-.553-1.234-1.234-1.234ZM199.36.005h-6.647c-.681 0-1.233.553-1.233 1.234v3.77c0 .682.552 1.234 1.233 1.234h.353l-.001.007h.99v6.074c-2.438-1.844-5.471-2.974-8.921-2.974-8.919 0-15.164 6.66-15.164 15.522 0 8.741 6.185 15.462 15.164 15.462 4.328 0 7.688-1.712 10.153-4.307v2.478c0 .682.552 1.234 1.233 1.234h4.561c.682 0 1.234-.552 1.234-1.234V34.36l.006-.001V2.966a2.961 2.961 0 0 0-2.961-2.96Zm-12.917 33.371c-4.877 0-8.385-3.747-8.385-8.504 0-4.817 3.508-8.564 8.385-8.564 4.401 0 8.266 3.092 8.266 8.564 0 5.412-3.865 8.504-8.266 8.504ZM54.631 7.158H40.196c-5.072 0-9.307 3.551-10.375 8.3-1.068-4.749-5.304-8.3-10.375-8.3H5.01A5.01 5.01 0 0 0 0 12.168v25.4a5.01 5.01 0 0 0 5.01 5.01h9.579c9.99.031 13.266 2.377 14.844 7.172a.428.428 0 0 0 .388.255.424.424 0 0 0 .387-.255c1.578-4.795 4.854-7.14 14.844-7.171h9.58a5.01 5.01 0 0 0 5.01-5.01V12.167a5.01 5.01 0 0 0-5.01-5.01Zm-29.606 27.21c0 .294-.24.534-.534.534H8.175a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535H24.49c.295 0 .534.24.534.535v2.03Zm0-6.32c0 .294-.24.534-.534.534H8.175a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535H24.49c.295 0 .534.24.534.535v2.03Zm0-6.32c0 .294-.24.534-.534.534H8.175a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535H24.49c.295 0 .534.24.534.535v2.03Zm26.976 12.64c0 .294-.24.534-.535.534H35.151a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535h16.315c.296 0 .535.24.535.535v2.03Zm0-6.32c0 .294-.24.534-.535.534H35.151a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535h16.315c.296 0 .535.24.535.535v2.03Zm0-6.32c0 .294-.24.534-.535.534H35.151a.535.535 0 0 1-.535-.535v-2.03c0-.296.24-.535.535-.535h16.315c.296 0 .535.24.535.535v2.03ZM100.322 10.883c-.967-.651-3.238-1.75-7.368-1.533-3.743.196-6.661 1.963-8.623 5.114v-.594l-.002-.022v-.884a2.96 2.96 0 0 0-2.96-2.961h-6.45c-.68 0-1.233.552-1.233 1.234v3.896c0 .68.553 1.233 1.234 1.233h1.137-.48.664l.002.001h1.367v17.134h-2.216c-.675 0-1.222.547-1.222 1.222v3.794c0 .675.547 1.222 1.222 1.222h12.693c.674 0 1.22-.547 1.22-1.221v-3.795c0-.675-.546-1.222-1.22-1.222h-2.211v-9.759c0-4.163 2.444-6.996 6.363-7.196 1.825-.092 3.115.187 3.906.453.22.075.45-.037.548-.249a16.908 16.908 0 0 1 3.676-5.155.454.454 0 0 0-.048-.712h.
67001Z"></path></svg></a></div></div><button aria-label="Hide sidebar navigation" class="Nav-toggle-collapse39KxgTH727KL" type="button"></button></nav><article class="rm-Article" id="content"><header id="content-head"><div class="row clearfix"><div class="col-xs-9"><h1>Quick Start for Developers</h1><div class="excerpt"><div class="rm-Markdown markdown-body" data-testid="RDMD"><p>These guides will help you get started with Muxy. You&#x27;ll be up and running in a jiffy!</p></div></div></div><div class="col-xs-3"><a class="SuggestEdituoSX2zdYKItO SuggestEdituoSX2zdYKItO suggestEdits rm-SuggestEdit" rel="nofollow" href="/edit/quick-start"><i aria-hidden="true" class="icon icon-edit"></i>Suggest Edits</a></div></div></header><div class="grid-container-fluid" id="content-container"><section class="content-body grid-75 "><div style="display:contents"><div dehydrated="&lt;p&gt;Here in our Quick Start guides you&amp;#x27;ll find examples to help you understand the basics of working with our tools to create fully interactive, engaging Twitch Extensions.&lt;/p&gt;
68&lt;h1 class=&quot;heading heading-1 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;add-muxy-functionality-to-your-twitch-extension&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-add-muxy-functionality-to-your-twitch-extension&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;Add Muxy functionality to your Twitch Extension&lt;/div&gt;&lt;a aria-label=&quot;Skip link to Add Muxy functionality to your Twitch Extension&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#add-muxy-functionality-to-your-twitch-extension&quot;&gt;&lt;/a&gt;&lt;/h1&gt;
69&lt;p&gt;Whether you are a &lt;em&gt;game developer&lt;/em&gt;, an &lt;em&gt;extension writer&lt;/em&gt;, or a &lt;em&gt;streamer&lt;/em&gt;, you can use Muxy-enabled extensions to improve the gaming and viewing experience, promote viewer engagement with interaction and rewards, and monetize your audience. &lt;/p&gt;
70&lt;ul&gt;
71&lt;li&gt;
72&lt;p&gt;If you have an existing Twitch Extension, you can use these steps to register it with Muxy to add functionality and use Muxy services. &lt;/p&gt;
73&lt;/li&gt;
74&lt;li&gt;
75&lt;p&gt;If you don&amp;#x27;t already have one, &lt;strong&gt;create a new Twitch Extension&lt;/strong&gt; in the &lt;a href=&quot;https://dev.twitch.tv&quot; target=&quot;&quot; title=&quot;&quot;&gt;Twitch Developer Console&lt;/a&gt;.&lt;/p&gt;
76&lt;/li&gt;
77&lt;/ul&gt;
78&lt;h2 class=&quot;heading heading-2 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;register-your-extension-with-muxy&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-register-your-extension-with-muxy&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;Register your extension with Muxy&lt;/div&gt;&lt;a aria-label=&quot;Skip link to Register your extension with Muxy&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#register-your-extension-with-muxy&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
79&lt;ol&gt;
80&lt;li&gt;
81&lt;p&gt;In the &lt;a href=&quot;https://dev.twitch.tv&quot; target=&quot;&quot; title=&quot;&quot;&gt;Twitch Developer Console&lt;/a&gt;, look at the &lt;strong&gt;Extension Settings&lt;/strong&gt; and copy the &lt;strong&gt;Extension Client ID&lt;/strong&gt; and &lt;strong&gt;Extension Secret&lt;/strong&gt;.  You will use these to register the extension with Muxy.&lt;/p&gt;
82&lt;/li&gt;
83&lt;li&gt;
84&lt;p&gt;Go to the &lt;a href=&quot;https://dev.muxy.io&quot; target=&quot;&quot; title=&quot;&quot;&gt;Muxy Developer Portal&lt;/a&gt; and click &lt;strong&gt;Register New Extension&lt;/strong&gt;.&lt;/p&gt;
85&lt;/li&gt;
86&lt;li&gt;
87&lt;p&gt;Fill in the &lt;strong&gt;Extension Name&lt;/strong&gt;, &lt;strong&gt;Client ID&lt;/strong&gt;, and &lt;strong&gt;Secret&lt;/strong&gt;.&lt;/p&gt;
88&lt;/li&gt;
89&lt;/ol&gt;
90&lt;blockquote class=&quot;callout callout_warn&quot; theme=&quot;🚧&quot;&gt;&lt;h2 class=&quot;callout-heading&quot;&gt;&lt;span class=&quot;callout-icon&quot;&gt;🚧&lt;/span&gt;&lt;p&gt;Keep the Client ID&lt;/p&gt;&lt;/h2&gt;&lt;p&gt;Store your Client ID where you can find it again-- you will also use it to initialize the MEDKit SDK each time the extension starts up.&lt;/p&gt;&lt;p&gt;Once you have registered your extension, your &lt;em&gt;Twitch Extension Client ID&lt;/em&gt; also serves as your &lt;em&gt;Muxy Client ID&lt;/em&gt;. Every call into the Muxy SDK is authorized by this &lt;button aria-label=&quot;Copy Code&quot; class=&quot;rdmd-code-copy fa&quot;&gt;&lt;/button&gt;&lt;
90code class=&quot;rdmd-code lang- theme-light&quot; data-lang=&quot;&quot; name=&quot;&quot; tabindex=&quot;0&quot;&gt;clientId&lt;/code&gt; value&lt;/p&gt;&lt;/blockquote&gt;
91&lt;h1 class=&quot;heading heading-1 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;first-steps&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-first-steps&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;First Steps&lt;/div&gt;&lt;a aria-label=&quot;Skip link to First Steps&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#first-steps&quot;&gt;&lt;/a&gt;&lt;/h1&gt;
92&lt;blockquote class=&quot;callout callout_okay&quot; theme=&quot;👍&quot;&gt;&lt;h2 class=&quot;callout-heading&quot;&gt;&lt;span class=&quot;callout-icon&quot;&gt;👍&lt;/span&gt;&lt;p&gt;Game Developers&lt;/p&gt;&lt;/h2&gt;&lt;p&gt;If you use the Unreal Engine or Unity game-development environment, add a Muxy-powered experience using integrated Muxy functionality.   &lt;/p&gt;&lt;ul&gt;
93&lt;li&gt;&lt;a href=&quot;#integrate-with-game-development-environments&quot; target=&quot;&quot; title=&quot;&quot;&gt;Integrate with Game-development Environments&lt;/a&gt;&lt;/li&gt;
94&lt;/ul&gt;&lt;/blockquote&gt;
95&lt;blockquote class=&quot;callout callout_info&quot; theme=&quot;📘&quot;&gt;&lt;h2 class=&quot;callout-heading&quot;&gt;&lt;span class=&quot;callout-icon&quot;&gt;📘&lt;/span&gt;&lt;p&gt;Muxy Architecture for Extension Writers and Streamers&lt;/p&gt;&lt;/h2&gt;&lt;p&gt;If you are creating extensions from the ground up, the following guides will help you to get familiar with the form and structure of a Muxy-powered extension.&lt;/p&gt;&lt;/blockquote&gt;
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121&lt;div class=&quot;rdmd-table&quot;&gt;&lt;div class=&quot;rdmd-table-inner&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align:left&quot;&gt;Topic&lt;/th&gt;&lt;th style=&quot;text-align:left&quot;&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/getting-started-with-medkit&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;getting-started-with-medkit&quot;&gt;Get Started with MEDKit&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;Introduction to MEDKit and the Muxy SDK.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/build-a-simple-extension&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;build-a-simple-extension&quot;&gt;Build a Simple Extension&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;Build a &amp;quot;HelloWorld&amp;quot; Muxy extension with JavaScript&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/basic-muxy-login-workflow&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;basic-muxy-login-workflow&quot;&gt;Basic Muxy Login Workflow&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;How your broadcaster logs in to connect to the Muxy server.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/install-manually&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;install-manually&quot;&gt;Install SDK Manually&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;Install and configure MEDKit from a command shell, using npm, node.js, and webpack.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
122&lt;h1 class=&quot;heading heading-1 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;medkit-code-examples&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-med-kit-code-examples&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;MEDKit Code Examples&lt;/div&gt;&lt;a aria-label=&quot;Skip link to MEDKit Code Examples&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#medkit-code-examples&quot;&gt;&lt;/a&gt;&lt;/h1&gt;
123&lt;p&gt;These fully-commented, easy-to-understand code samples showcase how to use the Muxy MEDKit JavaScript SDK for common tasks.&lt;/p&gt;
124&lt;h2 class=&quot;heading heading-2 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;development-basics&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-development-basics&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;Development Basics&lt;/div&gt;&lt;a aria-label=&quot;Skip link to Development Basics&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#development-basics&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
125&lt;p&gt;Learn the basics of developing extensions that take full advantage of Muxy functionality.&lt;/p&gt;
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163&lt;div class=&quot;rdmd-table&quot;&gt;&lt;div class=&quot;rdmd-table-inner&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align:left&quot;&gt;Topic&lt;/th&gt;&lt;th style=&quot;text-align:left&quot;&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/set-up-user-simulation&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;set-up-user-simulation&quot;&gt;Set up User Simulation&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;Simulate users with different &lt;span class=&quot;GlossaryItem-trigger&quot;&gt;user roles&lt;/span&gt; for debugging in the development environment.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/state-information&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;state-information&quot;&gt;Store State Values&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;How to define, store, and retrieve real-time extension and viewer &lt;span class=&quot;GlossaryItem-trigger&quot;&gt;state&lt;/span&gt; values.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/store-configuration-data&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;store-configuration-data&quot;&gt;Store Configuration Data&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;How to define, store, and retrieve extension-configuration values.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/sarbitrary-state&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;sarbitrary-state&quot;&gt;Store Arbitrary State&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;How to define, store, and retrieve any kind of state data.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/get-viewer-information&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;get-viewer-information&quot;&gt;Get Viewer Information&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;How to retrieve information about your extension viewers.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/call-into-the-twitch-api&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;call-into-the-twitch-api&quot;&gt;Call into the Twitch API&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;How to make use of Twitch features in an extension.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/troubleshooting&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;troubleshooting&quot;&gt;Troubleshooting Tips&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;Some hints and tips for avoiding common problems.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
164&lt;h2 class=&quot;heading heading-2 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;viewer-engagement-techniques&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-viewer-engagement-techniques&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;Viewer Engagement Techniques&lt;/div&gt;&lt;a aria-label=&quot;Skip link to Viewer Engagement Techniques&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#viewer-engagement-techniques&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
165&lt;p&gt;These guides provide example code and advice for taking advantage of Muxy functionality in your extensions.&lt;/p&gt;
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183&lt;div class=&quot;rdmd-table&quot;&gt;&lt;div class=&quot;rdmd-table-inner&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align:left&quot;&gt;Topic&lt;/th&gt;&lt;th style=&quot;text-align:left&quot;&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/data-aggregation-techniques&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;data-aggregation-techniques&quot;&gt;Viewer Data Aggregation&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;Introduces techniques and tools for scaling up by aggregating data from many viewers.&lt;br/&gt;&lt;br/&gt;
184Code examples demonstrate &lt;a href=&quot;/docs/accumulation&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;accumulation&quot;&gt;Accumulating User Data&lt;/a&gt; and &lt;a href=&quot;/docs/ranking&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;ranking&quot;&gt;Ranking User Data&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/viewer-engagement-tools&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;viewer-engagement-tools&quot;&gt;Viewer Engagement Tools&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;Tools for creating activities and events that encourage viewer interaction.&lt;br/&gt;&lt;br/&gt;
185Code examples demonstrate how to set up and manage  &lt;a href=&quot;/docs/voting&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;voting&quot;&gt;Polls and User Voting&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
186&lt;h1 class=&quot;heading heading-1 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;integrate-with-game-development-environments&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-integrate-with-game-development-environments&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;Integrate with Game Development Environments&lt;/div&gt;&lt;a aria-label=&quot;Skip link to Integrate with Game Development Environments&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#integrate-with-game-development-environments&quot;&gt;&lt;/a&gt;&lt;/h1&gt;
187&lt;p&gt;Muxy functionality is integrated into Unreal Engine through a &lt;strong&gt;Muxy Plugin&lt;/strong&gt;, and with Unity through a &lt;strong&gt;C# MEDKit SDK&lt;/strong&gt;.&lt;br/&gt;
188These guides help you install the integration tools, and get you started with initialization and implementing functionality.&lt;/p&gt;
189&lt;h2 class=&quot;heading heading-2 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;integrate-muxy-with-an-unreal-engine-game&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-integrate-muxy-with-an-unreal-engine-game&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;Integrate Muxy with an Unreal Engine Game&lt;/div&gt;&lt;a aria-label=&quot;Skip link to Integrate Muxy with an Unreal Engine Game&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#integrate-muxy-with-an-unreal-engine-game&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
190&lt;p&gt;Muxy&amp;#x27;s GameLink SDK is written in C++ and can be integrated into Unreal. See the &lt;a href=&quot;https://github.com/muxy/gamelink-cpp&quot; target=&quot;&quot; title=&quot;&quot;&gt;Github repo&lt;/a&gt; for more information.&lt;/p&gt;
191&lt;h2 class=&quot;heading heading-2 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;integrate-the-c-medkit-sdk-with-a-unity-game&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-integrate-the-c-med-kit-sdk-with-a-unity-game&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;Integrate the C# MEDKit SDK with a Unity Game&lt;/div&gt;&lt;a aria-label=&quot;Skip link to Integrate the C# MEDKit SDK with a Unity Game&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#integrate-the-c-medkit-sdk-with-a-unity-game&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
192&lt;p&gt;For an existing game that uses the Unity engine, add a Muxy-powered experience by installing the &lt;a href=&quot;&quot; target=&quot;&quot; title=&quot;&quot;&gt;C# MEDKit SDK&lt;/a&gt;.&lt;/p&gt;
193
194
195
196
197
198
199
200
201
202
203
204
205
206&lt;div class=&quot;rdmd-table&quot;&gt;&lt;div class=&quot;rdmd-table-inner&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align:left&quot;&gt;Topic&lt;/th&gt;&lt;th style=&quot;text-align:left&quot;&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;/docs/unity-gamelink-tutorial&quot; target=&quot;&quot; title=&quot;&quot; class=&quot;doc-link&quot; data-sidebar=&quot;unity-gamelink-tutorial&quot;&gt;Unity GameLink Tutorial&lt;/a&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left&quot;&gt;This tutorial walks through building a small Unity scene that does GameLink authentication and reacts to a viewer poll.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
207&lt;h1 class=&quot;heading heading-1 header-scroll&quot; align=&quot;&quot;&gt;&lt;div class=&quot;heading-anchor anchor waypoint&quot; id=&quot;learn-more&quot;&gt;&lt;/div&gt;&lt;div class=&quot;heading-text&quot;&gt;&lt;div id=&quot;section-learn-more&quot; class=&quot;heading-anchor_backwardsCompatibility&quot;&gt;&lt;/div&gt;Learn more...&lt;/div&gt;&lt;a aria-label=&quot;Skip link to Learn more...&quot; class=&quot;heading-anchor-icon fa fa-anchor&quot; href=&quot;#learn-more&quot;&gt;&lt;/a&gt;&lt;/h1&gt;
208&lt;ul&gt;
209&lt;li&gt;Download a complete MEDKit extension starter project for Vue.js: &lt;a href=&quot;https://github.com/muxy/medkit-starter-vue&quot; target=&quot;&quot; title=&quot;&quot;&gt;MEDKit Starter Vue&lt;/a&gt;&lt;/li&gt;
210&lt;li&gt;Read up on the Muxy Extension SDK: &lt;a href=&quot;/reference/medkit-rest-api&quot; target=&quot;&quot; title=&quot;&quot;&gt;Using the MEDKit REST API&lt;/a&gt; &lt;/li&gt;
211&lt;li&gt;Hit us up with any issues at &lt;a href=&quot;[email protected]&quot; target=&quot;&quot; title=&quot;&quot;&gt;[email protected]&lt;/a&gt;&lt;/li&gt;
212&lt;/ul&gt;" style="margin-left:31px" class="rm-Markdown markdown-body rm-Markdown markdown-body ng-non-bindable" data-testid="RDMD"><p>Here in our Quick Start guides you&#x27;ll find examples to help you understand the basics of working with our tools to create fully interactive, engaging Twitch Extensions.</p>
213<h1 class="heading heading-1 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="add-muxy-functionality-to-your-twitch-extension"></div><div class="heading-text"><div id="section-add-muxy-functionality-to-your-twitch-extension" class="heading-anchor_backwardsCompatibility"></div>Add Muxy functionality to your Twitch Extension</div><a aria-label="Skip link to Add Muxy functionality to your Twitch Extension" class="headi
213ng-anchor-icon fa fa-anchor" href="#add-muxy-functionality-to-your-twitch-extension"></a></h1>
214<p>Whether you are a <em>game developer</em>, an <em>extension writer</em>, or a <em>streamer</em>, you can use Muxy-enabled extensions to improve the gaming and viewing experience, promote viewer engagement with interaction and rewards, and monetize your audience. </p>
215<ul>
216<li>
217<p>If you have an existing Twitch Extension, you can use these steps to register it with Muxy to add functionality and use Muxy services. </p>
218</li>
219<li>
220<p>If you don&#x27;t already have one, <strong>create a new Twitch Extension</strong> in the <a target="_self" href="https://dev.twitch.tv">Twitch Developer Console</a>.</p>
221</li>
222</ul>
223<h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="register-your-extension-with-muxy"></div><div class="heading-text"><div id="section-register-your-extension-with-muxy" class="heading-anchor_backwardsCompatibility"></div>Register your extension with Muxy</div><a aria-label="Skip link to Register your extension with Muxy" class="heading-anchor-icon fa fa-anchor" href="#register-your-extension-with-muxy"></a></h2>
224<ol>
225<li>
226<p>In the <a target="_self" href="https://dev.twitch.tv">Twitch Developer Console</a>, look at the <strong>Extension Settings</strong> and copy the <strong>Extension Client ID</strong> and <strong>Extension Secret</strong>.  You will use these to register the extension with Muxy.</p>
227</li>
228<li>
229<p>Go to the <a target="_self" href="https://dev.muxy.io">Muxy Developer Portal</a> and click <strong>Register New Extension</strong>.</p>
230</li>
231<li>
232<p>Fill in the <strong>Extension Name</strong>, <strong>Client ID</strong>, and <strong>Secret</strong>.</p>
233</li>
234</ol>
235<blockquote class="callout callout_warn" theme="🚧"><h2 class="callout-heading"><span class="callout-icon">🚧</span><p>Keep the Client ID</p></h2><p>Store your Client ID where you can find it again-- you will also use it to initialize the MEDKit SDK each time the extension starts up.</p><p>Once you have registered your extension, your <em>Twitch Extension Client ID</em> also serves as your <em>Muxy Client ID</em>. Every call into the Muxy SDK is authorized by this <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">clientId</code> value</p></blockquote>
236<h1 class="heading heading-1 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="first-steps"></div><div class="heading-text"><div id="section-first-steps" class="heading-anchor_backwardsCompatibility"></div>First Steps</div><a aria-label="Skip link to First Steps" class="heading-anchor-icon fa fa-anchor" href="#first-steps"></a></h1>
237<blockquote class="callout callout_okay" theme="👍"><h2 class="callout-heading"><span class="callout-icon">👍</span><p>Game Developers</p></h2><p>If you use the Unreal Engine or Unity game-development environment, add a Muxy-powered experience using integrated Muxy functionality.   </p><ul>
238<li><a target="_self" href="#integrate-with-game-development-environments">Integrate with Game-development Environments</a></li>
239</ul></blockquote>
240<blockquote class="callout callout_info" theme="📘"><h2 class="callout-heading"><span class="callout-icon">📘</span><p>Muxy Architecture for Extension Writers and Streamers</p></h2><p>If you are creating extensions from the ground up, the following guides will help you to get familiar with the form and structure of a Muxy-powered extension.</p></blockquote>
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266<div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Topic</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><a target="_self" href="/docs/getting-started-with-medkit">Get Started with MEDKit</a></td><td style="text-align:left">Introduction to MEDKit and the Muxy SDK.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/build-a-simple-extension">Build a Simple Extension</a></td><td style="text-align:left">Build a &quot;HelloWorld&quot; Muxy extension with JavaScript</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/basic-muxy-login-workflow">Basic Muxy Login Workflow</a></td><td style="text-align:left">
266How your broadcaster logs in to connect to the Muxy server.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/install-manually">Install SDK Manually</a></td><td style="text-align:left">Install and configure MEDKit from a command shell, using npm, node.js, and webpack.</td></tr></tbody></table></div></div>
267<h1 class="heading heading-1 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="medkit-code-examples"></div><div class="heading-text"><div id="section-med-kit-code-examples" class="heading-anchor_backwardsCompatibility"></div>MEDKit Code Examples</div><a aria-label="Skip link to MEDKit Code Examples" class="heading-anchor-icon fa fa-anchor" href="#medkit-code-examples"></a></h1>
268<p>These fully-commented, easy-to-understand code samples showcase how to use the Muxy MEDKit JavaScript SDK for common tasks.</p>
269<h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="development-basics"></div><div class="heading-text"><div id="section-development-basics" class="heading-anchor_backwardsCompatibility"></div>Development Basics</div><a aria-label="Skip link to Development Basics" class="heading-anchor-icon fa fa-anchor" href="#development-basics"></a></h2>
270<p>Learn the basics of developing extensions that take full advantage of Muxy functionality.</p>
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308<div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Topic</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><a target="_self" href="/docs/set-up-user-simulation">Set up User Simulation</a></td><td style="text-align:left">Simulate users with different <span class="GlossaryItem-trigger">user roles</span> for debugging in the development environment.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/state-information">Store State Values</a></td><td style="text-align:left">How to define, store, and retrieve real-time extension and viewer <span class="GlossaryItem-trigger">state</span> values.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/store-configuration-data">Store Configuration Data</a></td><td style="text-align:left">How to define, store, and retrieve extension-configuration values.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/sarbitrary-state">Store Arbitrary State</a></td><td style="text-align:left">How to define, store, and retrieve any kind of state data.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/get-viewer-information">Get Viewer Information</a></td><td style="text-align:left">How to retrieve information about your extension viewers.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/call-into-the-twitch-api">Call into the Twitch API</a></td><td style="text-align:left">How to make use of Twitch features in an extension.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/troubleshooting">Troubleshooting Tips</a></td><td style="text-align:left">Some hints and tips for avoiding common problems.</td></tr></tbody></table></div></div>
309<h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="viewer-engagement-techniques"></div><div class="heading-text"><div id="section-viewer-engagement-techniques" class="heading-anchor_backwardsCompatibility"></div>Viewer Engagement Techniques</div><a aria-label="Skip link to Viewer Engagement Techniques" class="heading-anchor-icon fa fa-anchor" href="#viewer-engagement-techniques"></a></h2>
310<p>These guides provide example code and advice for taking advantage of Muxy functionality in your extensions.</p>
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328<div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Topic</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><a target="_self" href="/docs/data-aggregation-techniques">Viewer Data Aggregation</a></td><td style="text-align:left">Introduces techniques and tools for scaling up by aggregating data from many viewers.<br/><br/>
329Code examples demonstrate <a target="_self" href="/docs/accumulation">Accumulating User Data</a> and <a target="_self" href="/docs/ranking">Ranking User Data</a>.</td></tr><tr><td style="text-align:left"><a target="_self" href="/docs/viewer-engagement-tools">Viewer Engagement Tools</a></td><td style="text-align:left">Tools for creating activities and events that encourage viewer interaction.<br/><br/>
330Code examples demonstrate how to set up and manage  <a target="_self" href="/docs/voting">Polls and User Voting</a>.</td></tr></tbody></table></div></div>
331<h1 class="heading heading-1 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="integrate-with-game-development-environments"></div><div class="heading-text"><div id="section-integrate-with-game-development-environments" class="heading-anchor_backwardsCompatibility"></div>Integrate with Game Development Environments</div><a aria-label="Skip link to Integrate with Game Development Environments" class="heading-anchor-icon fa fa-anchor" href="#integrate-with-game-development-environments"></a></h1>
332<p>Muxy functionality is integrated into Unreal Engine through a <strong>Muxy Plugin</strong>, and with Unity through a <strong>C# MEDKit SDK</strong>.<br/>
333These guides help you install the integration tools, and get you started with initialization and implementing functionality.</p>
334<h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="integrate-muxy-with-an-unreal-engine-game"></div><div class="heading-text">
334<div id="section-integrate-muxy-with-an-unreal-engine-game" class="heading-anchor_backwardsCompatibility"></div>Integrate Muxy with an Unreal Engine Game</div><a aria-label="Skip link to Integrate Muxy with an Unreal Engine Game" class="heading-anchor-icon fa fa-anchor" href="#integrate-muxy-with-an-unreal-engine-game"></a></h2>
335<p>Muxy&#x27;s GameLink SDK is written in C++ and can be integrated into Unreal. See the <a target="_self" href="https://github.com/muxy/gamelink-cpp">Github repo</a> for more information.</p>
336<h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="integrate-the-c-medkit-sdk-with-a-unity-game"></div><div class="heading-text"><div id="section-integrate-the-c-med-kit-sdk-with-a-unity-game" class="heading-anchor_backwardsCompatibility"></div>Integrate the C# MEDKit SDK with a Unity Game</div><a aria-label="Skip link to Integrate the C# MEDKit SDK with a Unity Game" class="heading-anchor-icon fa fa-anchor" href="#integrate-the-c-medkit-sdk-with-a-unity-game"></a></h2>
337<p>For an existing game that uses the Unity engine, add a Muxy-powered experience by installing the <a target="_self" href="">C# MEDKit SDK</a>.</p>
338
339
340
341
342
343
344
345
346
347
348
349
350
351<div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Topic</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><a target="_self" href="/docs/unity-gamelink-tutorial">
351Unity GameLink Tutorial</a></td><td style="text-align:left">This tutorial walks through building a small Unity scene that does GameLink authentication and reacts to a viewer poll.</td></tr></tbody></table></div></div>
352<h1 class="heading heading-1 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="learn-more"></div><div class="heading-text"><div id="section-learn-more" class="heading-anchor_backwardsCompatibility"></div>Learn more...</div><a aria-label="Skip link to Learn more..." class="heading-anchor-icon fa fa-anchor" href="#learn-more"></a></h1>
353<ul>
354<li>Download a complete MEDKit extension starter project for Vue.js: <a target="_self" href="https://github.com/muxy/medkit-starter-vue">MEDKit Starter Vue</a></li>
355<li>Read up on the Muxy Extension SDK: <a target="_self" href="/reference/medkit-rest-api">Using the MEDKit REST API</a> </li>
356<li>Hit us up with any issues at <a target="_self" href="[email protected]"><span class="__cf_email__" data-cfemail="b1c2c4c1c1dec3c5f1dcc4c9c89fd8de">[email&#160;protected]</span></a></li>
357</ul></div></div><div class="UpdatedAt"><p class="DateLine "><i class="icon icon-watch"></i>Updated<!-- --> <!-- -->over 3 years ago<!-- --> </p></div><hr class="NextStepsDivider"/><div class="WhatsNext-wrapper3DTnpcPqKoHg"><h3 class="WhatsNext-headingQHN33r4trf_s">What’s Next</h3><div class="rm-Markdown markdown-body WhatsNext-description1zZyZLPCGmaa WhatsNext-description_empty1Hh8M1AKGhbW" data-testid="RDMD"></div><div><ul class="WhatsNext-linksList1JRB1wx6wknu"><li class="WhatsNext-linksList-item2xYYdc81UL_o"><a class="WhatsNext-linksList-item-link39fwT8vmPxYV" target="_self" href="/docs/getting-started-with-medkit">Get Started with MEDKit</a><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a icon" data-name="arrow-right" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5 12h14M12 5l7 7-7 7" class="icon-stroke-width"></path></svg></span></li><li class="WhatsNext-linksList-item2xYYdc81UL_o"><a class="WhatsNext-linksList-item-link39fwT8vmPxYV" target="_self" href="/docs/build-a-simple-extension">Build a Simple Extension</a><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a icon" data-name="arrow-right" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5 12h14M12 5l7 7-7 7" class="icon-stroke-width"></path></svg></span></li></ul></div></div></section><section class="content-toc grid-25 rm-Aside rm-Aside_line "><div class="AIDropdownzmvdRdsNayZl rm-AIDropdown"><button class="Button Button_sm AIDropdown-splitButton2KQ9N2VEvBcT AIDropdown-splitButton_left2tTf2UmhJFyZ Button_secondary_ghost Button_secondary" type="button"><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="copy" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M20 9h-9a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2Z" class="icon-stroke-width"></path><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" class="icon-stroke-width"></path></svg></span><span>Copy Page</span></button><div class="Dropdown Dropdown_closed" data-testid="dropdown-container"><button aria-haspopup="dialog" class="Button Button_sm AIDropdown-splitButton2KQ9N2VEvBcT AIDropdown-splitButton_rightW_JEw7Q1_yEG Dropdown-toggle Button_secondary_ghost Button_secondary" type="button"><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="chevron-down" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m6 9 6 6 6-6" class="icon-stroke-width"></path></svg></span></button></div></div><nav><ul class="toc-list"><li><a class="tocHeader" href="#"><i class="icon icon-text-align-left"></i>Table of Contents</a></li><li class="toc-children"><ul>
358<li>
359<a href="#add-muxy-functionality-to-your-twitch-extension">Add Muxy functionality to your Twitch Extension</a>
360<ul>
361<li><a href="#register-your-extension-with-muxy">Register your extension with Muxy</a></li>
362</ul>
363</li>
364<li>
365<a href="#first-steps">First Steps</a>
366</li>
367<li>
368<a href="#medkit-code-examples">MEDKit Code Examples</a>
369<ul>
370<li><a href="#development-basics">Development Basics</a></li>
371<li><a href="#viewer-engagement-techniques">Viewer Engagement Techniques</a></li>
372</ul>
373</li>
374<li>
375<a href="#integrate-with-game-development-environments">Integrate with Game Development Environments</a>
376<ul>
377<li><a href="#integrate-muxy-with-an-unreal-engine-game">Integrate Muxy with an Unreal Engine Game</a></li>
378<li><a href="#integrate-the-c-medkit-sdk-with-a-unity-game">Integrate the C# MEDKit SDK with a Unity Game</a></li>
379</ul>
380</li>
381<li>
382<a href="#learn-more">Learn more...</a>
383</li>
384</ul></li></ul></nav></section></div><div class="ModalWrapper" id="tutorialmodal-root"></div></article></div></main><footer aria-label="Status banner" class="Footer2U8XAPoGhlgO AppFooter rm-Banners"></footer><div class="ModalWrapper" id="ChatGPT-modal"></div></div></div></div></div><div class="ng-non-bindable">
vendor: 108 bytes, line 384
384<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
384<script id="ssr-props" type="application/x-ssr-props">{"sidebars":{"docs":[{"_id":"613fc7f5dd51cf00370862ad","title":"Documentation","slug":"documentation","order":0,"reference":false,"isAPI":false,"version":"613fc7f5dd51cf00370862ab","project":"613fc7f5dd51cf00370862a6","createdAt":"2021-09-13T21:51:49.324Z","__v":0,"pages":[{"_id":"613fc7f5dd51cf00370862b6","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"Quick Start for Developers","type":"basic","slug":"quick-start","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"getting-started","category":"613fc7f5dd51cf00370862ad","createdAt":"2021-09-13T21:51:49.404Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"614219fcf4529b005bd1d5d4","title":"Getting Started with MEDKit","slug":"getting-started-with-medkit","order":1,"reference":false,"isAPI":false,"project":"613fc7f5dd51cf00370862a6","version":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-15T16:06:20.807Z","__v":0,"pages":[{"_id":"61412f8a8c62210060b3c8a5","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Get Started with MEDKit","type":"basic","slug":"getting-started-with-medkit","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-14T23:26:02.373Z","parentDoc":null,"category":"614219fcf4529b005bd1d5d4","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"61422afc847b3b000f141780","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Build a Simple Extension","type":"basic","slug":"build-a-simple-extension","order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T17:18:52.831Z","parentDoc":null,"category":"614219fcf4529b005bd1d5d4","deprecated":false,"isBodyEmpty":false,"children":[{"_id":"61421f6428e88100464744f9","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Create a viewer panel","type":"basic","slug":"create-a-viewer-panel","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:29:24.362Z","parentDoc":"61422afc847b3b000f141780","category":"614219fcf4529b005bd1d5d4","isBodyEmpty":false,"children":[]},{"_id":"61421f58d796430080acc33f","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Create a broadcaster panel","type":"basic","slug":"create-a-broadcaster-panel","order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:29:12.998Z","parentDoc":"61422afc847b3b000f141780","category":"614219fcf4529b005bd1d5d4","isBodyEmpty":false,"children":[]}]},{"_id":"61421f8cdac85000489027fb","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Basic Muxy Login Workflow","type":"basic","slug":"basic-muxy-login-workflow","order":2,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:30:04.672Z","category":"614219fcf4529b005bd1d5d4","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"61421f0d485dbe0044595079","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Install Manually","type":"basic","slug":"install-manually","order":3,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:27:57.851Z","category":"614219fcf4529b005bd1d5d4","parentDoc":null,"isBodyEmpty":false,"children":[]}]},{"_id":"61421eafb139b600324fffe0","title":"Development Basics","slug":"development-basics","order":5,"reference":false,"isAPI":false,"project":"613fc7f5dd51cf00370862a6","version":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-15T16:26:23.238Z","__v":0,"pages":[{"_id":"6142216fe84906002f46d71d","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Developing with MEDKit","type":"basic","slug":"developing-with-medkit","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:38:07.818Z","category":"61421eafb139b600324fffe0","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"614221a4d645970069812ef1","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Set up User Simulation","type":"basic","slug":"set-up-user-simulation","order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"set-up-debugging-for-development","createdAt":"2021-09-15T16:39:00.053Z","parentDoc":null,"category":"61421eafb139b600324fffe0","deprecated":false,"icon":"","
384isBodyEmpty":false,"children":[]},{"_id":"6182eed16daa58001041f06e","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Data Tracking","type":"basic","slug":"data-tracking","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-11-03T20:19:29.245Z","category":"61421eafb139b600324fffe0","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"61422227ed22fd004fe03175","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Store Extension and Viewer State","type":"basic","slug":"state-information","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"retrieve-and-use-state-information-1","createdAt":"2021-09-15T16:41:11.675Z","category":"61421eafb139b600324fffe0","parentDoc":"6182eed16daa58001041f06e","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"6182ef31cf629d004f381c31","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Store Configuration Data","type":"basic","slug":"store-configuration-data","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-11-03T20:21:05.803Z","parentDoc":"6182eed16daa58001041f06e","category":"61421eafb139b600324fffe0","isBodyEmpty":false,"children":[]},{"_id":"6142223ceb4790000ffea5b6","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Store Arbitrary JSON Data","type":"basic","slug":"arbitrary-state","order":2,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"store-arbitrary-state","createdAt":"2021-09-15T16:41:32.362Z","parentDoc":"6182eed16daa58001041f06e","category":"61421eafb139b600324fffe0","deprecated":false,"isBodyEmpty":false,"children":[]}]},{"_id":"61422278d645970069812f2a","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Get Viewer Information","type":"basic","slug":"get-viewer-information","order":3,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"work-with-viewer-information","createdAt":"2021-09-15T16:42:32.275Z","category":"61421eafb139b600324fffe0","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"6142228d546c63004953fdef","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Call into the Twitch API","type":"basic","slug":"call-into-the-twitch-api","order":4,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:42:53.407Z","category":"61421eafb139b600324fffe0","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"6154d55dbe1a280010408f03","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Troubleshooting Tips","type":"basic","slug":"troubleshooting-tips","order":5,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-29T21:06:37.033Z","category":"61421eafb139b600324fffe0","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[]}]},{"_id":"61421eb8de0687000fc740f9","title":"Viewer Engagement Techniques","slug":"aggregation-techniques","order":6,"reference":false,"isAPI":false,"project":"613fc7f5dd51cf00370862a6","version":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-15T16:26:32.567Z","__v":0,"pages":[{"_id":"614222e568d1cf044d76df3f","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Data Aggregation","type":"basic","slug":"data-aggregation-techniques","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:44:21.075Z","category":"61421eb8de0687000fc740f9","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[{"_id":"614222fa5f0d11001f298298","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Accumulating User Data","type":"basic","slug":"accumulation","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:44:42.330Z","parentDoc":"614222e568d1cf044d76df3f","category":"61421eb8de0687000fc740f9","isBodyEmpty":false,"children":[]},{"_id":"61422316dd9c2d00125eadbd","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Ranking User Data","type":"basic","slug":"ranking","order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:45:10.825Z","category":"61421eb8de0687000fc740f9","parentDoc":"614222e568d1cf044d76df3f","deprecated":false,"isBodyEmpty":false,"children":[]}]},{"_id":"61a692c1d77ac00032e02dfb","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Viewer Engagement Tools","type":"basic","slug":"viewer-engagement-tools","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-11-30T21:08:17.617Z","category":"61421eb8de0687000fc740f9","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"6142230b9f92c80048ae3423","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Polls and User Voting","type":"basic","slug":"voting","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-15T16:44:59.654Z","parentDoc":"61a692c1d77ac00032e02dfb","category":"61421eb8de0687000fc740f9","deprecated":false,"isBodyEmpty":false,"children":[]}]}]},{"_id":"615498dfe23868000fe078f0","title":"Integrate with Unity","slug":"integrate-with-unity","order":9,"reference":false,"isAPI":false,"project":"613fc7f5dd51cf00370862a6","version":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-29T16:48:31.835Z","__v":0,"pages":[{"_id":"616f40e64c3cef0010a0a9f1","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Unity GameLink Tutorial","type":"basic","slug":"unity-gamelink-tutorial","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-10-19T22:04:22.028Z","category":"615498dfe23868000fe078f0","parentDoc":null,"icon":"","
384isBodyEmpty":false,"children":[]},{"_id":"620e78a6b2a9fa02c7affdb3","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Unity FPS Demo Code Walkthrough","type":"basic","slug":"unity-fps-demo-code-walkthrough","order":999,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"intro","createdAt":"2022-02-17T16:32:38.194Z","category":"615498dfe23868000fe078f0","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"6421b0b80f8680004367cffd","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Unity Gateway Tutorial","icon":"","type":"basic","slug":"unity-gateway-tutorial","order":999,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"615498dfe23868000fe078f0","createdAt":"2023-03-27T15:05:28.051Z","isBodyEmpty":false,"children":[]}]}],"refs":[{"_id":"6140c2ea9ed947004d5565d5","title":"REST API","slug":"rest-api","order":2,"reference":true,"isAPI":true,"project":"613fc7f5dd51cf00370862a6","version":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-14T15:42:34.102Z","__v":0,"pages":[{"_id":"6140c2ea9ed947004d5565d6","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"Using the MEDKit REST API","type":"basic","slug":"medkit-rest-api","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"getting-started-with-your-api-1","category":"6140c2ea9ed947004d5565d5","createdAt":"2021-09-14T15:42:34.130Z","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"6140bfba91b2a300292d7d61","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"Developing in the Sandbox","type":"basic","slug":"dev-auth","order":1,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"getting-started-with-your-api-2","category":"6140c2ea9ed947004d5565d5","createdAt":"2021-09-14T15:28:58.798Z","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[{"_id":"6140c0e1fb53f8005b2e1738","api":{"method":"post","url":"/authtoken","auth":"never","results":{"codes":[{"name":"","code":"{\n  // If a single `user_id` is provided\n  \"token\": \"\u003cjwt valid for sandbox environment>\"\n}","language":"json","status":200},{"code":"{\n  // if `user_ids` is provided\n  \"tokens\": [\"\u003cvalid sandbox jwt>\", \"\u003cvalid sandbox jwt>\", ...]\n}","language":"json","status":200},{"code":"JSON parsing error on body request","language":"text","status":400},{"code":"No such extension found","language":"text","status":400}]},"params":[{"name":"extension_id","type":"string","enumValues":"","default":"","desc":"The Client ID for the extension. A Twitch Extension Client ID that has been registered with Muxy. See [Quick Start](https://docs.muxy.io/docs/quick-start) for details.","required":false,"in":"body","ref":"","_id":"6140c0e1fb53f8005b2e173d"},{"name":"channel_id","type":"string","enumValues":"","default":"","desc":"The Twitch Channel ID to simulate","required":false,"in":"body","ref":"","_id":"6140c0e1fb53f8005b2e173c"},{"name":"user_id","type":"string","enumValues":"","default":"","desc":"A single Twitch User ID. When role is \"broadcaster\", must match `channel_id`. To request multiple JWTs, use `user_ids` instead.","required":false,"in":"body","ref":"","_id":"6140c0e1fb53f8005b2e173b"},{"name":"role","type":"string","enumValues":"","default":"","desc":"The user role. One of \"viewer\", \"broadcaster\", \"admin\"","required":false,"in":"body","ref":"","_id":"6140c0e1fb53f8005b2e173a"},{"name":"user_ids","type":"array_string","enumValues":"","default":"","desc":"A set of Twitch user IDs. Use instead of `user_id` to request multiple JWTs with the same role.","required":false,"in":"body","ref":"","_id":"6140c0e1fb53f8005b2e1739"}],"examples":{"codes":[]},"apiSetting":"6140bfba91b2a300292d7d5e"},"title":"Authorization for Testing","type":"endpoint","slug":"try-sandbox-auth","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"authorization","createdAt":"2021-09-14T15:33:53.576Z","category":"6140c2ea9ed947004d5565d5","parentDoc":"6140bfba91b2a300292d7d61","deprecated":false,"isBodyEmpty":true,"children":[]}]},{"_id":"6169e910ba1021007fff9921","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Config API","type":"basic","slug":"config-api","order":3,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-10-15T20:48:16.364Z","category":"6140c2ea9ed947004d5565d5","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"6169ea45fa9c80005c9edc5b","api":{"method":"get","url":"/config","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"channel\": {}, // Object containing the per-channel config data \n  \"extension\": {} // Object containing the global extension config data\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/config \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json'","language":"curl"},{"code":"const medkit = new Muxy.SDK();\nawait medkit.loaded();\n\nconst config = medkit.getConfig();","language":"javascript"},{"code":"type ExtensionConfig = {\n  enablePurchases?: Boolean;\n};\ntype ChannelConfig = {\n  itemAmount?: Number;\n};\ntype Config = {\n  channel: ChannelConfig;\n  extension: ExtensionConfig;\n};\n\nconst medkit = new Muxy.SDK();\nawait medkit.loaded();\n\nconst config = medkit.getConfig\u003cConfig>();\nconsole.log(config.channel.itemAmount || 100);","language":"typescript"}]}},"title":"All Config","type":"endpoint","slug":"extension-config","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-10-15T20:53:25.241Z","parentDoc":"6169e910ba1021007fff9921","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169eb1139541f00468cc643","api":{"method":"get","url":"/config/extension","auth":"required","results":{"codes":[{"name":"","code":"{\n  // Developer-defined global configuration data for the extension\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/config/extension \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json'","language":"curl","name":"Request global config data"},{"code":"const medkit = new Muxy.SDK();\nawait medkit.loaded();\n\nconst config = medkit.getExtensionConfig();","language":"javascript"}]}},"title":"Extension Config","type":"endpoint","slug":"extension-config-1","order":1,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6169e910ba1021007fff9921","createdAt":"2021-10-15T20:56:49.455Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169eb6ed27fb50010b80b77","api":{"method":"post","url":"/config/extension","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"release_date\": \"2021-10-31\"\n}","language":"json","status":200},{"name":"","code":"Malformed input body","language":"text","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"Accepts arbitrary JSON data","required":true,"in":"body","ref":"","_id":"614123c56c94c7001675b061"}],"examples":{"codes":[{"code":"curl --request POST \\\n  --url https://sandbox.api.muxy.io/v1/e/config/extension \\\n  --header 'authorization: \u003cClient ID> \u003cadmin or backend JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '{ \"release_date\": \"2021-10-31\" }'","language":"curl"},{"code":"const medkit = new Muxy.SDK();\nawait medkit.loaded();\n\nconst state = medkit.setChannelConfig({\n  \"release_date\": \"2021-10-31\"\n});","language":"javascript"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Extension Config","type":"endpoint","slug":"extension-config-2","order":2,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6169e910ba1021007fff9921","createdAt":"2021-10-15T20:58:22.918Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169eba1ed2df001747c03bc","api":{"method":"patch","url":"/config/extension","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"settings\": {\n    \"color_theme\"
384: \"dark\",\n    \"enable_features\": true\n  }\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"","required":false,"in":"body","ref":"","_id":"61532ada3b2c5100183ae169"}],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request PATCH \\\n  --url https://api.muxy.io/v1/e/config/extension \\\n  --header 'authorization: \u003cClient ID> \u003cadmin or backend JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '[{ \"op\": \"add\", \"path\": \"/settings/enable_features\", \"value\": true }]'","language":"curl"}]}},"title":"Extension Config","type":"endpoint","slug":"extension-config-3","order":3,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6169e910ba1021007fff9921","createdAt":"2021-10-15T20:59:13.425Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169ef903bbedd003ce7093f","api":{"method":"get","url":"/config/channel","auth":"required","results":{"codes":[{"name":"","code":"{\n  // object containing channel-wide config data for current extension\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/config/channel \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json'","language":"curl"},{"code":"const medkit = new Muxy.SDK();\nawait medkit.loaded();\n\nconst config = medkit.getChannelConfig();","language":"javascript"}]}},"title":"Channel Config","type":"endpoint","slug":"channel-config","order":4,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6169e910ba1021007fff9921","createdAt":"2021-10-15T21:16:00.134Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169f069c6387600717594f5","api":{"method":"post","url":"/config/channel","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"broadcaster_birthday\": \"2000-01-01\"\n}","language":"json","status":200},{"name":"","code":"Malformed input body","language":"text","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"Accepts arbitrary JSON data","required":true,"in":"body","ref":"","_id":"614123c56c94c7001675b061"}],"examples":{"codes":[{"code":"curl --request POST \\\n  --url https://sandbox.api.muxy.io/v1/e/config/channel \\\n  --header 'authorization: \u003cClient ID> \u003cbroadcaster JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '{ \"broadcaster_birthday\": \"2000-01-01\" }'","language":"curl"},{"code":"const medkit = new Muxy.SDK();\nawait medkit.loaded();\n\nconst state = medkit.setChannelConfig({\n  \"broadcaster_birthday\": \"2000-01-01\"\n});","language":"javascript"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Channel Config","type":"endpoint","slug":"channel-config-1","order":5,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6169e910ba1021007fff9921","createdAt":"2021-10-15T21:19:37.032Z","category":"6140c2ea9ed947004d5565d5","icon":"","isBodyEmpty":false,"children":[]},{"_id":"6169f227e43aeb0078742e50","api":{"method":"patch","url":"/config/channel","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"settings\": {\n    \"color_theme\": \"dark\",\n    \"enable_features\": true\n  }\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"","required":false,"in":"body","ref":"","_id":"61532ada3b2c5100183ae169"}],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request PATCH \\\n  --url https://api.muxy.io/v1/e/config/channel \\\n  --header 'authorization: \u003cClient ID> \u003cbroadcaster JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '[{ \"op\": \"add\", \"path\": \"/settings/enable_features\", \"value\": true }]'","language":"curl"}]}},"title":"Channel Config","type":"endpoint","slug":"channel-config-2","order":6,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6169e910ba1021007fff9921","createdAt":"2021-10-15T21:27:03.586Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]}]},{"_id":"6141203aab69d50054105762","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"State API","type":"basic","slug":"rest-state-api","order":4,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"state","createdAt":"2021-09-14T22:20:42.225Z","category":"6140c2ea9ed947004d5565d5","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[{"_id":"614120769424b900181f54a8","api":{"method":"get","url":"/all_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  extension: { /* Extension state data*/ },\n  channel: { /* Channel state data*/ },\n  viewer: { /* Viewer state data*/ }\n}","language":"json","status":200},{"name":"","code":"State lookup error","language":"text","status":400}]},"params":[],"examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/all_state \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"All State","type":"endpoint","slug":"viewer-state","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-14T22:21:42.025Z","parentDoc":"6141203aab69d50054105762","category":"6140c2ea9ed947004d5565d5","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"6169d007f7c49f004af52399","api":{"method":"get","url":"/extension_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  // Fields dependent on extension's stored state\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/extension_state \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json'","language":"curl"}]}},"title":"Extension State","type":"endpoint","slug":"viewer-state-4","order":1,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T19:01:27.536Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169d0b008b0630051a3eec5","api":{"method":"post","url":"/extension_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"favorite_color\": \"blue\"\n}","language":"json","status":200},{"name":"","code":"Malformed input body","language":"text","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"Accepts arbitrary JSON data","required":true,"in":"body","ref":"","_id":"614123c56c94c7001675b061"}],"examples":{"codes":[{"code":"curl --request POST \\\n  --url https://sandbox.api.muxy.io/v1/e/extension_state \\\n  --header 'authorization: \u003cClient ID> \u003cadmin or backend JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '{ \"favorite_color\": \"blue\" }'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Extension State","type":"endpoint","slug":"extension-state","order":2,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T19:04:16.703Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169e570dad7ad001e54618d","api":{"method":"patch","url":"/extension_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"ice_cream\": {\n    \"flavor\": \"coffee\",\n    \"toppings\": [\"sprinkles\", \"caramel\"]\n  }\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"","required":false,"in":"body","ref":"","_id":"61532ada3b2c5100183ae169"}],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request PATCH \\\n  --url https://api.muxy.io/v1/e/extension_state \\\n  --header 'authorization: \u003cClient ID> \u003cBackend JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '[{ \"op\": \"add\", \"path\": \"/ice_cream/toppings\", \"value\": [\"sprinkles\", \"caramel\"] }]'","language":"curl"}]}},"title":"Extension State","type":"endpoint","slug":"extension-state-1","order":3,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T20:32:48.932Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169cfa68eb4f5000f7572bf","api":{"method":"get","url":"/ch
384annel_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  // Fields dependent on channel's stored state\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/channel_state \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json'","language":"curl"}]}},"title":"Channel State","type":"endpoint","slug":"channel-state","order":4,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T18:59:50.704Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169e541d13027001c2c8f91","api":{"method":"post","url":"/channel_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"favorite_color\": \"blue\"\n}","language":"json","status":200},{"name":"","code":"Malformed input body","language":"text","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"Accepts arbitrary JSON data","required":true,"in":"body","ref":"","_id":"614123c56c94c7001675b061"}],"examples":{"codes":[{"code":"curl --request POST \\\n  --url https://sandbox.api.muxy.io/v1/e/channel_state \\\n  --header 'authorization: \u003cClient ID> \u003cbroadcaster JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '{ \"favorite_color\": \"blue\" }'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Channel State","type":"endpoint","slug":"channel-state-1","order":5,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T20:32:01.977Z","category":"6140c2ea9ed947004d5565d5","icon":"","isBodyEmpty":false,"children":[]},{"_id":"6169e5947b6c92005c2e84f1","api":{"method":"patch","url":"/channel_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"ice_cream\": {\n    \"flavor\": \"mint\",\n    \"toppings\": [\"chocolate chips\"]\n  }\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"","required":false,"in":"body","ref":"","_id":"61532ada3b2c5100183ae169"}],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request PATCH \\\n  --url https://api.muxy.io/v1/e/channel_state \\\n  --header 'authorization: \u003cClient ID> \u003cbroadcaster JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '[{ \"op\": \"add\", \"path\": \"/ice_cream/toppings\", \"value\": [\"chocolate chips\"] }]'","language":"curl"}]}},"title":"Channel State","type":"endpoint","slug":"channel-state-2","order":6,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T20:33:24.505Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"61532247cb0397002e99595d","api":{"method":"get","url":"/viewer_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  // Fields dependent on viewer's stored state\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/viewer_state \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json'","language":"curl"}]}},"title":"Viewer State","type":"endpoint","slug":"viewer-state-2","order":7,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-28T14:10:15.527Z","parentDoc":"6141203aab69d50054105762","category":"6140c2ea9ed947004d5565d5","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"614123c56c94c7001675b060","api":{"method":"post","url":"/viewer_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"favorite_color\": \"blue\"\n}","language":"json","status":200},{"name":"","code":"Malformed input body","language":"text","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"Accepts arbitrary JSON data","required":true,"in":"body","ref":"","_id":"614123c56c94c7001675b061"}],"examples":{"codes":[{"code":"curl --request POST \\\n  --url https://sandbox.api.muxy.io/v1/e/viewer_state \\\n  --header 'authorization: \u003cClient ID> \u003cviewer JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '{ \"favorite_color\": \"blue\" }'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Viewer State","type":"endpoint","slug":"viewer-state-1","order":8,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-14T22:35:49.393Z","parentDoc":"6141203aab69d50054105762","category":"6140c2ea9ed947004d5565d5","deprecated":false,"icon":"","
384isBodyEmpty":false,"children":[]},{"_id":"6153292cfdcdc700807d177d","api":{"method":"patch","url":"/viewer_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"ice_cream\": {\n    \"flavor\": \"strawberry\",\n    \"toppings\": [\"hot chocolate\"]\n  }\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"","required":false,"in":"body","ref":"","_id":"61532ada3b2c5100183ae169"}],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request PATCH \\\n  --url https://api.muxy.io/v1/e/viewer_state \\\n  --header 'authorization: \u003cClient ID> \u003cviewer JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '[{ \"op\": \"add\", \"path\": \"/ice_cream/toppings\", \"value\": [\"hot chocolate\"] }]'","language":"curl"}]}},"title":"Viewer State","type":"endpoint","slug":"viewer-state-3","order":9,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-28T14:39:40.239Z","parentDoc":"6141203aab69d50054105762","category":"6140c2ea9ed947004d5565d5","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"6169e822052218001002c17b","api":{"method":"get","url":"/extension_viewer_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  // Fields dependent on extension viewer's stored state\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/extension_viewer_state \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json'","language":"curl"}]}},"title":"Extension Viewer State","type":"endpoint","slug":"extension-viewer-state","order":10,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T20:44:18.443Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"6169e849ab6271007840508f","api":{"method":"post","url":"/extension_viewer_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"favorite_color\": \"blue\"\n}","language":"json","status":200},{"name":"","code":"Malformed input body","language":"text","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"Accepts arbitrary JSON data","required":true,"in":"body","ref":"","_id":"614123c56c94c7001675b061"}],"examples":{"codes":[{"code":"curl --request POST \\\n  --url https://sandbox.api.muxy.io/v1/e/extension_viewer_state \\\n  --header 'authorization: \u003cClient ID> \u003cviewer JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '{ \"favorite_color\": \"blue\" }'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Extension Viewer State","type":"endpoint","slug":"extension-viewer-state-1","order":11,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T20:44:57.553Z","category":"6140c2ea9ed947004d5565d5","icon":"","isBodyEmpty":false,"children":[]},{"_id":"6169e86b8e189d00381ba3ec","api":{"method":"patch","url":"/extension_viewer_state","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"ice_cream\": {\n    \"flavor\": \"swirl\",\n    \"toppings\": [\"nuts\", \"whipped cream\"]\n  }\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"","required":false,"in":"body","ref":"","_id":"61532ada3b2c5100183ae169"}],"apiSetting":"6140c2ea9ed947004d5565d3","examples":{"codes":[{"code":"curl --request PATCH \\\n  --url https://api.muxy.io/v1/e/extension_viewer_state \\\n  --header 'authorization: \u003cClient ID> \u003cviewer JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '[{ \"op\": \"add\", \"path\": \"/ice_cream/toppings\", \"value\": [\"nuts\", \"whipped cream\"] }]'","language":"curl"}]}},"title":"Extension Viewer State","type":"endpoint","slug":"extension-viewer-state-2","order":12,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"6141203aab69d50054105762","createdAt":"2021-10-15T20:45:31.74
3841Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]}]},{"_id":"615210f7ab41ab006422b66c","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Engagement Tools API","type":"basic","slug":"aggregation-api","order":5,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-27T18:44:07.567Z","category":"6140c2ea9ed947004d5565d5","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[{"_id":"615211ed97a271003ec56a7f","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Basic Accumulation","type":"basic","slug":"accumulate","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-27T18:48:13.200Z","parentDoc":"615210f7ab41ab006422b66c","category":"6140c2ea9ed947004d5565d5","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"616afc307e8df4003111184a","api":{"method":"get","url":"/accumulate","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"data\": [\n    {\n      \"observed\": 1634401498121,  // The Unix millisecond timestamp of this entry\n      \"channel_id\": \"12345\",      // Twitch Channel ID associated with this entry\n      \"opaque_user_id\": \"U12345\", // An Opaque ID of the viewer who sent this entry (or empty string if Twitch ID is known)\n      \"user_id\": \"12345\",         // The Twitch ID of the viewer who sent this entry (or empty string if unknown)\n      \"data\": {}                  // An arbitrary object of data sent by the viewer\n    }\n  ],\n  \"latest\": 1634401498121 // Unix epoch time (in milliseconds) of most recent entry\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[{"name":"id","type":"string","enumValues":"","default":"default","desc":"The name of the accumulation buffer from which to retrieve data.","required":false,"in":"query","ref":"","_id":"616b03b844f0b90048475c05"},{"name":"start","type":"int","enumValues":"","default":"0","desc":"Unix millisecond timestamp of earliest entry to include in the result.","required":false,"in":"query","ref":"","_id":"616afe1e07606e003b03296f"}],"examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/accumulate \\\n  --header 'authorization: \u003cClient ID> \u003cbroadcaster, admin, or backend JWT>' \\\n  --header 'content-type: application/json'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Accumulate","type":"endpoint","slug":"accumulate-1","order":1,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-10-16T16:22:08.604Z","parentDoc":"615210f7ab41ab006422b66c","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"616b0022bfc1f90077bac02c","api":{"method":"post","url":"/accumulate","auth":"required","results":{"codes":[{"name":"","code":"{ }","language":"json","status":200},{"name":"","code":"\"Malformed json body\"","language":"text","status":400}]},"params":[{"name":"RAW_BODY","type":"string","enumValues":"","default":"","desc":"The developer-defined data you wish to store, in JSON-encoded format. The marshalled JSON size must be under 256 bytes.","required":false,"in":"body","ref":"","_id":"616b0022bfc1f90077bac02d"},{"name":"id","type":"string","enumValues":"","default":"default","desc":"The name of the accumulation buffer to which to write data.","required":false,"in":"query","ref":"","_id":"616b03d496b75401e566dda0"}],"examples":{"codes":[{"code":"curl --request POST \\\n  --url https://api.muxy.io/v1/e/accumulate \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '{ \"next_game\": \"Day of the Tentacle\" }'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Accumulate","type":"endpoint","slug":"accumulate-2","order":2,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"615210f7ab41ab006422b66c","createdAt":"2021-10-16T16:38:58.588Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"61521201cbae2e0079b521b0","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Basic Ranking","type":"basic","slug":"rank","order":3,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-27T18:48:33.962Z","parentDoc":"615210f7ab41ab006422b66c","category":"6140c2ea9ed947004d5565d5","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"616b037bbd6426006926e1f3","api":{"method":"get","url":"/rank","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"data\": [\n    {\n      \"key\": \"DOTA\",\n      \"score\": 12\n    },\n    {\n      \"key\": \"FIFA 2014\",\n      \"score\": 8\n    }\n  ]\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[{"name":"id","type":"string","enumValues":"","default":"default","desc":"The ranking-buffer ID that identifies a question for which responses are ranked.","required":false,"in":"query","ref":"","_id":"616b0844caf5c100109c8272"}],"examples":{"codes":[{"code":"curl --request GET \\\n  --url https://api.muxy.io/v1/e/rank?id=next-game \\\n  --header 'authorization: \u003cClient ID> \u003cbackend, admin, or broadcaster JWT>' \\\n  --header 'content-type: application/json'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Rank","type":"endpoint","slug":"rank-1","order":4,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-10-16T16:53:15.953Z","parentDoc":"615210f7ab41ab006422b66c","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"616b09cf76a2b5000f9560fd","api":{"method":"post","url":"/rank","auth":"required","results":{"codes":[{"name":"","code":"{\n  \"accepted\": true,         // Whether the entry has been added to the rankings\n  \"original\": \"Serious Sam\" // Optional. The previous value submitted by this viewer, if any. \n}","language":"json","status":200},{"name":"","code":"\"Malformed json body\"","language":"text","status":400}]},"params":[{"name":"id","type":"string","enumValues":"","default":"default","desc":"The ranking-buffer ID that identifies a question for which responses are ranked.","required":false,"in":"query","ref":"","_id":"616b03d496b75401e566dd
384a0"},{"name":"key","type":"string","enumValues":"","default":"","desc":"A string submitted by the user in response to this question, as the `key` value in a JSON object.","required":false,"in":"body","ref":"","_id":"616b09cf76a2b5000f9560fe"}],"examples":{"codes":[{"code":"curl --request POST \\\n  --url https://api.muxy.io/v1/e/rank?id=next-game \\\n  --header 'authorization: \u003cClient ID> \u003cany JWT>' \\\n  --header 'content-type: application/json' \\\n  --data '{ \"key\": \"Last of Us\" }'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Rank","type":"endpoint","slug":"rank-2","order":5,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"615210f7ab41ab006422b66c","createdAt":"2021-10-16T17:20:15.943Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"616b0b3bf81055000f10467d","api":{"method":"delete","url":"/rank","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"\"Malformed json body\"","language":"text","status":400}]},"params":[{"name":"id","type":"string","enumValues":"","default":"default","desc":"The ID that identifies a question being ranked.","required":false,"in":"query","ref":"","_id":"616b03d496b75401e566dda0"}],"examples":{"codes":[{"code":"curl --request DELETE \\\n  --url https://api.muxy.io/v1/e/rank?id=next-game \\\n  --header 'authorization: \u003cClient ID> \u003cbroadcaster, admin, or backend JWT>' \\\n  --header 'content-type: application/json'","language":"curl"}]},"apiSetting":"6140c2ea9ed947004d5565d3"},"title":"Rank","type":"endpoint","slug":"rank-3","order":6,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"615210f7ab41ab006422b66c","createdAt":"2021-10-16T17:26:19.698Z","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]},{"_id":"615211f689f2e90010edbaa0","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Poll Management","type":"basic","slug":"poll-managment","order":7,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"try-poll","createdAt":"2021-09-27T18:48:22.658Z","parentDoc":"615210f7ab41ab006422b66c","category":"6140c2ea9ed947004d5565d5","deprecated":false,"isBodyEmpty":false,"children":[]}]},{"_id":"61ba1fb7761a390023080c04","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Communication API","type":"basic","slug":"communication-api","order":6,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-12-15T17:02:47.040Z","category":"6140c2ea9ed947004d5565d5","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"6165e79816ada80060eee544","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Broadcast Messaging","type":"basic","slug":"broadcast","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"broadcast-messaging","createdAt":"2021-10-12T19:52:56.765Z","parentDoc":"61ba1fb7761a390023080c04","category":"6140c2ea9ed947004d5565d5","isBodyEmpty":false,"children":[]}]}]},{"_id":"6140c2ff6833cc0073eca354","title":"GameLink WebSocket API","slug":"gamelink-websocket-api","order":3,"reference":true,"isAPI":true,"project":"613fc7f5dd51cf00370862a6","version":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-14T15:42:55.083Z","__v":0,"pages":[{"_id":"6140c2ff6833cc0073eca355","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"Using the WebSocket Protocol","type":"basic","slug":"websocket-protocol","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"getting-started-with-your-api-3","category":"6140c2ff6833cc0073eca354","createdAt":"2021-09-14T15:42:55.102Z","parentDoc":null,"deprecated":false,"isBodyEmpty":false,"children":[{"_id":"615c81b031cd85005b6c664d","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Authentication","type":"basic","slug":"ws-authentication","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"authentication","createdAt":"2021-10-05T16:47:44.971Z","parentDoc":"6140c2ff6833cc0073eca355","category":"6140c2ff6833cc0073eca354","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"6152115bce576f005f461a6c","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Client-Server Communication","type":"basic","slug":"ws-pubsub","order":1,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"communication","createdAt":"2021-09-27T18:45:47.750Z","parentDoc":"6140c2ff6833cc0073eca355","category":"6140c2ff6833cc0073eca354","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"615c82a16cfcbf0025d689e4","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Storing State on the Server","type":"basic","slug":"ws-state-access","order":2,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"state-access","createdAt":"2021-10-05T16:51:45.433Z","parentDoc":"6140c2ff6833cc0073eca355","category":"6140c2ff6833cc0073eca354","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"615cbc55e86ddc00ef58b95f","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Polling","type":"basic","slug":"ws-polling","order":3,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"polling","createdAt":"2021-10-05T20:57:57.358Z","parentDoc":"6140c2ff6833cc0073eca355","category":"6140c2ff6833cc0073eca354","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"615cbcc1e86ddc00ef58b970","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Purchase Transactions","type":"basic","slug":"ws-purchase-transactions","order":4,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"purchase-transactions","createdAt":"2021-10-05T20:59:45.264Z","parentDoc":"6140c2ff6833cc0073eca355","category":"6140c2ff6833cc0073eca354","deprecated":false,"isBodyEmpty":false,"children":[]}]}]},{"_id":"614bb4e57359d005997f7acc","title":"GameLink C#/C++ Library","slug":"gamelink-c-library","order":4,"reference":true,"isAPI":false,"project":"613fc7f5dd51cf00370862a6","version":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-22T22:57:41.584Z","__v":0,"pages":[{"_id":"615340be2c89fb000f2b85dd","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Muxy GameLink Library","type":"basic","slug":"gamelink-library","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-28T16:20:14.109Z","category":"614bb4e57359d005997f7acc","parentDoc":null,"deprecated":false,"icon":"","
384isBodyEmpty":false,"children":[]},{"_id":"61535197548520000f252937","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"SDK Class","type":"basic","slug":"sdk-class","order":1,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"sdk-class-wip","createdAt":"2021-09-28T17:32:07.860Z","parentDoc":null,"category":"614bb4e57359d005997f7acc","deprecated":false,"isBodyEmpty":false,"children":[{"_id":"615494ddff1abe002fab18ac","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Extension Setup API","type":"basic","slug":"extension-setup-api","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-29T16:31:25.174Z","parentDoc":"61535197548520000f252937","category":"614bb4e57359d005997f7acc","deprecated":false,"isBodyEmpty":false,"children":[]},{"_id":"615379a93c595400644f2690","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"State and Configuration Handling","type":"basic","slug":"state-config-fns","order":1,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"state-and-configuration-handling","createdAt":"2021-09-28T20:23:05.879Z","parentDoc":"61535197548520000f252937","category":"614bb4e57359d005997f7acc","isBodyEmpty":false,"children":[]},{"_id":"61537a7792a159004e093e39","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Event Handling","type":"basic","slug":"event-handling","order":2,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-09-28T20:26:31.110Z","parentDoc":"61535197548520000f252937","category":"614bb4e57359d005997f7acc","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]}]}]},"apiBaseUrl":"/","baseUrl":"/","search":{"appId":"T28YKFATPY","searchApiKey":"ZTJlNGM3YzQ0NDEyODhiNTgxZTA0MWJkMjUwMGM5Y2ZmZjYyNGNiNTljM2YxZmUzMjY5Mjg5MjM0ZmEyMDMxZXRhZ0ZpbHRlcnM9KHByb2plY3Q6NjEzZmM3ZjVkZDUxY2YwMDM3MDg2MmE2KSwodmVyc2lvbjpub25lLHZlcnNpb246NjEzZmM3ZjVkZDUxY2YwMDM3MDg2MmFiKSwoaGlkZGVuOm5vbmUsaGlkZGVuOmZhbHNlKSwoaW5kZXg6Q3VzdG9tUGFnZSxpbmRleDpQYWdlLGluZGV4OkJsb2csaW5kZXg6VHV0b3JpYWwp","indexName":"readme_search_v2","projectsMeta":[{"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"changelog":true,"discuss":false,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":true,"graphql":false},"id":"613fc7f5dd51cf00370862a6","name":"Muxy","subdomain":"muxy","subpath":"","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""}}],"urlManagerOpts":{"lang":"en","parent":{"childrenProjects":[]},"project":{"subdomain":"muxy"},"version":"1.0"}},"activeDoc":"quick-start","rdmd":{"dehydrated":{"toc":"\u003cnav>\u003cul class=\"toc-list\">\u003cli>\u003ca class=\"tocHeader\" href=\"#\">\u003ci class=\"icon icon-text-align-left\">\u003c/i>Table of Contents\u003c/a>\u003c/li>\u003cli class=\"toc-children\">\u003cul>\n\u003cli>\n\u003ca href=\"#add-muxy-functionality-to-your-twitch-extension\">Add Muxy functionality to your Twitch Extension\u003c/a>\n\u003cul>\n\u003cli>\u003ca href=\"#register-your-extension-with-muxy\">Register your extension with Muxy\u003c/a>\u003c/li>\n\u003c/ul>\n\u003c/li>\n\u003cli>\n\u003ca href=\"#first-steps\">First Steps\u003c/a>\n\u003c/li>\n\u003cli>\n\u003ca href=\"#medkit-code-examples\">MEDKit Code Examples\u003c/a>\n\u003cul>\n\u003cli>\u003ca href=\"#development-basics\">Development Basics\u003c/a>\u003c/li>\n\u003cli>\u003ca href=\"#viewer-engagement-techniques\">Viewer Engagement Techniques\u003c/a>\u003c/li>\n\u003c/ul>\n\u003c/li>\n\u003cli>\n\u003ca href=\"#integrate-with-game-development-environments\">Integrate with Game Development Environments\u003c/a>\n\u003cul>\n\u003cli>\u003ca href=\"#integrate-muxy-with-an-unreal-engine-game\">Integrate Muxy with an Unreal Engine Game\u003c/a>\u003c/li>\n\u003cli>\u003ca href=\"#integrate-the-c-medkit-sdk-with-a-unity-game\">Integrate the C# MEDKit SDK with a Unity Game\u003c/a>\u003c/li>\n\u003c/ul>\n\u003c/li>\n\u003cli>\n\u003ca href=\"#learn-more\">Learn more...\u003c/a>\n\u003c/li>\n\u003c/ul>\u003c/li>\u003c/ul>\u003c/nav>","body":"\u003cp>Here in our Quick Start guides you&#x27;ll find examples to help you understand the basics of working with our tools to create fully interactive, engaging Twitch Extensions.\u003c/p>\n\u003ch1 class=\"heading heading-1 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"add-muxy-functionality-to-your-twitch-extension\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-add-muxy-functionality-to-your-twitch-extension\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>Add Muxy functionality to your Twitch Extension\u003c/div>
384\u003ca aria-label=\"Skip link to Add Muxy functionality to your Twitch Extension\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#add-muxy-functionality-to-your-twitch-extension\">\u003c/a>\u003c/h1>\n\u003cp>Whether you are a \u003cem>game developer\u003c/em>, an \u003cem>extension writer\u003c/em>, or a \u003cem>streamer\u003c/em>, you can use Muxy-enabled extensions to improve the gaming and viewing experience, promote viewer engagement with interaction and rewards, and monetize your audience. \u003c/p>\n\u003cul>\n\u003cli>\n\u003cp>If you have an existing Twitch Extension, you can use these steps to register it with Muxy to add functionality and use Muxy services. \u003c/p>\n\u003c/li>\n\u003cli>\n\u003cp>If you don&#x27;t already have one, \u003cstrong>create a new Twitch Extension\u003c/strong> in the \u003ca href=\"https://dev.twitch.tv\" target=\"\" title=\"\">Twitch Developer Console\u003c/a>.\u003c/p>\n\u003c/li>\n\u003c/ul>\n\u003ch2 class=\"heading heading-2 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"register-your-extension-with-muxy\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-register-your-extension-with-muxy\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>Register your extension with Muxy\u003c/div>\u003ca aria-label=\"Skip link to Register your extension with Muxy\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#register-your-extension-with-muxy\">\u003c/a>\u003c/h2>\n\u003col>\n\u003cli>\n\u003cp>In the \u003ca href=\"https://dev.twitch.tv\" target=\"\" title=\"\">Twitch Developer Console\u003c/a>, look at the \u003cstrong>Extension Settings\u003c/strong> and copy the \u003cstrong>Extension Client ID\u003c/strong> and \u003cstrong>Extension Secret\u003c/strong>.  You will use these to register the extension with Muxy.\u003c/p>\n\u003c/li>\n\u003cli>\n\u003cp>Go to the \u003ca href=\"https://dev.muxy.io\" target=\"\" title=\"\">Muxy Developer Portal\u003c/a> and click \u003cstrong>Register New Extension\u003c/strong>.\u003c/p>\n\u003c/li>\n\u003cli>\n\u003cp>Fill in the \u003cstrong>Extension Name\u003c/strong>, \u003cstrong>Client ID\u003c/strong>, and \u003cstrong>Secret\u003c/strong>.\u003c/p>\n\u003c/li>\n\u003c/ol>\n\u003cblockquote class=\"callout callout_warn\" theme=\"🚧\">\u003ch2 class=\"callout-heading\">\u003cspan class=\"callout-icon\">🚧\u003c/span>\u003cp>Keep the Client ID\u003c/p>\u003c/h2>\u003cp>Store your Client ID where you can find it again-- you will also use it to initialize the MEDKit SDK each time the extension starts up.\u003c/p>\u003cp>Once you have registered your extension, your \u003cem>Twitch Extension Client ID\u003c/em> also serves as your \u003cem>Muxy Client ID\u003c/em>. Every call into the Muxy SDK is authorized by this \u003cbutton aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\">\u003c/button>\u003ccode class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">clientId\u003c/code> value\u003c/p>\u003c/blockquote>\n\u003ch1 class=\"heading heading-1 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"first-steps\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-first-steps\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>First Steps\u003c/div>\u003ca aria-label=\"Skip link to First Steps\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#first-steps\">\u003c/a>\u003c/h1>\n\u003cblockquote class=\"callout callout_okay\" theme=\"👍\">\u003ch2 class=\"callout-heading\">\u003cspan class=\"callout-icon\">👍\u003c/span>\u003cp>Game Developers\u003c/p>\u003c/h2>\u003cp>If you use the Unreal Engine or Unity game-development environment, add a Muxy-powered experience using integrated Muxy functionality.   \u003c/p>\u003cul>\n\u003cli>\u003ca href=\"#integrate-with-game-development-environments\" target=\"\" title=\"\">Integrate with Game-development Environments\u003c/a>\u003c/li>\n\u003c/ul>\u003c/blockquote>\n\u003cblockquote class=\"callout callout_info\" theme=\"📘\">\u003ch2 class=\"callout-heading\">\u003cspan class=\"callout-icon\">📘\u003c/span>\u003cp>Muxy Architecture for Extension Writers and Streamers\u003c/p>\u003c/h2>\u003cp>If you are creating extensions from the ground up, the following guides will help you to get familiar with the form and structure of a Muxy-powered extension.\u003c/p>\u003c/blockquote>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"rdmd-table\">\u003cdiv class=\"rdmd-table-inner\">\u003ctable>\u003cthead>\u003ctr>\u003cth style=\"text-align:left\">Topic\u003c/th>\u003cth style=\"text-align:left\">Description\u003c/th>\u003c/tr>\u003c/thead>\u003ctbody>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/getting-started-with-medkit\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"getting-started-with-medkit\">Get Started with MEDKit\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">Introduction to MEDKit and the Muxy SDK.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/build-a-simple-extension\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"build-a-simple-extension\">
384Build a Simple Extension\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">Build a &quot;HelloWorld&quot; Muxy extension with JavaScript\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/basic-muxy-login-workflow\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"basic-muxy-login-workflow\">Basic Muxy Login Workflow\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">How your broadcaster logs in to connect to the Muxy server.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/install-manually\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"install-manually\">Install SDK Manually\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">Install and configure MEDKit from a command shell, using npm, node.js, and webpack.\u003c/td>\u003c/tr>\u003c/tbody>\u003c/table>\u003c/div>\u003c/div>\n\u003ch1 class=\"heading heading-1 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"medkit-code-examples\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-med-kit-code-examples\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>MEDKit Code Examples\u003c/div>\u003ca aria-label=\"Skip link to MEDKit Code Examples\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#medkit-code-examples\">\u003c/a>\u003c/h1>\n\u003cp>These fully-commented, easy-to-understand code samples showcase how to use the Muxy MEDKit JavaScript SDK for common tasks.\u003c/p>\n\u003ch2 class=\"heading heading-2 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"development-basics\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-development-basics\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>Development Basics\u003c/div>\u003ca aria-label=\"Skip link to Development Basics\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#development-basics\">\u003c/a>\u003c/h2>\n\u003cp>Learn the basics of developing extensions that take full advantage of Muxy functionality.\u003c/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"rdmd-table\">\u003cdiv class=\"rdmd-table-inner\">\u003ctable>\u003cthead>\u003ctr>\u003cth style=\"text-align:left\">Topic\u003c/th>\u003cth style=\"text-align:left\">Description\u003c/th>\u003c/tr>\u003c/thead>\u003ctbody>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/set-up-user-simulation\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"set-up-user-simulation\">Set up User Simulation\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">Simulate users with different \u003cspan class=\"GlossaryItem-trigger\">user roles\u003c/span> for debugging in the development environment.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/state-information\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"state-information\">Store State Values\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">How to define, store, and retrieve real-time extension and viewer \u003cspan class=\"GlossaryItem-trigger\">state\u003c/span> values.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/store-configuration-data\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"store-configuration-data\">Store Configuration Data\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">How to define, store, and retrieve extension-configuration values.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/sarbitrary-state\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"sarbitrary-state\">Store Arbitrary State\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">How to define, store, and retrieve any kind of state data.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/get-viewer-information\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"get-viewer-information\">Get Viewer Information\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">How to retrieve information about your extension viewers.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/call-into-the-twitch-api\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"call-into-the-twitch-api\">Call into the Twitch API\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">How to make use of Twitch features in an extension.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/troubleshooting\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"troubleshooting\">Troubleshooting Tips\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">Some hints and tips for avoiding common problems.\u003c/td>\u003c/tr>\u003c/tbody>\u003c/table>\u003c/div>\u003c/div>\n\u003ch2 class=\"heading heading-2 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"viewer-engagement-techniques\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-viewer-engagement-techniques\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>Viewer Engagement Techniques\u003c/div>
384\u003ca aria-label=\"Skip link to Viewer Engagement Techniques\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#viewer-engagement-techniques\">\u003c/a>\u003c/h2>\n\u003cp>These guides provide example code and advice for taking advantage of Muxy functionality in your extensions.\u003c/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"rdmd-table\">\u003cdiv class=\"rdmd-table-inner\">\u003ctable>\u003cthead>\u003ctr>\u003cth style=\"text-align:left\">Topic\u003c/th>\u003cth style=\"text-align:left\">Description\u003c/th>\u003c/tr>\u003c/thead>\u003ctbody>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/data-aggregation-techniques\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"data-aggregation-techniques\">Viewer Data Aggregation\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">Introduces techniques and tools for scaling up by aggregating data from many viewers.\u003cbr/>\u003cbr/>\nCode examples demonstrate \u003ca href=\"/docs/accumulation\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"accumulation\">Accumulating User Data\u003c/a> and \u003ca href=\"/docs/ranking\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"ranking\">Ranking User Data\u003c/a>.\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/viewer-engagement-tools\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"viewer-engagement-tools\">Viewer Engagement Tools\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">Tools for creating activities and events that encourage viewer interaction.\u003cbr/>\u003cbr/>\nCode examples demonstrate how to set up and manage  \u003ca href=\"/docs/voting\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"voting\">Polls and User Voting\u003c/a>.\u003c/td>\u003c/tr>\u003c/tbody>\u003c/table>\u003c/div>\u003c/div>\n\u003ch1 class=\"heading heading-1 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"integrate-with-game-development-environments\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-integrate-with-game-development-environments\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>Integrate with Game Development Environments\u003c/div>\u003ca aria-label=\"Skip link to Integrate with Game Development Environments\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#integrate-with-game-development-environments\">\u003c/a>\u003c/h1>\n\u003cp>Muxy functionality is integrated into Unreal Engine through a \u003cstrong>Muxy Plugin\u003c/strong>, and with Unity through a \u003cstrong>C# MEDKit SDK\u003c/strong>.\u003cbr/>\nThese guides help you install the integration tools, and get you started with initialization and implementing functionality.\u003c/p>\n\u003ch2 class=\"heading heading-2 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"integrate-muxy-with-an-unreal-engine-game\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-integrate-muxy-with-an-unreal-engine-game\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>Integrate Muxy with an Unreal Engine Game\u003c/div>\u003ca aria-label=\"Skip link to Integrate Muxy with an Unreal Engine Game\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#integrate-muxy-with-an-unreal-engine-game\">\u003c/a>\u003c/h2>\n\u003cp>Muxy&#x27;s GameLink SDK is written in C++ and can be integrated into Unreal. See the \u003ca href=\"https://github.com/muxy/gamelink-cpp\" target=\"\" title=\"\">Github repo\u003c/a> for more information.\u003c/p>\n\u003ch2 class=\"heading heading-2 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"integrate-the-c-medkit-sdk-with-a-unity-game\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-integrate-the-c-med-kit-sdk-with-a-unity-game\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>Integrate the C# MEDKit SDK with a Unity Game\u003c/div>\u003ca aria-label=\"Skip link to Integrate the C# MEDKit SDK with a Unity Game\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#integrate-the-c-medkit-sdk-with-a-unity-game\">\u003c/a>\u003c/h2>\n\u003cp>For an existing game that uses the Unity engine, add a Muxy-powered experience by installing the \u003ca href=\"\" target=\"\" title=\"\">C# MEDKit SDK\u003c/a>.\u003c/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"rdmd-table\">\u003cdiv class=\"rdmd-table-inner\">\u003ctable>\u003cthead>\u003ctr>\u003cth style=\"text-align:left\">Topic\u003c/th>\u003cth style=\"text-align:left\">Description\u003c/th>\u003c/tr>\u003c/thead>\u003ctbody>\u003ctr>\u003ctd style=\"text-align:left\">\u003ca href=\"/docs/unity-gamelink-tutorial\" target=\"\" title=\"\" class=\"doc-link\" data-sidebar=\"unity-gamelink-tutorial\">Unity GameLink Tutorial\u003c/a>\u003c/td>\u003ctd style=\"text-align:left\">This tutorial walks through building a small Unity scene that does GameLink authentication and reacts to a viewer poll.\u003c/td>\u003c/tr>\u003c/tbody>\u003c/table>\u003c/div>\u003c/div>\n\u003ch1 class=\"heading heading-1 header-scroll\" align=\"\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"learn-more\">\u003c/div>\u003cdiv class=\"heading-text\">\u003cdiv id=\"section-learn-more\" class=\"heading-anchor_backwardsCompatibility\">\u003c/div>Learn more...\u003c/div>
384\u003ca aria-label=\"Skip link to Learn more...\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#learn-more\">\u003c/a>\u003c/h1>\n\u003cul>\n\u003cli>Download a complete MEDKit extension starter project for Vue.js: \u003ca href=\"https://github.com/muxy/medkit-starter-vue\" target=\"\" title=\"\">MEDKit Starter Vue\u003c/a>\u003c/li>\n\u003cli>Read up on the Muxy Extension SDK: \u003ca href=\"/reference/medkit-rest-api\" target=\"\" title=\"\">Using the MEDKit REST API\u003c/a> \u003c/li>\n\u003cli>Hit us up with any issues at \u003ca href=\"[email protected]\" target=\"\" title=\"\">[email protected]\u003c/a>\u003c/li>\n\u003c/ul>"},"opts":{"alwaysThrow":false,"compatibilityMode":false,"copyButtons":true,"correctnewlines":false,"markdownOptions":{"fences":true,"commonmark":true,"gfm":true,"ruleSpaces":false,"listItemIndent":"1","spacedTable":true,"paddedTable":true},"normalize":true,"lazyImages":true,"reusableContent":{"tags":{}},"safeMode":false,"settings":{"position":true},"theme":"light","opts":{"customBlocks":{},"resourceID":"613fc7f5dd51cf00370862b6","resourceType":"page"},"baseUrl":"/","terms":[{"_id":"61817409837f8c000ff94e82","term":"aggregation","definition":"Manage large amounts of viewer-input data by accumulating and analyzing it in various ways."},{"_id":"6181745005115600170417e0","term":"voting","definition":"Viewers can vote for a provided choice in a poll. \n\nEach viewer gets one vote, but can change that vote at any time until the broadcaster ends the poll."},{"_id":"618174890c45a8000f42cd11","term":"ranking","definition":"Collect viewer responses to open-ended questions and get results ranked by the popularity of particular responses."},{"_id":"618174b8879adf002f45a97f","term":"trivia","definition":"Create a voting-and-reward system based on multiple-choice questions such as \"Which of these players is going to win?\"."},{"_id":"61817505d0a7b301435aa947","term":"configuration storage","definition":"Developer-defined data that is persistent and not expected to change often."},{"_id":"6181755ebfb4a1007b4cc96b","term":"polling","definition":"Collect viewer votes in response to multiple-choice questions (such as \"Which of these players is going to win?\")."},{"_id":"618175a2ab9e5000591150be","term":"accumulation","definition":"Collect input from viewers and process the data however you choose."},{"_id":"6181760965554101238aa36d","term":"user roles","definition":"The role of the caller controls access to functionality."},{"_id":"618176844817a1007949dde1","term":"state","definition":"You can define and store your own extension state data.\nState is tracked in real time."}],"variables":{"user":{},"defaults":[]}}},"doc":{"metadata":{"image":[],"title":"","description":"","keywords":"","robots":"index"},"mdx":{"altBody":"","status":"rdmd"},"api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"next":{"description":"","pages":[{"type":"doc","icon":"file-text-o","name":"Get Started with MEDKit","slug":"getting-started-with-medkit","category":"Getting Started with MEDKit"},{"type":"doc","icon":"file-text-o","name":"Build a Simple Extension","slug":"build-a-simple-extension","category":"Getting Started with MEDKit"}]},"algolia":{"translationFailure":false,"publishPending":false,"recordCount":11,"updatedAt":"2023-06-12T20:57:31.728Z"},"reusableContent":[],"_id":"613fc7f5dd51cf00370862b6","title":"Quick Start for Developers","updates":["61f4df455e752a007306fdb5"],"type":"basic","slug":"quick-start","excerpt":"These guides will help you get started with Muxy. You'll be up and running in a jiffy!","body":"Here in our Quick Start guides you'll find examples to help you understand the basics of working with our tools to create fully interactive, engaging Twitch Extensions.\n\n# Add Muxy functionality to your Twitch Extension\n\nWhether you are a _game developer_, an _extension writer_, or a _streamer_, you can use Muxy-enabled extensions to improve the gaming and viewing experience, promote viewer engagement with interaction and rewards, and monetize your audience. \n\n- If you have an existing Twitch Extension, you can use these steps to register it with Muxy to add functionality and use Muxy services. \n\n- If you don't already have one, **create a new Twitch Extension** in the [Twitch Developer Console](https://dev.twitch.tv).\n\n## Register your extension with Muxy\n\n1. In the [Twitch Developer Console](https://dev.twitch.tv), look at the **Extension Settings** and copy the **Extension Client ID** and **Extension Secret**.  You will use these to register the extension with Muxy.\n\n2. Go to the [Muxy Developer Portal](https://dev.muxy.io) and click **Register New Extension**.\n\n3. Fill in the **Extension Name**, **Client ID**, and **Secret**.\n\n> 🚧 Keep the Client ID\n> \n> Store your Client ID where you can find it again-- you will also use it to initialize the MEDKit SDK each time the extension starts up.\n> \n> Once you have registered your extension, your _Twitch Extension Client ID_ also serves as your _Muxy Client ID_. Every call into the Muxy SDK is authorized by this `clientId` value\n\n# First Steps\n\n> 👍 Game Developers\n> \n> If you use the Unreal Engine or Unity game-development environment, add a Muxy-powered experience using integrated Muxy functionality.   \n> \n> - [Integrate with Game-development Environments](#integrate-with-game-development-environments)\n\n> 📘 Muxy Architecture for Extension Writers and Streamers\n> \n> If you are creating extensions from the ground up, the following guides will help you to get familiar with the form and structure of a Muxy-powered extension.\n\n| Topic                                                      | Description                                                                         |\n| :--------------------------------------------------------- | :---------------------------------------------------------------------------------- |\n| [Get Started with MEDKit](doc:getting-started-with-medkit) | Introduction to MEDKit and the Muxy SDK.                                            |\n| [Build a Simple E
384xtension](doc:build-a-simple-extension)   | Build a \"HelloWorld\" Muxy extension with JavaScript                                 |\n| [Basic Muxy Login Workflow](doc:basic-muxy-login-workflow) | How your broadcaster logs in to connect to the Muxy server.                         |\n| [Install SDK Manually](doc:install-manually)               | Install and configure MEDKit from a command shell, using npm, node.js, and webpack. |\n\n# MEDKit Code Examples\n\nThese fully-commented, easy-to-understand code samples showcase how to use the Muxy MEDKit JavaScript SDK for common tasks.\n\n## Development Basics\n\nLearn the basics of developing extensions that take full advantage of Muxy functionality.\n\n| Topic                                                    | Description                                                                                         |\n| :------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |\n| [Set up User Simulation](doc:set-up-user-simulation)     | Simulate users with different \u003c\u003cglossary:user roles>> for debugging in the development environment. |\n| [Store State Values](doc:state-information)              | How to define, store, and retrieve real-time extension and viewer \u003c\u003cglossary:state>> values.        |\n| [Store Configuration Data](doc:store-configuration-data) | How to define, store, and retrieve extension-configuration values.                                  |\n| [Store Arbitrary State](doc:sarbitrary-state)            | How to define, store, and retrieve any kind of state data.                                          |\n| [Get Viewer Information](doc:get-viewer-information)     | How to retrieve information about your extension viewers.                                           |\n| [Call into the Twitch API](doc:call-into-the-twitch-api) | How to make use of Twitch features in an extension.                                                 |\n| [Troubleshooting Tips](doc:troubleshooting)              | Some hints and tips for avoiding common problems.                                                   |\n\n## Viewer Engagement Techniques\n\nThese guides provide example code and advice for taking advantage of Muxy functionality in your extensions.\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Topic\",\n    \"h-1\": \"Description\",\n    \"0-0\": \"[Viewer Data Aggregation](doc:data-aggregation-techniques)\",\n    \"0-1\": \"Introduces techniques and tools for scaling up by aggregating data from many viewers.  \\n  \\nCode examples demonstrate [Accumulating User Data](doc:accumulation) and [Ranking User Data](doc:ranking).\",\n    \"1-0\": \"[Viewer Engagement Tools](doc:viewer-engagement-tools)\",\n    \"1-1\": \"Tools for creating activities and events that encourage viewer interaction.  \\n  \\nCode examples demonstrate how to set up and manage  [Polls and User Voting](doc:voting).\"\n  },\n  \"cols\": 2,\n  \"rows\": 2,\n  \"align\": [\n    \"left\",\n    \"left\"\n  ]\n}\n[/block]\n\n# Integrate with Game Development Environments\n\nMuxy functionality is integrated into Unreal Engine through a **Muxy Plugin**, and with Unity through a **C# MEDKit SDK**.  \nThese guides help you install the integration tools, and get you started with initialization and implementing functionality.\n\n## Integrate Muxy with an Unreal Engine Game\n\nMuxy's GameLink SDK is written in C++ and can be integrated into Unreal. See the [Github repo](https://github.com/muxy/gamelink-cpp) for more information.\n\n## Integrate the C# MEDKit SDK with a Unity Game\n\nFor an existing game that uses the Unity engine, add a Muxy-powered experience by installing the [C# MEDKit SDK](docs:integrate-with-unity).\n\n| Topic                                                  | Description                                                                                                             |\n| :----------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- |\n| [Unity GameLink Tutorial](doc:unity-gamelink-tutorial) | This tutorial walks through building a small Unity scene that does GameLink authentication and reacts to a viewer poll. |\n\n# Learn more...\n\n- Download a complete MEDKit extension starter project for Vue.js: [MEDKit Starter Vue](https://github.com/muxy/medkit-starter-vue)\n- Read up on the Muxy Extension SDK: [Using the MEDKit REST API](ref:medkit-rest-api) \n- Hit us up with any issues at [[email protected]]([email protected])","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"pendingAlgoliaPublish":false,"previousSlug":"getting-started","slugUpdatedAt":"2021-09-13T22:06:31.490Z","user":"613fc73ba5f80f007f92a998","project":"613fc7f5dd51cf00370862a6","category":{"_id":"613fc7f5dd51cf00370862ad","title":"Documentation","slug":"documentation","order":0,"reference":false,"isAPI":false,"version":"613fc7f5dd51cf00370862ab","project":"613fc7f5dd51cf00370862a6","createdAt":"2021-09-13T21:51:49.324Z","__v":0,"type":"guide","id":"613fc7f5dd51cf00370862ad"},"createdAt":"2021-09-13T21:51:49.404Z","updatedAt":"2023-06-12T20:57:31.500Z","version":{"pdfStatus":"","source":"readme","_id":"613fc7f5dd51cf00370862ab","ver
384sion":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":true,"is_hidden":false,"is_deprecated":false,"categories":["613fc7f5dd51cf00370862ad","613fc7f5dd51cf00370862ad","613fc7f5dd51cf00370862b3","6140b4f4d85bb2000f6c5214","6140b5358519890060c5b901","6140bacc4c43af005b586416","6140bf0603bd030076438580","6140bfba91b2a300292d7d60","6140c2ea9ed947004d5565d5","6140c2ff6833cc0073eca354","614219d9fdbb8d012c02a567","614219fcf4529b005bd1d5d4","61421eafb139b600324fffe0","61421eb8de0687000fc740f9","614bb4e57359d005997f7acc","615498dfe23868000fe078f0","61a691a50bbd78006d2e641b","620e74a99bd783002fb1856b","6376bf4f127d990003172dc9"],"project":"613fc7f5dd51cf00370862a6","releaseDate":"2021-09-13T21:51:49.295Z","createdAt":"2021-09-13T21:51:49.295Z","__v":1,"apiRegistries":[]},"__v":5,"parentDoc":null,"deprecated":false,"icon":"","revision":2,"isApi":false,"tutorials":[],"id":"613fc7f5dd51cf00370862b6"},"hideTOC":false,"meta":{"_id":"613fc7f5dd51cf00370862b6","description":"These guides will help you get started with Muxy. You'll be up and running in a jiffy!","hidden":false,"image":[],"keywords":"","metaTitle":"Quick Start for Developers","parent":null,"robots":"index","slug":"quick-start","title":"Quick Start for Developers","type":"docs"},"slugUrl":"/docs/quick-start","aiConfig":{"enabled":false,"settings":{"errors":null,"styleguide":null,"warnings":null}},"config":{"algoliaIndex":"readme_search_v2","amplitude":{"apiKey":"8b550cf334a130e3d6ea41a88b894d8","enabled":"true","sessionReplay":{"enabled":"true","sampleRate":"0.1"}},"api":{"upload":{"fileSizeLimit":10485760,"fileSizeLimitFormatted":"10MB"}},"asset_url":"https://cdn.readme.io","dashDomain":"dash.readme.com","domain":"readme.io","domainFull":"https://dash.readme.com","encryptedLocalStorageKey":"ekfls-2025-03-27","fullstory":{"enabled":true,"orgId":"FSV9A"},"git":{"preview":"https://githug-prod.gitto.rdme.io","sync":{"bitbucket":{"installationLink":"https://developer.atlassian.com/console/install/310151e6-ca1a-4a44-9af6-1b523fea0561?signature=AYABeMn9vqFkrg%2F1DrJAQxSyVf4AAAADAAdhd3Mta21zAEthcm46YXdzOmttczp1cy13ZXN0LTI6NzA5NTg3ODM1MjQzOmtleS83MDVlZDY3MC1mNTdjLTQxYjUtOWY5Yi1lM2YyZGNjMTQ2ZTcAuAECAQB4IOp8r3eKNYw8z2v%2FEq3%2FfvrZguoGsXpNSaDveR%2FF%2Fo0BHUxIjSWx71zNK2RycuMYSgAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDOJgARbqndU9YM%2FRdQIBEIA7unpCah%2BIu53NA72LkkCDhNHOv%2BgRD7agXAO3jXqw0%2FAcBOB0%2F5LmpzB5f6B1HpkmsAN2i2SbsFL30nkAB2F3cy1rbXMAS2Fybjphd3M6a21zOmV1LXdlc3QtMTo3MDk1ODc4MzUyNDM6a2V5LzQ2MzBjZTZiLTAwYzMtNGRlMi04NzdiLTYyN2UyMDYwZTVjYwC4AQICAHijmwVTMt6Oj3F%2B0%2B0cVrojrS8yZ9ktpdfDxqPMSIkvHAGT%2FMTvCxC3XwnwlulZe975AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMMUUe9d1YmFOo373TAgEQgDuJo7TayM6NL19Sj9RPooRrl8rYxwKgvu9gkLNc3GuyyovWI1xA2qTr0LQzMRsf3imrAWsywzPcsjnvuAAHYXdzLWttcwBLYXJuOmF3czprbXM6dXMtZWFzdC0xOjcwOTU4NzgzNTI0MzprZXkvNmMxMjBiYTAtNGNkNS00OTg1LWI4MmUtNDBhMDQ5NTJjYzU3ALgBAgIAeLKa7Dfn9BgbXaQmJGrkKztjV4vrreTkqr7wGwhqIYs5AZR28Sibv2eBxSIg2MydtvEAAAB%2BMHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAzzWhThsIgJwrr%2FY2ECARCAOxoaW9pob21lweyAfrIm6Fw7gd8D%2B%2F8LHk4rl3jjULDM35%2FVPuqBrqKunYZSVCCGNGB3RqpQJr%2FasASiAgAAAAAMAAAQAAAAAAAAAAAAAAAAAEokowLKsF1tMABEq%2BKNyJP%2F%2F%2F%2F%2FAAAAAQAAAAAAAAAAAAAAAQAAADJLzRcp6MkqKR43PUjOiRxxbxXYhLc6vFXEutK3%2BQ71yuPq4dC8pAHruOVQpvVcUSe8dptV8c7wR8BTJjv%2F%2FNe8r0g%3D&product=bitbucket"}}},"hubspot":{"portalId":"9401557"},"metrics":{"billingCronEnabled":"true","dashUrl":"https://m.readme.io","defaultUrl":"https://m.readme.io","exportMaxRetries":12,"wsUrl":"wss://m.readme.io"},"micro":{"baseUrl":"https://micro-beta.readme.com"},"novuNotification":{"appId":"ob_MiAPOPqgP","showUnreleasedWorkflows":false},"proxyUrl":"https://try.readme.io","readmeRecaptchaSiteKey":"6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x","releaseVersion":"5.906.1","reservedWords":{"tools":["execute-request","get-endpoint","get-server-variables","list-endpoints","list-specs","search-endpoints","search","fetch"]},"sentry":{"dsn":"https://[email protected]/2052166","enabled":true},"shMigration":{"promoVideo":"","forceWaitlist":false,"migrationPreview":false},"sslBaseDomain":"readmessl.com","sslGenerationService":"ssl.readmessl.com","superHub":{"newProjectsEnabled":true},"tiptapCloud":{"appId":"8mzorjl9","url":"wss://8mzorjl9.collab.tiptap.cloud"},"wootric":{"accountToken":"NPS-122b75a4","enabled":true}},"context":{"labs":{},"user":{"isAuthenticated":false,"notifications":{}},"terms":[{"_id":"61817409837f8c000ff94e82","term":"aggregation","definition":"Manage large amounts of viewer-input data by accumulating and analyzing it in various ways."},{"_id":"6181745005115600170417e0","term":"voting","definition":"Viewers can vote for a provided choice in a poll. \n\nEach viewer gets one vote, but can change that vote at any time until the broadcaster ends the poll."},{"_id":"618174890c45a8000f42cd11","term":"ranking","definition":"Collect viewer responses to open-ended questions and get results ranked by the popularity of particular responses."},{"_id":"618174b8879adf002f45a97f","term":"trivia","definition":"Create a voting-and-reward system based on multiple-choice questions such as \"Which of these players is going to win?\"."},{"_id":"61817505d0a7b301435aa947","term":"configuration storage","definition":"Developer-defined data that is persistent and not expected to change often."},{"_id":"6181755ebfb4a1007b4cc96b","term":"polling","definition":"Collect viewer votes in response to multiple-choice questions (such as \"Which of these players is going to win?\")."},{"_id":"618175a2ab9e5000591150be","term":"accumulation","definition":"Collect input from viewers and process the data however you choose."},{"_id":"6181760965554101238aa36d","term":"user roles","definition":"The role of the caller controls access to functionality."},{"_id":"618176844817a1007949dde1","term":"state","definition":"You can define and store your own extension state data.\nState is tracked in real time."}],"variables":{"user":{},"defaults":[]},"navigation":[],"project":{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowApiExplorerJsonEditor":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"alwaysShowDocPublishStatus":true,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":false,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"bitbucketDirectEvents":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":false,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInline
384Editor":false,"disableAiWriter":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":false,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":false,"mdxishEditor":false,"mdxSanitizeComments":false,"newEditorDash":true,"newExplorerReducer":false,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":false,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":true,"superHubMsTeamsAppPackage":false,"superHubMsTeamsNotifications":false,"superHubMultiGuides":false,"superHubPlanManagement":false,"superHubPreview":false,"superHubSlack":false,"superHubSlackNotifications":false,"superHubUiTesting":false,"tokenBasedBilling":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"versions":[{"__v":1,"_id":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-13T21:51:49.295Z","project":"613fc7f5dd51cf00370862a6","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":true,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2021-09-13T21:51:49.295Z"}],"stable":{"__v":1,"_id":"613fc7f5dd51cf00370862ab","createdAt":"2021-09-13T21:51:49.295Z","project":"613fc7f5dd51cf00370862a6","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":true,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2021-09-13T21:51:49.295Z"},"_id":"613fc7f5dd51cf00370862a6","accessRules":{"branch_approve":{"admin":true,"editor":false},"branch_merge":{"admin":true,"editor":false},"version_edit":{"admin":true,"editor":false}},"ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":false,"search":false,"ai_input":false},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":false,"show_sibling_pages":false,"show_whats_next":false}},"appearance":{"allowApiExplorerJsonEditor":false,"borderRadius":"default","changelog":{"layoutExpanded":false,"showAuthor":true,"showExactDate":false},"referenceFlatSections":"disabled","referenceLayout":"row","referenceParamFont":"default","referenceParamInputs":"all","referenceSimpleMode":true,"methodBadgeStyle":"classic","oneOfLayout":"dropdown","showExactDate":false,"showMethodInSidebar":true,"link_logo_to_url":false,"theme":"solid","theme_preset":"default","colorScheme":"system","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":false,"showMetricsInReference":true,"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"#08938e","main_dark":"","main_alt":"#137e7a","header_text":"","body_highlight":"","body_highlight_dark":"","custom_login_link_color":"","page_background":"","page_background_dark":"","background_tint":"","background_tint_dark":"","border":"","border_dark":"","header":"","header_dark":"","askai_button_bg":"","askai_button_bg_dark":"","sidebar_border":"","sidebar_border_dark":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","code":"","spacing":null,"typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"img":[],"img_size":"auto","img_pos":"tl","linkStyle":"buttons","style":"overlay","subnav":{"alignment":"start"}},"body":{"style":"none"},"promos":[{"_id":"613fc7f5dd51cf00370862a8","title":"The Muxy Developer Hub","text":"Welcome to the Muxy developer hub. You'll find comprehensive guides and documentation to help you start working with Muxy as quickly as possible, as well as supp
384ort if you get stuck.","extras":{"type":"buttons","buttonPrimary":"docs","buttonSecondary":"recipes"}}],"layout":{"full_width":false,"style":"classic","sticky_header":null},"logo":["https://files.readme.io/86e839b-muxy-character.svg","muxy-character.svg","0","0","#013838"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"logo_size":"default","favicon":[],"tocVariant":"line","stylesheet":"","stylesheet_hub2":"","stylesheet_hub3":"","javascript":"","javascript_hub2":"","html_promo":"","html_body":"","html_footer":"","html_head":"","html_footer_meta":"","global_landing_page":{"html":"","redirect":""},"html_hidelinks":false,"collapsibleCategories":false,"showBreadcrumbs":false,"showPageIcons":true,"showVersion":false,"searchModal":"classic","hideTableOfContents":false,"nextStepsLabel":"","ai_dropdown":"enabled","ai_options":{"ask_ai":"disabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"},"view_as_markdown":"enabled"}},"custom_domain":"docs.muxy.io","description":"Promote gaming viewer engagement with Twitch Extensions using real-time data handling and communication tools","hstsIncludeSubdomains":false,"planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"unpaid","error404":"","first_page":"landing","git":{"renamedSlugs":[]},"glossaryTerms":[{"_id":"61817409837f8c000ff94e82","term":"aggregation","definition":"Manage large amounts of viewer-input data by accumulating and analyzing it in various ways."},{"_id":"6181745005115600170417e0","term":"voting","definition":"Viewers can vote for a provided choice in a poll. \n\nEach viewer gets one vote, but can change that vote at any time until the broadcaster ends the poll."},{"_id":"618174890c45a8000f42cd11","term":"ranking","definition":"Collect viewer responses to open-ended questions and get results ranked by the popularity of particular responses."},{"_id":"618174b8879adf002f45a97f","term":"trivia","definition":"Create a voting-and-reward system based on multiple-choice questions such as \"Which of these players is going to win?\"."},{"_id":"61817505d0a7b301435aa947","term":"configuration storage","definition":"Developer-defined data that is persistent and not expected to change often."},{"_id":"6181755ebfb4a1007b4cc96b","term":"polling","definition":"Collect viewer votes in response to multiple-choice questions (such as \"Which of these players is going to win?\")."},{"_id":"618175a2ab9e5000591150be","term":"accumulation","definition":"Collect input from viewers and process the data however you choose."},{"_id":"6181760965554101238aa36d","term":"user roles","definition":"The role of the caller controls access to functionality."},{"_id":"618176844817a1007949dde1","term":"state","definition":"You can define and store your own extension state data.\nState is tracked in real time."}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"healthCheck":{"provider":"","settings":{}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"enabled"},"intercom":"","is_active":true,"branchSharing":"enabled","internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"text","alignment":"center","title":"**What is the Muxy SDK?**"},{"type":"three","alignment":"left","group0":{"title":"","text":"**MEDKit** is a JavaScript library for building viewer-facing extensions on Twitch. It uses the **MEDKit REST API** , which you can also use directly. \n\nMEDKit is part of an SDK designed to make building a Twitch extension easy."},"group1":{"title":"","text":"The complete SDK also includes the **GameLink API**  that lets a Twitch developer interact directly with the Muxy server, to integrate your game or other broadcast content with viewer data in real time."},"group2":{"title":"","text":"For **server-to-server interactions**, you can communicate directly over HTTP  using the **GameLink API** and **WebSocket Protocol**.  \n\nAPIs are available in C, C++, C#/Unity, and as an Unreal plugin."}},{"type":"text","alignment":"center","title":"**What do I use it for?**"},{"type":"three","alignment":"left","group0":{"title":"**Game Developers**","text":"✔ Increase the length of time your game is played on Twitch.\n✔ Increase game sales.\n✔ Engage and monetize your viewers."},"group1":{"title":"**Extension Writers**","text":"✔ Create streamer engagement tools.\n✔ Offer new revenue options for streamers.\n✔ Generate money-making opportunities."},"group2":{"title":"**Streamers**","text":"✔ Find new ways to monetize your audience.\n✔ Promote viewer engagement.\n✔ Create quizzes and viewer events with reward options."}},{"type":"text","alignment":"center","title":"**Muxy features and services for Twitch Extensions**","text":""},{"type":"three","alignment":"left","group0":{"title":"**Extension state**","text":"The Muxy server maintains persistent state information about Twitch extensions, their broadcasters, and their viewers, and makes it available to clients in real time -- at a high level through the MEDKit JavaScript API, and directly through the MEDKit REST API.\n\nThe full set of functionality is also available at a lower level through the GameLink API and WebSocket Protocol."},"group1":{"title":"**Scaling up**","text":"The Muxy SDK provides **data aggregation tools** to help you create viewer engagement activities in a large user base.\n\nThe Muxy SDK provides services for interacting with large numbers of viewers through various forms of data aggregation, from simple accumulation to more sophisticated tools, such as a ranking service for viewer input,  a polling/voting service, and a trivia service for creating quiz-like events."},"group2":{"title":"**Access Control**  and  **Messaging**","text":"Access to functionality is gated through **user roles**. An extension user can be a *viewer*, a *broadcaster*, or an *admin* -- that is, a user with administrative privilege who can set policies and configuration.\n\nA messaging protocol allows extensions to communicate. A client can broadcast messages to all or some viewers, and also publish and subscribe to message threads. The messaging system allows private backchannel communication for coordinating activity among extension instances across channels."}}],"llms_txt":true,"llms_txt_options":{"split":false,"query":null,"use_custom":null},"mcp":{"state":"disabled"},"mdxishMigrationStatus":{},"metrics":{"monthlyLimit":0,"monthlyPurchaseLimit":0,"thumbsEnabled":false,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discu
384ss":false,"suggested_edits":true,"custompages":true,"tutorials":true},"name":"Muxy","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":false,"documentation":true,"domain":false,"jwt":true,"logs":true,"metricsSDK":false,"aiReady":false,"team":false,"gitSync":false},"openapiVisibility":"admin","owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"isPaying":false,"exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"plan":"startup2018","planOverride":"","readmeScore":{"totalScore":176,"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":true,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":true,"points":15},"pageVoting":{"enabled":false,"points":1},"suggestedEdits":{"enabled":true,"points":10},"support":{"enabled":false,"points":5},"htmlLanding":{"enabled":false,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":true,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":false,"points":1},"integrations":{"enabled":false,"points":2}}},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false},"seo":{"overwrite_title_tag":false},"searchSettings":{"default_to_current_project":false,"show_project_filter":true,"sort_projects_alphabetically":false},"ssl":{"minTLS":"1.2"},"subdomain":"muxy","subpath":"","topnav":{"left":[{"type":"custompage","text":"Glossary","page":"glossary"}],"right":[{"type":"url","text":"Muxy Developer Portal","url":"https://dev.muxy.io"},{"type":"url","text":"Twitch Developer Console","url":"https://dev.twitch.tv"}],"bottom":[],"edited":true},"trial":{"trialDeadlineEnabled":true,"trialEndsAt":"2021-09-27T21:51:49.263Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://muxy.io","variableDefaults":[],"childrenProjects":[],"derivedPlan":"startup2018","fullBaseUrl":"https://docs.muxy.io/","isExternalSnippetActive":false,"isPublished":true,"planTrial":"business2018","shouldGateDash":true,"webhookEnabled":false,"isHubEditable":true},"projectStore":{"data":{"allow_crawlers":"disabled","canonical_url":null,"default_version":{"name":"1.0"},"description":"Promote gaming viewer engagement with Twitch Extensions using real-time data handling and communication tools","git":{"repository_name":null,"connection":{"repository":null,"organization":null,"status":"none"},"remediation_status":null,"remediated_at":null,"remediation_initiated_by":null,"remediation_dry_run":null,"remediation_job_id":null},"glossary":[{"term":"aggregation","definition":"Manage large amounts of viewer-input data by accumulating and analyzing it in various ways.","inherited":false},{"term":"voting","definition":"Viewers can vote for a provided choice in a poll. \n\nEach viewer gets one vote, but can change that vote at any time until the broadcaster ends the poll.","inherited":false},{"term":"ranking","definition":"Collect viewer responses to open-ended questions and get results ranked by the popularity of particular responses.","inherited":false},{"term":"trivia","definition":"Create a voting-and-reward system based on multiple-choice questions such as \"Which of these players is going to win?\".","inherited":false},{"term":"configuration storage","definition":"Developer-defined data that is persistent and not expected to change often.","inherited":false},{"term":"polling","definition":"Collect viewer votes in response to multiple-choice questions (such as \"Which of these players is going to win?\").","
384inherited":false},{"term":"accumulation","definition":"Collect input from viewers and process the data however you choose.","inherited":false},{"term":"user roles","definition":"The role of the caller controls access to functionality.","inherited":false},{"term":"state","definition":"You can define and store your own extension state data.\nState is tracked in real time.","inherited":false}],"homepage_url":"https://muxy.io","created_at":null,"updated_at":null,"id":"613fc7f5dd51cf00370862a6","name":"Muxy","parent":null,"sitemap":"disabled","llms_txt":"enabled","subdomain":"muxy","suggested_edits":"enabled","notification_settings":{"project_topic_key":null},"uri":"/projects/me","variable_defaults":[],"webhooks":[],"api_designer":{"allow_editing":"enabled"},"custom_login":{"jwt_secret":null,"jwt_expiration_time":0,"login_url":null,"logout_url":null},"features":{"mdx":"disabled"},"onboarding_completed":{"api":true,"appearance":false,"documentation":true,"domain":false,"jwt":true,"logs":true,"metricsSDK":false,"ai_ready":false,"team":false,"git_sync":false},"owner":{"id":null,"email":null,"name":null},"privacy":{"branches":"enabled","openapi":"admin","password":null,"view":"public"},"refactored":{"status":"disabled","migrated":"unknown"},"seo":{"overwrite_title_tag":"disabled"},"ssl":{"min_tls_version":"1.2"},"hsts":{"include_subdomains":false},"feature_rules":{"merge":{"requirements":[],"allow_override":[]}},"god_mode":{"is_active":null,"flags":{},"admin_limit_override":null,"notes":null,"legacy_css":null,"children_limit":null,"extra_sections_limit":null,"owlbot":{"enabled":null,"new_experience":null,"trial_ends_at":null},"salesforce":{"account_id":null},"enterprise_notes":{"account_name":null,"owner_csm":null,"owner_sales":null,"status":null,"superhub_migration_eligibility":null},"mdxish_migration_status":{"migrated_at":null,"migrated_from":null,"reverted_at":null,"source":null}},"mcp":{"state":"disabled","custom_tools":[],"disabled_routes":[],"explicitly_enabled_routes":[],"disabled_tools":[],"has_password":false,"oauth_pages":{"auth_url":null,"success_url":null,"error_url":null},"openai_challenge_token":null,"oauth_credentials":{},"privacy":{"password":null}},"plan":{"type":"business2018","admin_limit_override_active":false,"bills_extra_admin_seats":false,"extra_sections_limit":0,"override":null,"stripe_subscription_id":null,"grace_period":{"enabled":false,"end_date":null},"trial":{"active":false,"enabled":null,"expired":false,"end_date":"2021-09-27T21:51:49.263Z"}},"redirects":[],"reference":{"api_sdk_snippets":"enabled","experimental_performance_mode":"disabled","defaults":"always_use","show_openapi_download":"disabled","fill_optional_objects_on_expand":"enabled","json_editor":"disabled","method_badge_style":"classic","flat_sections":"disabled","param_font":"default","param_inputs":"all","oauth_flows":"disabled","oneof_layout":"dropdown","request_history":"enabled","request_examples":"collapsed","response_examples":"collapsed","response_schemas":"collapsed","show_method_in_sidebar":"enabled","webhook_badge":"pill","sdk_snippets":{"external":"disabled"}},"llms_txt_options":{"split":{"enabled":"disabled","categories":"enabled"},"query":{"enabled":"disabled"},"custom":{"enabled":"disabled"}},"custom_domain":{"name":"docs.muxy.io","target":null,"validation":{"status":null,"code":null}},"ai":{"discovery":{"content_signal":{"ai_train":false,"search":false,"ai_input":false},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"show_sub_pages":false,"show_sibling_pages":false,"show_whats_next":false,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":null,"authorization_servers":[],"resource_identifier":null,"scopes_supported":[]}},"hidden":false,"readiness":{"status":null,"score":null,"grade":null,"category_scores":null,"pages":null,"summary":null,"results":null,"resolutions":null,"cap":null,"last_checked_at":null,"error_message":null},"ai_writer":{"enabled":true},"docs_audit":{"enabled":true},"inline_editor":{"enabled":true},"linter":{"enabled":true},"chat":{"enabled":true,"models":[],"knowledge":{"custom_knowledge":null,"use_project_knowledge":false}},"owlbot":{"enabled":false,"new_experience":true,"placements":["header","in_search"],"is_paying":false,"trial":{"is_paying":false}},"slack":{"writer":{"allow_branch_deletion":false,"allow_branch_merge":false}}},"integrations":{"aws":{"readme_webhook_login":{"region":null,"external_id":null,"role_arn":null,"usage_plan_id":null}},"bing":{"verify":null},"google":{"analytics":null,"site_verification":null},"heap":{"id":null},"koala":{"key":null},"localize":{"key":null},"postman":{"key":null,"client_id":null,"client_secret":null,"is_connected":false},"recaptcha":{"site_key":null,"secret_key":null},"segment":{"key":null,"domain":null},"speakeasy":{"key":null,"spec_url":null},"typekit":{"key":null},"zendesk":{"subdomain":null},"intercom":{"app_id":null,"secure_mode":{"key":null}}},"pages":{"default_visibility":"public","not_found":null},"permissions":{"appearance":{"private_label":"enabled","custom_code":{"css":"enabled","html":"enabled","js":"disabled"}},"branches":{"merge":{"admin":true,"editor":false},"approve":{"admin":true,"editor":false}},"versions":{"edit":{"admin":true,"editor":false}}},"metrics":{"monthly_purchase_limit":0,"monthly_limit":0,"pii":{"enabled":true},"voting":{"page_quality":{"enabled":false}}},"health_check":{"provider":"none","settings":{"manual":{"status":"down","url":null}
384,"statuspage":{"id":null}}},"appearance":{"border_radius":"default","toc_variant":"line","changelog":{"layout":"collapsed","show_author":true,"show_exact_date":false},"layout":{"full_width":"disabled","sticky_header":null,"style":"classic"},"brand":{"primary_color":"#08938e","primary_color_dark":null,"link_color":null,"link_color_dark":null,"theme":"system","theme_preset":"default","background":{"color":null,"color_dark":null,"tint":null,"tint_dark":null},"border":{"color":null,"color_dark":null},"header":{"color":null,"color_dark":null},"sidebar":{"border":null,"border_dark":null},"askai":{"color":null,"color_dark":null}},"markdown":{"callouts":{"icon_font":"emojis"}},"table_of_contents":"enabled","whats_next_label":null,"landing_page":{"sections":[{"type":"text","alignment":"center","title":"**What is the Muxy SDK?**","text":null,"html":null,"page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":null,"group1":null,"group2":null},{"type":"three","alignment":"left","title":null,"text":null,"html":null,"page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":{"title":"","text":"**MEDKit** is a JavaScript library for building viewer-facing extensions on Twitch. It uses the **MEDKit REST API** , which you can also use directly. \n\nMEDKit is part of an SDK designed to make building a Twitch extension easy."},"group1":{"title":"","text":"The complete SDK also includes the **GameLink API**  that lets a Twitch developer interact directly with the Muxy server, to integrate your game or other broadcast content with viewer data in real time."},"group2":{"title":"","text":"For **server-to-server interactions**, you can communicate directly over HTTP  using the **GameLink API** and **WebSocket Protocol**.  \n\nAPIs are available in C, C++, C#/Unity, and as an Unreal plugin."}},{"type":"text","alignment":"center","title":"**What do I use it for?**","text":null,"html":null,"page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":null,"group1":null,"group2":null},{"type":"three","alignment":"left","title":null,"text":null,"html":null,"page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":{"title":"**Game Developers**","text":"✔ Increase the length of time your game is played on Twitch.\n✔ Increase game sales.\n✔ Engage and monetize your viewers."},"group1":{"title":"**Extension Writers**","text":"✔ Create streamer engagement tools.\n✔ Offer new revenue options for streamers.\n✔ Generate money-making opportunities."},"group2":{"title":"**Streamers**","text":"✔ Find new ways to monetize your audience.\n✔ Promote viewer engagement.\n✔ Create quizzes and viewer events with reward options."}},{"type":"text","alignment":"center","title":"**Muxy features and services for Twitch Extensions**","text":"","html":null,"page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":null,"group1":null,"group2":null},{"type":"three","alignment":"left","title":null,"text":null,"html":null,"page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":{"title":"**Extension state**","text":"The Muxy server maintains persistent state information about Twitch extensions, their broadcasters, and their viewers, and makes it available to clients in real time -- at a high level through the MEDKit JavaScript API, and directly through the MEDKit REST API.\n\nThe full set of functionality is also available at a lower level through the GameLink API and WebSocket Protocol."},"group1":{"title":"**Scaling up**","text":"The Muxy SDK provides **data aggregation tools** to help you create viewer engagement activities in a large user base.\n\nThe Muxy SDK provides services for interacting with large numbers of viewers through various forms of data aggregation, from simple accumulation to more sophisticated tools, such as a ranking service for viewer input,  a polling/voting service, and a trivia service for creating quiz-like events."},"group2":{"title":"**Access Control**  and  **Messaging**","text":"Access to functionality is gated through **user roles**. An extension user can be a *viewer*, a *broadcaster*, or an *admin* -- that is, a user with administrative privilege who can set policies and configuration.\n\nA messaging protocol allows extensions to communicate. A client can broadcast messages to all or some viewers, and also publish and subscribe to message threads. The messaging system allows private backchannel communication for coordinating activity among extension instances across channels."}}],"promo":{"title":"The Muxy Developer Hub","text":"Welcome to the Muxy developer hub. You'll find comprehensive guides and documentation to help you start working with Muxy as quickly as possible, as well as supp
384ort if you get stuck.","content_type":"buttons","html":null,"button_primary":"docs","button_secondary":"recipes"}},"footer":{"readme_logo":"show"},"logo":{"size":"default","dark_mode":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}},"main":{"uri":null,"url":"https://files.readme.io/86e839b-muxy-character.svg","name":"muxy-character.svg","width":0,"height":0,"color":"#013838","links":{"original_url":null}},"favicon":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}}},"typography":{"heading_font":null,"body_font":null,"code_font":null,"spacing":null,"custom_heading":{"url":null,"filename":null,"format":null},"custom_code":{"url":null,"filename":null,"format":null},"custom_body":{"regular":{"url":null,"filename":null,"format":null},"medium":{"url":null,"filename":null,"format":null},"semibold":{"url":null,"filename":null,"format":null}}},"ai":{"dropdown":"enabled","options":{"ask_ai":"disabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","view_as_markdown":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"}}},"custom_code":{"css":null,"js":null,"html":{"header":null,"home_footer":null,"page_footer":null}},"header":{"type":"overlay","gradient_color":"#137e7a","subnav":{"alignment":"start"},"link_style":"buttons","overlay":{"fill":"auto","type":"triangles","position":"top-left","image":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}}}},"navigation":{"collapsible_categories":"disabled","breadcrumbs":"disabled","first_page":"landing_page","left":[{"type":"custom_page","title":"Glossary","url":null,"custom_page":"glossary"}],"logo_link":"landing_page","page_icons":"enabled","right":[{"type":"link_url","title":"Muxy Developer Portal","url":"https://dev.muxy.io","custom_page":null},{"type":"link_url","title":"Twitch Developer Console","url":"https://dev.twitch.tv","custom_page":null}],"search_modal":"classic","sub_nav":[],"subheader_layout":"links","version":"disabled","links":{"home":{"label":"Home","visibility":"enabled"},"graphql":{"label":"GraphQL","visibility":"disabled","schema":null},"guides":{"label":"Guides","alias":null,"visibility":"enabled"},"reference":{"label":"API Reference","alias":null,"visibility":"enabled"},"recipes":{"label":"Recipes","alias":null,"visibility":"enabled"},"changelog":{"label":"Changelog","alias":null,"visibility":"enabled"},"discussions":{"label":"Discussions","alias":null,"visibility":"disabled"}}}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"disabled","do_not_translate_words":[],"ai_unlocked_languages":null}}},"version":{"_id":"613fc7f5dd51cf00370862ab","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":true,"is_hidden":false,"is_deprecated":false,"categories":["613fc7f5dd51cf00370862ad","613fc7f5dd51cf00370862ad","613fc7f5dd51cf00370862b3","6140b4f4d85bb2000f6c5214","6140b5358519890060c5b901","6140bacc4c43af005b586416","6140bf0603bd030076438580","6140bfba91b2a300292d7d60","6140c2ea9ed947004d5565d5","6140c2ff6833cc0073eca354","614219d9fdbb8d012c02a567","614219fcf4529b005bd1d5d4","61421eafb139b600324fffe0","61421eb8de0687000fc740f9","614bb4e57359d005997f7acc","615498dfe23868000fe078f0","61a691a50bbd78006d2e641b","620e74a99bd783002fb1856b","6376bf4f127d990003172dc9"],"project":"613fc7f5dd51cf00370862a6","releaseDate":"2021-09-13T21:51:49.295Z","createdAt":"2021-09-13T21:51:49.295Z","__v":1}},"i18n":{"language":"en","translations":{"en":{"common":{"ai":{"aiOpenFailed":"Failed to open SuperHub AI panel.","askAi":"Ask AI","askAiAriaLabel":"Open Ask AI Assistant","chatgpt":"Open in ChatGPT","claude":"Open in Claude","copied":"Copied","mdCopy":"Copy Page","mdOpenFailed":"Failed to open as markdown","mdView":"View as Markdown","mcp":{"appNotFound":"{{app}} does not appear to be installed.","command":"Copy MCP Command","config":"Copy MCP Config","copied":"Copied to clipboard!","cursor":"Connect to Cursor","downloadApp":"Download {{app}}","header":"MCP","vscode":"Connect to VS Code"},"noMdToCopy":"No markdown content available to copy.","openFailed":"Failed to open {{option}}.","settings":{"askAiRequired":"Ask AI must be enabled for your project","description":"Adds a dropdown menu for sharing docs with AI assistants.","disabledInternal":"Disabled for internal docs — set to public to enable","dropdownOptions":"Dropdown Options","preview":"Preview","saveFailed":"Failed to save AI dropdown configuration. Please try again.","title":"AI Dropdown"}},"aiInlineEditor":{"disabled":"The AI inline editor has been disabled for this project."},"apiConfig":{"allRequests":"All Requests","allRequestsFilter":"All Requests","apiKeysNotFound":"No API keys found.","apiKeysNotSynced":"API keys are not synced with this developer hub.","apiRequests":"API Requests","authentication":"Authentication","credentials":"Credentials","dayFilter":"Last 24 Hours","emptyStatePrompt":"Make a request to see them here or \u003ca>Try It\u003c/a>!","error":"Error","errorRequestsFilter":"400 & 500","gettingStarted":"Getting Started","logInPrompt":"Log in to see your API keys","monthFilter":"Last 30 Days","moreErrors":"More Errors","moreRequests":"More Requests","myRecentErrors":"My Recent Errors","myRecentRequests":"My Recent Requests","myRequests":"My Requests","myTopEndpoints":"My Top Endpoints","personalizedDocsSetup":"Set up \u003c
384Button>Personalized Docs\u003c/Button> to show users their API keys.","pickALanguage":"Pick a language","popularEndpoints":"Popular Endpoints","success":"Success","weekFilter":"Past week","yourApiKeys":"Your API Keys"},"attribution":"by {{attribution}}","auth":{"any":"any","apiKey":"API Key","apiKeyPrompt":"Get API Key","apiKeyShow":"Show API Key","apiKeyHide":"Hide API Key","apiKeyToggle":"Toggle API Key","apiInfo":"API Info","authenticate":"Authenticate","authorize":"Authorize","authorizationUrl":"Authorization URL","authorizedScopes":"Authorized scopes for this token","authorizedScopesEmpty":"Token has no authorized scopes","bearer":"Bearer","clearSelection":"Clear Selection","clientId":"Client ID","deselectAll":"Deselect All","credentialMessage":"{{projectName}} accepts {{count}} credential methods. You can use {{option}} of them.","credentialsFor":"Credentials for {{name}}","credentialsForMd":"Credentials for `{{name}}`","either":"eitherLog in to use your API keys","grantType":"Grant Type","info":{"base64":"Your username and password will be combined with a : to form a base64-encoded string: `ENCODED_TOKEN`","basic":"Your username and password are being sent in the [header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization) of the request.","bearer":"\n  Bearer authentication gives access to the “bearer of the token” and must be sent in the Authorization header. For example:\n  ```bash\n  curl --request POST \\\n       --url https://httpbin.org/anything/bearer\n       --header 'Authorization: Bearer BEARER_TOKEN'\n  ```\n  ","cookie":"Your API Key is being sent as a [cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies).","header":"Your API Key is sent in the request [header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers).","jwt":"The bearer token's format is JSON Web Token (JWT). Read more at [JWT.io](https://jwt.io/).","query":"Your API Key is being sent as a query parameter in the [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL)."},"infoTable":{"contact":"Contact","description":"Description","identifier":"Identifier","license":"License","name":"Name","termsOfService":"Terms of Service","title":"Title","summary":"Summary","url":"URL","version":"Version"},"information":"Information","label":"Label","lastUsed":"Last Used","logInPrompt":"Log in to use your API keys","logIn":"Log In","logOut":"Log Out","or":"or","password":"password","passwordHideLabel":"Hide","passwordShowLabel":"Show","reAuthorize":"Re-Authorize","required":"required","requiredScopes":"Required Scopes","requiredScopesMissingMsg_one":"Missing {{count}} required scope","requiredScopesMissingMsg_other":"Missing {{count}} required scopes","scopes":"Scopes","scopeGroupAllRequired":"All {{count}} scopes required","scopesOrRequired":"At least 1 scope group required","scopesMissingCount":"({{count}} missing from this token)","scopesMissingMsg_one":"This operation requires {{count}} additional scope","scopesMissingMsg_other":"This operation requires {{count}} additional scopes","scopesRequiredMsg":"Scopes required for this operation","scopesRequiredNoneMsg":"No scopes required for this operation","selectAll":"Select All","selectCredentials":"Select Credentials","token":"token","tokenDetails":"Token Details","tokenRotationMessage":"We recommend you rotate this token.","tokenUrl":"Token URL","useOwnToken":"Use Your Own Token","username":"username"},"close":"Close","colorScheme":{"dark":"Dark","light":"Light","system":"System","title":"Color Scheme"},"changelog":{"added":"Added","deprecated":"Deprecated","fixed":"Fixed","improved":"Improved","removed":"Removed","title":"Changelog"},"copyToClipboard":{"copiedFull":"Copied to clipboard!","copiedShort":"Copied!","copyFull":"Copy to clipboard","copyShort":"Copy","failed":"Failed to copy to clipboard.","unable":"Unable to copy"},"discussions":{"addCommentLabel":"Add Comment","adminLabel":"Admin","answered":"Answered","askQuestion":"Ask a Question","backToAll":"Back to all","blankBodyError":"Your post body cannot be blank.","blankCommentError":"Your comment cannot be blank.","blankPostError":"Your post cannot be blank.","blankTitleError":"Your post title cannot be blank.","cancelButtonLabel":"Cancel","commentAndMarkAnswered":"Comment and mark answered","commentAndReopen":"Comment and reopen","deleteButtonLabel":"Delete","deleteCommentConfirmation":"Are you sure you want to delete this comment?","deleteCommentPermanentConfirmation":"Are you sure you want to permanently delete this comment?","deleteComentSuccess":"This comment has been deleted","deletePermanentlyButtonLabel":"Permanently Delete","deletePostConfirmation":"Are you sure you want to delete this post?","editButtonLabel":"Edit","editedLabel":"edited","emailInputAriaLabel":"[email protected]","emailInputPlaceholder":"Your Email","errorMessagePrefix":"Error:","faqAddLabel":"Add to FAQ","faqRemoveLabel":"Remove from FAQ","faqsLabel":"FAQs","logInToComment":"\u003cb>Log in\u003c/b> to add a comment.","markAsAnswered":"Mark as answered","markAsUnanswered":"Mark as unanswered","markCommentSpamLabel":"Mark this comment as spam","markPostSpamLabel":"Mark this post as spam","nameAndEmailError":"Please fill out your name and email.","nameInputAriaLabel":"Your name","nameInputPlaceholder":"Full name","permanentlyDeleteLabel":"Permanently delete","questionInputAriaLabel":"New question","recaptchaInvalidError":"Invalid ReCaptcha tokens.","recaptchaRequiredError":"Please complete the reCaptcha verification.","recentLabel":"Recent","saveButtonLabel":"Save","submitButtonLabel":"Post Question","tagButtonLabel":"Tag","tagInputPlaceholder":"Enter tag","titleInputAriaLabel":"Question title","titleInputPlaceholder":"Your question title","unansweredLabel":"Unanswered","voteCountLabel":"{{count}} vote","voteCountLabel_plural":"{{count}} votes"},"docsAudit":{"disabled":"The AI Docs Audit has been disabled for this project.","scheduleDisabled":"Disabled by admin"},"emptyState":{"changelog":{"title":"No Changelogs"},"discussion":{"actionLabel":"New Question","description":"Nobody's asked a question yet. Be the first!","title":"No Discu
384ssions"},"guide":{"title":"No Guides"},"recipe":{"title":"No Recipes"},"reference":{"title":"No API Endpoints"}},"llmsTxt":{"documentation":"Documentation","documentationFor":"Documentation for {{name}}","groupIndexHint":"Each project below either links to its own llms.txt, which contains a full index of that project's documentation, or inlines the index its authors wrote by hand. Where links are listed, the section and category ones narrow to that part of the docs.","heading":"{{name}} Documentation","hubBanner":"For AI agents: visit {{url}} for an index of all pages formatted in Markdown and endpoints in OpenAPI.","indexLink":"{{title}} index","mdSuffixHint":"Append .md to any documentation page URL to get its markdown version.","openapiDefinition":"OpenAPI definition","openapiIntroNote":"This is the part of the API’s OpenAPI definition that covers servers and authentication. Each endpoint page has its own operation.","pageNotFound":"Page not found. The full index is at {{url}}. Use the agentTools in the front matter above to search the docs or browse the index.","projectDocumentation":"{{name}} documentation","queryCapabilityHint":"To search every page by keyword, fetch {{url}} with your own terms. Results come back most relevant first.","queryFailedHint":"Search is temporarily unavailable, so this is the complete index rather than the pages matching `{{query}}`.","queryNoResultsHint":"No pages matched `{{query}}`. Fetch {{url}} for the complete index.","queryResultsHint":"Pages matching `{{query}}`, most relevant first. Fetch {{url}} for the complete index.","searchResults":"Search Results","sectionIndexNote":"full section index","siblingPages":"Sibling pages","siteIndexHint":"The index for every project on this site is at {{url}}.","splitCategoriesHint":"Category links narrow to a single category.","splitIndexHint":"Each section below links to its own llms.txt, which indexes every page in that section.","subPages":"Sub pages","subsetIndexHint":"This file lists one part of the documentation. The full index is at {{url}}."},"more":"more…","next":"Next","onlyVisibleToAdmins":"Only visible to ReadMe admins","owlbotChat":{"assistant":"Assistant","clearChat":"Clear chat history","closeChat":"Close chat","emptyMessage":"I’ll help you find answers in the docs","emptyTitle":"Ask AI","failureTitle":"Ask AI","fallbackHeading":"Something went wrong with Ask AI","fallbackMessage":"Please try refreshing the page or contact support if the problem persists.","inputPlaceholder":"Ask AI anything…","interrupted":"Ask AI couldn’t finish this answer. Please try again.","providerFailure":"Ask AI is temporarily unavailable. Please try again in a moment.","resend":"Resend?","sourceCount_one":"{{count}} source","sourceCount_other":"{{count}} sources","sourceLabel":"{{title}} ({{section}})","streamError":"...Something went wrong.","tryAgain":"Try Again","typingLabel":"Generating","voteFailure":"Failed to record vote. It may take a moment for the message to be saved. Please try again.","aiDisclaimer":"AI can get things wrong, so double check any info or code. You're responsible for verifying results are accurate and fit your needs before taking action. Do not input sensitive information.","voteLabelDown":"Not helpful","voteLabelUp":"Helpful","thinkingDefault":"Thinking...","thinkingSearchKnowledge":"Searching knowledge base...","thinkingSearchPages":"Searching for keywords...","thinkingListPages":"Looking up pages...","thinkingReadPage":"Reading relevant pages..."},"pageLinter":{"disabled":"The AI Page Linter has been disabled for this project."},"pageNotFound":{"heading":"Page Not Found","metaTitle":"404 Not Found"},"pageThumbs":{"no":"No","placeHolder":"Leave an optional comment…","prompt":"Did this page help you?","submit":"Vote","thankYou":"Thanks for voting!","yes":"Yes"},"poweredBy":"Powered by","recipes":{"inThisRecipe":"In this Recipe","openRecipe":"Open Recipe","step_one":"{{count}} step","step_other":"{{count}} steps"},"reference":{"callback":"Callback","clearExample":"Clear Example","clearResponse":"Clear Response","data":"Data","example":"Example","examplePrompt":"Choose an example","examplePromptOr":"Or choose an example","examples":"Examples","headers":"Headers","invali
384dJSON":"Invalid JSON","inspectRequest":"Inspect Request","jsonEditorAriaLabel":"Toggle Raw JSON Editor","jsonEditorLabel":"Edit JSON Body","language":"Language","library":"Library","log":"Log","logsLoading":"Retrieving recent requests…","logsPrompt":"Make a request to see history.","logsSeeAllLabel":"See All Requests","logsStatusLabel":"Status","logsThisMonth_one":"{{count}} Request This Month","logsThisMonth_other":"{{count}} Requests This Month","logsTimeLabel":"Time","logsUserAgentLabel":"User Agent","payloadExample":"Payload Example","recentRequests":"Recent Requests","replayRequest":"Replay Request","request":"Request","requestExample":"Request Example","requestExamples":"Request Examples","requestHistoryPrompt":"Log in to see full request history","requestInstructions":"Request instructions","resetBody":"Reset","response":"Response","showDescription":"Show Description","hideDescription":"Hide Description","sdkCodeEmpty":"No SDK code available","sdkCodeError":"Error retrieving SDK code. Please try again later.","tryIt":"Try It","tryItPrompt":"Click \u003ccode>Try It!\u003c/code> to start a request and see the response here!","tryItPunctuated":"Try It!"},"search":{"arrowsToNavigate":"Use \u003ckbd>↑\u003c/kbd> \u003ckbd>↓\u003c/kbd> to navigate","askAiAbout":"Ask about \"{{query}}\"","askAiEmpty":"Ask AI","askAiSubtitle":"Find the answer using the Ask AI assistant","askAiSuggestionsTitle":"Ask AI Assistant","askFailure":"We had an issue responding, please try again later","filtersAll":"All","filtersEmpty":"No matches","filtersLabel":"Filters","filtersMore":"{{name}} +{{others}}","filtersPlaceholder":"Filter","forMore":"for more","fromTheDocs":"From the Docs","inProject":"in {{project}}","noResults":"No search results for '{{query}}'","noResultsShort":"No search results","resultsFound_one":"{{count}} search result","resultsFound_other":"{{count}} search results","resultsLabel":"Search results","placeholder":"Search","pressEnterToAskAi":"Press \u003ckbd>Enter\u003c/kbd> to ask AI","pressEnterToOpen":"Press \u003ckbd>Enter\u003c/kbd> to open","promptEmpty":"Start typing to search…","promptLoading":"Keep typing to search…","recentTitle":"Recent","removeRecent":"Remove {{label}} from recent searches","searching":"Searching…","thinking":"Thinking"},"sections":{"all":"All","apiLogs":"API Logs","changelog":"Changelog","discussions":"Discussions","guides":"Guides","graphql":"GraphQL","home":"Home","pages":"Pages","recipes":"Recipes","reference":"API Reference"},"sidebar":{"filter":"Filter","filterPages":"Filter pages","noMatchingPages":"No matching pages","search":"Search"},"superHubAgent":{"disabled":"The SuperHub Agent has been disabled for this project."},"tableOfContents":"Table of Contents","time":{"absolute":{"noPrefix":"{{time}}","noPrefixAttributed":"{{time}} by {{attribution}}","postedPrefix":"Posted {{time}}","postedPrefixAttributed":"Posted {{time}} by {{attribution}}","updatedPrefix":"Updated {{time}}","updatedPrefixAttributed":"Updated {{time}} by {{attribution}}"},"justNow":{"noPrefix":"Less than a minute ago","noPrefixAttributed":"Less than a minute ago by {{attribution}}","postedPrefix":"Posted just now","postedPrefixAttributed":"Posted just now by {{attribution}}","updatedPrefix":"Updated just now","updatedPrefixAttributed":"Updated just now by {{attribution}}"},"relative":{"noPrefix":"{{time}}","noPrefixAttributed":"{{time}} by {{attribution}}","postedPrefix":"Posted {{time}}","postedPrefixAttributed":"Posted {{time}} by {{attribution}}","updatedPrefix":"Updated {{time}}","updatedPrefixAttributed":"Updated {{time}} by {{attribution}}"}},"unableToCopy":"Unable to copy","version":{"beta":"Beta","default":"Default","deprecated":"Deprecated","hiddenLabel":"Hidden Version"},"whatsNext":"What’s Next"}}}},"is404":false,"isFramePreview":false,"isIframeSsrTransfer":false,"isStreamingSSR":false,"isDetachedProductionSite":false,"lang":"en","langFull":"Default","reqUrl":"/docs/quick-start","version":{"_id":"613fc7f5dd51cf00370862ab","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":true,"is_hidden":false,"is_deprecated":false,"categories":["613fc7f5dd51cf00370862ad","613fc7f5dd51cf00370862ad","613fc7f5dd51cf00370862b3","6140b4f4d85bb2000f6c5214","6140b5358519890060c5b901","6140bacc4c43af005b586416","6140bf0603bd030076438580","6140bfba91b2a300292d7d60","6140c2ea9ed947004d5565d5","6140c2ff6833cc0073eca354","614219d9fdbb8d012c02a567","614219fcf4529b005bd1d5d4","61421eafb139b600324fffe0","61421eb8de0687000fc740f9","614bb4e57359d005997f7acc","615498dfe23868000fe078f0","61a691a50bbd78006d2e641b","620e74a99bd783002fb1856b","6376bf4f127d990003172dc9"],"project":"613fc7f5dd51cf00370862a6","releaseDate":"2021-09-13T21:51:49.295Z","createdAt":"2021-09-13T21:51:49.295Z","__v":1}}</script>
384</div><div id="hub-container"><div class="hub-container"><div state-container ng-attr-id="{{state.current().root !== 'docs' &amp;&amp; 'react-app-content-container'}}"><div id="replace-view" ng-non-bindable></div></div></div></div>
384<script>var is_hub = true;
385var is_hub2 = true;
386var is_hub_edit = true;
387</script>
387<div id="ssr-end">
387<script id="__LOADABLE_REQUIRED_CHUNKS__" type="application/json">[2852,4011,6269,444,4148,1456,7137,6306,4062,3238,3057,9977,6146,441,8836,5446,1306,8813,7358,9127,1936,2712,779,5492,97,1297,2985,4071,3678,4818,86,5798]</script>
387<script id="__LOADABLE_REQUIRED_CHUNKS___ext" type="application/json">{"namedChunks":["routes-SuperHub","Header","index","routes-Doc","RDMD","SuperHub-components-AIDropdown","Footer"]}</script>
vendor: 1 bytes, line 387
387
388<script async data-chunk="main" src="https://cdn.readme.io/public/hub/web/main.cc789f714ace36f66839.js"></script>
vendor: 1 bytes, line 388
388
389<script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/routes-SuperHub.529e1767765a70259c1d.js"></script>
vendor: 1 bytes, line 389
389
390<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/4011.98c6655a4c5d99e73da8.js"></script>
vendor: 1 bytes, line 390
390
391<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/6269.ec68447c21baa0d006c4.js"></script>
vendor: 1 bytes, line 391
391
392<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/444.9911d4434036a49d02be.js"></script>
vendor: 1 bytes, line 392
392
393<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/4148.fbcb7b553d8b36a3535f.js"></script>
vendor: 1 bytes, line 393
393
394<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/Header.a76de00df61db59a3b60.js"></script>
vendor: 1 bytes, line 394
394
395<script async data-chunk="index" src="https://cdn.readme.io/public/hub/web/7137.6d393781d59245222014.js"></script>
vendor: 1 bytes, line 395
395
396<script async data-chunk="index" src="https://cdn.readme.io/public/hub/web/6306.53fe92024e6ceb33b4de.js"></script>
vendor: 1 bytes, line 396
396
397<script async data-chunk="index" src="https://cdn.readme.io/public/hub/web/4062.6dae9bdb129de061007d.js"></script>
vendor: 1 bytes, line 397
397
398<script async data-chunk="index" src="https://cdn.readme.io/public/hub/web/3238.45aa2b174eed17f6fa6e.js"></script>
vendor: 1 bytes, line 398
398
399<script async data-chunk="index" src="https://cdn.readme.io/public/hub/web/index.c9757f8bfb66fde2dba4.js"></script>
vendor: 1 bytes, line 399
399
400<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/9977.a933c2a0ee96169ffef7.js"></script>
vendor: 1 bytes, line 400
400
401<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/6146.e0750bc6839fd326854d.js"></script>
vendor: 1 bytes, line 401
401
402<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/441.0bca8969b4854384884a.js"></script>
vendor: 1 bytes, line 402
402
403<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/8836.278c0fa83edd766823b0.js"></script>
vendor: 1 bytes, line 403
403
404<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/5446.66a863132dae0648c54c.js"></script>
vendor: 1 bytes, line 404
404
405<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/1306.50782c5e797f388d05de.js"></script>
vendor: 1 bytes, line 405
405
406<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/8813.fa11b4c3ec4dd6845870.js"></script>
vendor: 1 bytes, line 406
406
407<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/7358.586fb9797e5f7461750b.js"></script>
vendor: 1 bytes, line 407
407
408<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/9127.bb4d560bc945b6900553.js"></script>
vendor: 1 bytes, line 408
408
409<script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/routes-Doc.19f639c523519efb3cba.js"></script>
vendor: 1 bytes, line 409
409
410<script async data-chunk="RDMD" src="https://cdn.readme.io/public/hub/web/2712.4cdafc1e56a745cc323d.js"></script>
vendor: 1 bytes, line 410
410
411<script async data-chunk="RDMD" src="https://cdn.readme.io/public/hub/web/779.787e23290115569e9f85.js"></script>
vendor: 1 bytes, line 411
411
412<script async data-chunk="RDMD" src="https://cdn.readme.io/public/hub/web/5492.b51cfbe6fdbf46b8de46.js"></script>
vendor: 1 bytes, line 412
412
413<script async data-chunk="RDMD" src="https://cdn.readme.io/public/hub/web/97.5601dd7405fb2adb484c.js"></script>
vendor: 1 bytes, line 413
413
414<script async data-chunk="RDMD" src="https://cdn.readme.io/public/hub/web/1297.27dddfa8ccd2dd3bce10.js"></script>
vendor: 1 bytes, line 414
414
415<script async data-chunk="RDMD" src="https://cdn.readme.io/public/hub/web/2985.a3c9e5ecc4ac37e1db9b.js"></script>
vendor: 1 bytes, line 415
415
416<script async data-chunk="RDMD" src="https://cdn.readme.io/public/hub/web/4071.7611d1296eb10d1ab027.js"></script>
vendor: 1 bytes, line 416
416
417<script async data-chunk="RDMD" src="https://cdn.readme.io/public/hub/web/RDMD.f96e2a08f15009d9c455.js"></script>
vendor: 1 bytes, line 417
417
418<script async data-chunk="SuperHub-components-AIDropdown" src="https://cdn.readme.io/public/hub/web/4818.9a6592613ce853a623e4.js"></script>
vendor: 1 bytes, line 418
418
419<script async data-chunk="SuperHub-components-AIDropdown" src="https://cdn.readme.io/public/hub/web/SuperHub-components-AIDropdown.b6b2fa247d03544dffd3.js"></script>
vendor: 1 bytes, line 419
419
420<script async data-chunk="Footer" src="https://cdn.readme.io/public/hub/web/Footer.167664af72797a4cf2f8.js"></script>
420</div>
420<script id="hub-me" type="application/json" data-json="{&quot;loggedIn&quot;:false,&quot;search&quot;:{&quot;app&quot;:&quot;T28YKFATPY&quot;,&quot;token&quot;:&quot;ZTJlNGM3YzQ0NDEyODhiNTgxZTA0MWJkMjUwMGM5Y2ZmZjYyNGNiNTljM2YxZmUzMjY5Mjg5MjM0ZmEyMDMxZXRhZ0ZpbHRlcnM9KHByb2plY3Q6NjEzZmM3ZjVkZDUxY2YwMDM3MDg2MmE2KSwodmVyc2lvbjpub25lLHZlcnNpb246NjEzZmM3ZjVkZDUxY2YwMDM3MDg2MmFiKSwoaGlkZGVuOm5vbmUsaGlkZGVuOmZhbHNlKSwoaW5kZXg6Q3VzdG9tUGFnZSxpbmRleDpQYWdlLGluZGV4OkJsb2csaW5kZXg6VHV0b3JpYWwp&quot;,&quot;filters&quot;:&quot;tagFilters=(project:613fc7f5dd51cf00370862a6),(version:none,version:613fc7f5dd51cf00370862ab),(hidden:none,hidden:false),(index:CustomPage,index:Page,index:Blog,index:Tutorial)&quot;,&quot;metaData&quot;:[{&quot;modules&quot;:{&quot;landing&quot;:true,&quot;docs&quot;:true,&quot;examples&quot;:true,&quot;reference&quot;:true,&quot;changelog&quot;:true,&quot;discuss&quot;:false,&quot;suggested_edits&quot;:true,&quot;logs&quot;:false,&quot;custompages&quot;:true,&quot;tutorials&quot;:true,&quot;graphql&quot;:false},&quot;id&quot;:&quot;613fc7f5dd51cf00370862a6&quot;,&quot;name&quot;:&quot;Muxy&quot;,&quot;subdomain&quot;:&quot;muxy&quot;,&quot;subpath&quot;:&quot;&quot;,&quot;nav_names&quot;:{&quot;docs&quot;:&quot;&quot;,&quot;reference&quot;:&quot;&quot;,&quot;changelog&quot;:&quot;&quot;,&quot;discuss&quot;:&quot;&quot;,&quot;tutorials&quot;:&quot;&quot;,&quot;recipes&quot;:&quot;&quot;}}]}}"></script>
420<script id="readme-data-baseUrl" type="application/json" data-json="&quot;/&quot;"></script>
420<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a43bfeb8ad87c6c7',t:'MTc5MDg2MzI0MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
420</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.