{"registry_version":"2026.1025.387","generated_at":"2026-10-25T06:27:00Z","content_sha256":"089d16f627d9365e3d0663cc8069203706d7cb23a76c332226e29686968811a5","signed":true,"signature":{"key_id":"ed25519:74ca19268e364242","algorithm":"ed25519","expires_at":"2026-11-24T06:27:09Z","expired":false,"manifest":"/registry/manifest.json"},"entry_sha256":"5ffdbad81c3371767b1b0b1abf137d7b47440ea892109a93da8797b9eeb116c1","entry":{"id":"twitch/developer","name":"Twitch Developer application (Helix API)","vendor":"Twitch","summary":"Register an application in the Twitch Developer Console (2FA required) to get a client ID and client secret for OAuth and the Twitch API.","category":"social","group":"C","homepage":"https://dev.twitch.tv/","docs":["https://dev.twitch.tv/docs/authentication/register-app/","https://dev.twitch.tv/docs/api/guide/"],"status":"researched","last_verified":null,"last_researched":"2026-10-25","sources":[{"id":"register-app","url":"https://dev.twitch.tv/docs/authentication/register-app/","title":"Twitch Developers - Registering your app","accessed":"2026-10-25","supports":"Log in to dev.twitch.tv/console with a verified email; enable 2FA; Register Your Application with unique name, OAuth Redirect URLs, Category, CAPTCHA; Client ID is public; New Secret generates a client secret and invalidates the previous one","kind":"official"},{"id":"api-guide","url":"https://dev.twitch.tv/docs/api/guide/","title":"Twitch API guide (rate limits)","accessed":"2026-10-25","supports":"Token-bucket rate limits per minute, default 1 point per request, separate app and user buckets, Ratelimit-Limit/Remaining/Reset headers, 429 on exhaustion; Authorization Bearer and Client-Id headers in examples","kind":"official"},{"id":"developer-agreement","url":"https://legal.twitch.com/en/legal/developer-agreement/","title":"Twitch Developer Services Agreement","accessed":"2026-10-25","supports":"Twitch Data may not be sold, licensed, monetised or shared with third parties without prior written permission; no transfer of end user data to ad networks or data brokers; marketing uses need a separate agreement","kind":"official"},{"id":"extensions-monetization","url":"https://dev.twitch.tv/docs/extensions/monetization/","title":"Twitch Extensions - Monetization","accessed":"2026-10-25","supports":"Bits revenue in Extensions is shared between broadcaster and developer; requires the separate Extensions Developer Agreement","kind":"official"}],"allowed_domains":["dev.twitch.tv","twitch.tv","legal.twitch.com"],"account_model":{"summary":"A Twitch user account (with verified email and 2FA) owns applications registered in the Developer Console.","accounts":[{"name":"Twitch user account","kind":"personal","owned_by":"the person","required":true,"note":"Email must be verified and two-factor authentication enabled before registering an app."},{"name":"Registered application","kind":"developer","owned_by":"the person or company","parent":"Twitch user account","required":true,"note":"Holds the client ID, client secret and OAuth redirect URLs."}],"notes":["Organisation ownership of apps (Twitch Developer organisations) is not covered in the pages reviewed. [to verify]"]},"prerequisites":[{"need":"A Twitch account with a verified email address","note":"The register-app guide says to verify your email first."},{"need":"The OAuth redirect URL(s) your app will use (for example http://localhost:3000 for development)","note":"Redirect URLs are entered when registering the app. [to verify] whether non-HTTPS localhost is accepted."}],"have_ready":[{"kind":"phone_for_2fa","description":"A phone or authenticator app for Twitch two-factor authentication","why":"Twitch requires 2FA on the account before you can register an application.","needed_for":["enable-2fa"],"auto_check":"none","source":"register-app"}],"steps":[{"id":"sign-in","title":"Log in to the Twitch Developer Console","summary":"Log in at dev.twitch.tv/console with your Twitch account. If you have no account you create it yourself; verapli does not create accounts. Verify your email first.","route":"guided","depends_on":[],"gate":"human_login","url":"https://dev.twitch.tv/console","sources":["register-app"]},{"id":"enable-2fa","title":"Enable two-factor authentication","summary":"In Twitch Security and Privacy settings, turn on two-factor authentication, then refresh the console.","route":"guided","depends_on":["sign-in"],"gate":"2fa","url":"https://www.twitch.tv/settings/security","sources":["register-app"]},{"id":"accept-terms","title":"Review the Developer Services Agreement","summary":"Read the Twitch Developer Services Agreement, which governs use of Twitch APIs and Twitch Data, before registering an application.","route":"guided","depends_on":["sign-in"],"gate":"human_terms","url":"https://legal.twitch.com/en/legal/developer-agreement/","sources":["developer-agreement"]},{"id":"register-app","title":"Register your application","summary":"In Applications, click Register Your Application. Enter a name unique across all Twitch applications, add your OAuth Redirect URLs (click Add for each), pick a Category, complete the CAPTCHA and click Create. Then open Manage and copy the Client ID.","route":"guided","depends_on":["enable-2fa","accept-terms"],"gate":"captcha","url":"https://dev.twitch.tv/console/apps","recovery":[{"hiccup":"Register Your Application is unavailable or errors","fix":"Make sure 2FA is enabled on the account and refresh the console.","source":"register-app"},{"hiccup":"Name rejected","fix":"The name must be unique among all Twitch applications; choose another.","source":"register-app"}],"capture":{"env":"TWITCH_CLIENT_ID","kind":"client_id"},"sources":["register-app"]},{"id":"create-secret","title":"Generate a client secret","summary":"On the app's Manage page, click New Secret and copy it straight away; verapli writes it to your env file. Generating a new secret invalidates the previous one.","route":"guided","depends_on":["register-app"],"gate":"human_submit","url":"https://dev.twitch.tv/console/apps","capture":{"env":"TWITCH_CLIENT_SECRET","kind":"secret"},"sources":["register-app"]}],"outputs":[{"name":"TWITCH_CLIENT_ID","description":"Twitch application client ID (public; sent as the Client-Id header)","secret":false,"example_format":"lowercase alphanumeric string, e.g. abc123… [to verify]","environments":["development","production"],"from_step":"register-app"},{"name":"TWITCH_CLIENT_SECRET","description":"Twitch application client secret, used for app access tokens and the authorization code flow","secret":true,"example_format":"lowercase alphanumeric string… [to verify]","environments":["development","production"],"from_step":"create-secret"}],"terms_notes":[{"kind":"rules_say","severity":"red","title":"No selling or sharing Twitch Data","text":"Twitch Data, including data you collect about Twitch end users and insights derived from it, may not be sold, licensed, monetised, distributed for commercial purposes or shared with affiliates or third parties without Twitch's prior written permission. Transferring end user data to ad networks or data brokers is prohibited. [to verify] exact section numbers against the live agreement.","source":"developer-agreement"},{"kind":"rules_say","severity":"amber","title":"Commercial and marketing uses may need a separate agreement","text":"Twitch will consider authorising certain activities, including marketing services, only under a separate agreement and approval process. Using end users' channel content to promote a commercial product needs those users' authorisation. [to verify]","source":"developer-agreement"},{"kind":"rules_say","severity":"yellow","title":"Extension monetisation is a separate programme","text":"Earning from Bits in Extensions requires the separate Twitch Extensions Developer Agreement; Bits revenue is shared between the broadcaster and the developer.","source":"extensions-monetization"},{"kind":"rules_say","severity":"yellow","title":"Rate limits","text":"The API uses a per-minute token bucket (default 1 point per request) with separate buckets for app and user tokens; user-token limits are per client ID per user. Exhausting the bucket returns 429; use Ratelimit-Reset to back off. The documented example shows Ratelimit-Limit 800.","source":"api-guide"}],"pricing_notes":{"free_tier":"Registering an application and calling the Twitch API is not described as paid in the docs reviewed. [to verify]","source":"register-app"},"stripe_projects":false,"api_provisioning":{"available":"no","notes":"Applications are registered in the Developer Console behind 2FA and a CAPTCHA; no documented API to create applications or secrets.","docs":["https://dev.twitch.tv/docs/authentication/register-app/"],"source":"register-app"},"notes":["The Developer Services Agreement page is rendered client-side and its body could not be fetched directly; terms notes rely on search extracts of the official page. [to verify]","Whether the client secret can be viewed again after leaving the page is not stated. [to verify]","Client type (confidential or public) selection at registration is not described in the register-app guide. [to verify]"]}}