Welcome

Create interactive experiences for channels using Twitch Extensions.

Get Started

Build a Twitch Extension in three easy steps:

Step 1

Download and Start Developing

The developer rig can jumpstart your journey into the expansive world of extension creation immediately using local mode.

Note: Steps 2 and 3 enable testing an extension using the rig against Twitch production APIs, but are not required to get started.

developer rig

Step 2

Access production APIs by completing onboarding

To use production APIs with the rig, you’ll need to complete a brief, one-time introduction to Twitch Extensions. You will then be able to release extensions for streamers to use on their channels.

Extensions

Step 3

Create an extension and publish it on the directory

After completing onboarding, you can take your extension from test to production. You'll need your extension client id, secret and version number to continue developing against production APIs. After you upload your extension assets, you can publish your extension on Twitch!

Go To Extension Dashboard

3 Steps

Grow what you know

You’ve tackled the basics, and now you’re ready to dig into our starter content.

Getting Started With Extensions

More Developer Products

There's even more ways to engage streamers and viewers.

Try our API

Top endpoints used by our developers

  • curl -H 'Client-ID: <your client id>' -X GET 'https://api.twitch.tv/helix/streams?first=20'
    
  • {
      "data": [
        {
          "id": "26007494656",
          "user_id": "23161357",
          "game_id": "417752",
          "community_ids": [
            "5181e78f-2280-42a6-873d-758e25a7c313",
            "848d95be-90b3-44a5-b143-6e373754c382",
            "fd0eab99-832a-4d7e-8cc0-04d73deb2e54"
          ],
          "type": "live",
          "title": "Hey Guys, It's Monday - Twitter: @Lirik",
          "viewer_count": 32575,
          "started_at": "2017-08-14T16:08:32Z",
          "language": "en",
          "thumbnail_url": "https://static-cdn.jtvnw.net/previews-ttv/live_user_lirik-{width}x{height}.jpg"
        },
        ...
      ],
      "pagination": {
        "cursor": "eyJiIjpudWxsLCJhIjp7Ik9mZnNldCI6MjB9fQ=="
      }
    }
    
    
  • curl -H 'Client-ID: <your client id>' -X GET 'https://api.twitch.tv/helix/streams?first=20&after=eyJiIjpudWxsLCJhIjp7Ik9mZnNldCI6MjB9fQ=='
    
  • {
      "data": [
        {
          "id": "26007351216",
          "user_id": "7236692",
          "game_id": "29307",
          "community_ids": [
            "848d95be-90b3-44a5-b143-6e373754c382",
            "fd0eab99-832a-4d7e-8cc0-04d73deb2e54",
            "ff1e77af-551d-4993-945c-f8ceaa2a2829"
          ],
          "type": "live",
          "title": "[Punday Monday] Necromancer - Dan's First Character - Maps - !build",
          "viewer_count": 5723,
          "started_at": "2017-08-14T15:45:17Z",
          "language": "en",
          "thumbnail_url": "https://static-cdn.jtvnw.net/previews-ttv/live_user_dansgaming-{width}x{height}.jpg"
        },
        ...
       ],
       "pagination": {
         "cursor": "eyJiIjp7Ik9mZnNldCI6MH0sImEiOnsiT2Zmc2V0Ijo0MH19"
       }
    }
    
    
View Docs Authentication Guide
  • curl -H 'Authorization: Bearer <your bearer token>' -X GET 'https://api.twitch.tv/helix/users?id=44322889'
    
  • {
      "data": [{
        "id": "44322889",
        "login": "dallas",
        "display_name": "dallas",
        "type": "staff",
        "broadcaster_type": "",
        "description": "Just a gamer playing games and chatting. :)",
        "profile_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/dallas-profile_image-1a2c906ee2c35f12-300x300.png",
        "offline_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/dallas-channel_offline_image-1a2c906ee2c35f12-1920x1080.png",
        "view_count": 191836881,
        "email": "login@provider.com"
      }]
    }
    
    
View Docs Authentication Guide
  • curl -H 'Client-ID: <your client id>' -X GET 'https://api.twitch.tv/helix/clips?id=AwkwardHelplessSalamanderSwiftRage'
    
  • {
      "data":
      [{
        "id": "AwkwardHelplessSalamanderSwiftRage",
        "url": "https://clips.twitch.tv/AwkwardHelplessSalamanderSwiftRage",
        "embed_url": "https://clips.twitch.tv/embed?clip=AwkwardHelplessSalamanderSwiftRage",
        "broadcaster_id": "67955580",
        "creator_id": "53834192",
        "video_id": "205586603",
        "game_id": "488191",
        "language": "en",
        "title": "babymetal",
        "view_count": 10,
        "created_at": "2017-11-30T22:34:18Z",
        "thumbnail_url": "https://clips-media-assets.twitch.tv/157589949-preview-480x272.jpg"
      }]
    }
    
    
  • curl -H 'Client-ID: <your client id>' -X GET 'https://api.twitch.tv/helix/clips?broadcaster_id=1234&first=5'
    
  • {"data":
      [{
        "id":"RandomClip1",
        "url":"https://clips.twitch.tv/AwkwardHelplessSalamanderSwiftRage",
        "embed_url":"https://clips.twitch.tv/embed?clip=RandomClip1",
        "broadcaster_id":"1234",
        "creator_id":"123456",
        "video_id":"1234567",
        "game_id":"33103",
        "language":"en",
        "title":"random1",
        "view_count":10,
        "created_at":"2017-11-30T22:34:18Z",
        "thumbnail_url":"https://clips-media-assets.twitch.tv/157589949-preview-480x272.jpg"
      },
      ...
      ]
      "pagination": {"cursor": "eyJiIjpudWxsLCJhIjoiIn0"}
    }
    
    
View Docs Authentication Guide

There's no need to go alone!

Check out our community support page for the resources that can help you on your journey.

Get Support