Skip to main content

Complete Twitch Helix API SDK with Pydantic validation for 170+ endpoints

Project description

twitch-sdk

Complete Twitch Helix API SDK with Pydantic validation for 170+ endpoints.

Installation

pip install twitch-sdk

Usage

Basic Usage

import asyncio
from twitch_sdk import TwitchSDK
from twitch_sdk.schemas.streams import GetStreamsRequest

async def main():
    async with TwitchSDK() as sdk:
        # Get live streams
        params = GetStreamsRequest(game_id=["509658"])  # Just Chatting
        streams = await sdk.streams.get_streams(sdk.http, params)
        for stream in streams.data:
            print(f"{stream.user_name}: {stream.title}")

asyncio.run(main())

Send Chat Message

from twitch_sdk import TwitchSDK
from twitch_sdk.schemas.chat import SendMessageRequest

async def main():
    async with TwitchSDK() as sdk:
        params = SendMessageRequest(
            broadcaster_id="123456",
            sender_id="123456",
            message="Hello from the SDK!"
        )
        result = await sdk.chat.send_chat_message(sdk.http, params)
        print(f"Message sent: {result.data[0].is_sent}")

Create a Poll

from twitch_sdk import TwitchSDK
from twitch_sdk.schemas.polls import CreatePollRequest, PollChoiceInput

async def main():
    async with TwitchSDK() as sdk:
        params = CreatePollRequest(
            broadcaster_id="123456",
            title="Favorite game?",
            choices=[
                PollChoiceInput(title="Option A"),
                PollChoiceInput(title="Option B"),
            ],
            duration=60,
        )
        poll = await sdk.polls.create_poll(sdk.http, params)
        print(f"Poll created: {poll.data[0].id}")

EventSub WebSocket

from twitch_sdk import TwitchSDK

async def main():
    async with TwitchSDK() as sdk:
        async with sdk.create_eventsub_websocket() as ws:
            # Subscribe to chat messages
            await ws.subscribe(
                event_type="channel.chat.message",
                version="1",
                condition={
                    "broadcaster_user_id": "123456",
                    "user_id": "123456"
                }
            )

            # Process events
            async for event in ws.events():
                print(f"Event: {event}")

Endpoints

The SDK covers all Twitch Helix API endpoints:

  • Ads: start_commercial, get_ad_schedule, snooze_next_ad
  • Analytics: get_extension_analytics, get_game_analytics
  • Bits: get_bits_leaderboard, get_cheermotes
  • Channel Points: custom rewards, redemptions
  • Channels: get/modify channel info, followers, VIPs
  • Charity: campaigns, donations
  • Chat: messages, emotes, badges, settings, shoutouts
  • Clips: create_clip, get_clips
  • EventSub: subscriptions, WebSocket, conduits
  • Games: get_games, get_top_games
  • Goals: creator goals
  • Guest Star: sessions, invites, slots
  • Hype Train: events
  • Moderation: bans, blocked terms, AutoMod, moderators
  • Polls: create, get, end
  • Predictions: create, get, end
  • Raids: start, cancel
  • Schedule: segments, iCalendar
  • Search: categories, channels
  • Streams: get_streams, markers, stream key
  • Subscriptions: broadcaster subscriptions
  • Teams: get teams
  • Users: get/update users, blocks, extensions
  • Videos: get, delete
  • Whispers: send whisper

Pydantic Validation

All requests and responses use Pydantic models for validation:

from twitch_sdk.schemas.chat import SendMessageRequest

# Validation happens automatically
params = SendMessageRequest(
    broadcaster_id="123",
    sender_id="456",
    message="Hello!"
)

# Access validated fields
print(params.broadcaster_id)

Dependencies

  • twitch-client (auth layer)
  • pydantic
  • websockets (for EventSub)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

twitch_sdk-0.1.0.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

twitch_sdk-0.1.0-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

File details

Details for the file twitch_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: twitch_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.7 Darwin/25.2.0

File hashes

Hashes for twitch_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3e183d78b3a6e1bd35f798f41792c6263c6478811de4193ca4b44cc2f2ce93a0
MD5 b811a8c669e218ab737bd49d3af8914c
BLAKE2b-256 db6d955e0cbff30e8ea22eb8e9fdd50b6a16ac2a8730a227d15c6cd019996b05

See more details on using hashes here.

File details

Details for the file twitch_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: twitch_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.7 Darwin/25.2.0

File hashes

Hashes for twitch_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca8de46d89aacd8cb3a5eec5364cb7f51af9ca1e4e6bce253b14af39371a7439
MD5 a02ebe834945462a91c70d44b575383a
BLAKE2b-256 e13181612fd2d85d973ab2a23a3f0744340deb4e4ea9c8f4804aba572d7c858c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page