A Python wrapper for the Kick.com API that provides easy access to Kick.com's public API endpoints and WebSocket chat functionality.
pip install kickpython- OAuth 2.1 authentication with PKCE support
- Automatic token storage and refresh
- Channel management
- Chat message sending and receiving
- WebSocket-based chat listener
- Support for channel category management
- Proxy support
fromkickpythonimportKickAPI# For OAuth 2.1 authentication (recommended)api=KickAPI(
client_id="your_client_id",
client_secret="your_client_secret",
redirect_uri="your_redirect_uri",
db_path="kick_tokens.db"# Optional, defaults to kick_tokens.db
)
# With proxy supportapi=KickAPI(
client_id="your_client_id",
client_secret="your_client_secret",
redirect_uri="your_redirect_uri",
proxy="proxy.example.com:8080",
proxy_auth="username:password"
)# Generate authorization URL with PKCEauth_data=api.get_auth_url([
"user:read",
"channel:read",
"channel:write",
"chat:write",
"events:subscribe"
])
# The auth URL for user authorizationauth_url=auth_data["auth_url"]
code_verifier=auth_data["code_verifier"]
state=auth_data["state"]
# After user authorization, exchange the code for tokenstoken_data=awaitapi.exchange_code(code, code_verifier)
# Tokens are automatically stored and managedawaitapi.start_token_refresh() # Start automatic token refresh# Send a chat messageawaitapi.post_chat(
channel_id="123",
content="Hello from the bot!"
)# Define a message handlerasyncdefmessage_handler(message):
username=message['sender_username']
content=message['content']
badges=message['badges']
chat_id=message['chat_id']
print(f"{username}: {content}")
# Add the message handlerapi.add_message_handler(message_handler)
# Connect to a channel's chatawaitapi.connect_to_chatroom("channel_username")
# Or connect using chatroom IDawaitapi.connect_to_chatroom("123456")# Get channel informationchannels=awaitapi.get_channels()
# Update channel informationawaitapi.update_channel(
channel_id="123",
category_id="456",
stream_title="New Stream Title"
)# Get list of categoriescategories=awaitapi.get_categories()
# Search for specific categoriesresults=awaitapi.get_categories(query="games")
# Get specific categorycategory=awaitapi.get_category(category_id="123")See examples/oauth.py for a complete Flask-based OAuth implementation that includes:
- OAuth authorization flow with PKCE
- Token management interface
- Token refresh and revocation
- Example API usage
See examples/listen_all_channels.py for a chat bot example that:
- Connects to multiple channels
- Handles chat messages
- Responds to commands
- Handles reconnection
The API methods throw exceptions for error conditions:
ValueErrorfor invalid input parametersExceptionfor API errors with error messages
Example:
try:
awaitapi.post_chat(channel_id="123", content="")
exceptValueErrorase:
print("Invalid parameters:", e)
exceptExceptionase:
print("API error:", e)user:read- Access user informationchannel:read- Access channel informationchannel:write- Update channel metadatachat:write- Send chat messagesevents:subscribe- Subscribe to channel events
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.