Skip to main content

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

Project description

twitch-sdk

PyPI Python License: MIT

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

Features

  • Full API Coverage - All Twitch Helix endpoints (chat, streams, moderation, etc.)
  • Pydantic Validation - Type-safe request/response models with automatic validation
  • Async/Await - Built for modern Python async applications
  • EventSub WebSocket - Real-time event subscriptions built-in
  • Auto Token Refresh - Handles OAuth token management via twitch-client

Installation

pip install twitch-sdk

Quick Start

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 for "Just Chatting"
        params = GetStreamsRequest(game_id=["509658"])
        streams = await sdk.streams.get_streams(sdk.http, params)

        for stream in streams.data:
            print(f"{stream.user_name}: {stream.title} ({stream.viewer_count} viewers)")

asyncio.run(main())

Credentials Setup

Create ~/.twitch-secrets/.env with your Twitch credentials:

TWITCH_CLIENT_ID=your_client_id
TWITCH_CLIENT_SECRET=your_client_secret
TWITCH_ACCESS_TOKEN=your_access_token
TWITCH_REFRESH_TOKEN=your_refresh_token

See twitch-client for detailed setup instructions.

Usage Examples

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}")

API Coverage

The SDK covers all Twitch Helix API endpoints:

Category 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, editors
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, shield mode
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)

# Serialize for API
print(params.model_dump(exclude_none=True))

Related Projects

License

MIT License - see LICENSE for details.

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.4.tar.gz (23.9 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.4-py3-none-any.whl (44.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: twitch_sdk-0.1.4.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for twitch_sdk-0.1.4.tar.gz
Algorithm Hash digest
SHA256 3cb65af9bb2fd8a6eb3dba528dfca3f560167eb1c3e55580111adde18e0fdd45
MD5 6deb0f1e012fff6c399fca78c21fd4d4
BLAKE2b-256 c561a594f24284ee1d3c7f3d3ab4aa857d16d62bcd40fd19b6fda0d7131c9512

See more details on using hashes here.

File details

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

File metadata

  • Download URL: twitch_sdk-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 44.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for twitch_sdk-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 15b62c487410eb25bdb4db2623f827223448f608ea5647787d903fb426687797
MD5 44171d7d990b0f755780e85c276f9706
BLAKE2b-256 a6a1bc5d034c249d324cb794c741d4e9bd7c5bde76c7d94f279f517f885b9c3f

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