kicksdk

Kick, without the I/O.

kicksdk knows Kick: which requests to make and what the answers look like, how the realtime chat feed speaks, how webhooks are signed. Your code sends the requests and holds the sockets; kicksdk does the rest, from one Rust core, in five languages.

Install

Rust

The crate itself. Build requests, parse answers, drive a Session.

cargo add kicksdk

JavaScript / TypeScript

WebAssembly, with connectChat for fetch + WebSocket. Types included.

npm install kicksdk-js

Python

PyO3, abi3 wheels; kicksdk.aio.connect_chat over asyncio.

pip install "kicksdk-py[aio]"

Dart / Flutter

dart:ffi; the build hook fetches the native library. connectChat over dart:io.

dart pub add kicksdk

Elixir

A precompiled NIF. Values come back as string-keyed maps.

{:kicksdk, "~> 0.2"}

Two things to know first

The chat feed only accepts kick.com. Kick's realtime server refuses a WebSocket whose Origin is not https://kick.com. Servers set it (every connectChat does); a browser cannot, so in a browser the feed works only on kick.com, in a page or an extension's content script. Anywhere else, relay it through a server.

Much of Kick is unofficial. The website API and the realtime feed are what kick.com's own frontend uses, not a published API, and can change without notice. The official API and webhooks are the stable part. Everything known about each, with where it was seen, is in the Kick reference.

Every function, in every language

Each core function and its name in each package, read from the sources when this site was built. Requests come back as {method, url, headers, body} for your HTTP client; parsers take the status and body. The realtime Session (open, receive, tick, refresh, closed) and connectChat are in each language's reference.

Rust kicksdk::JavaScriptPython kicksdk.DartElixir Kicksdk.
events::parseparseEventevents.parseEvents.parseEvents.parse
content::parseparseContentcontent.parseContent.parseEvents.parse_content
content::emote_urlemoteUrlcontent.emote_urlContent.emoteUrlEvents.emote_url
realtime::chat_channelschatChannelsrealtime.chat_channelsRealtime.chatChannelsRealtime.chat_channels
realtime::chat_connection_requestchatConnectionRequestrealtime.chat_connection_requestRealtime.chatConnectionRequestRealtime.chat_connection_request
realtime::connection_requestconnectionRequestrealtime.connection_requestRealtime.connectionRequestRealtime.connection_request
realtime::parse_connectionparseConnectionrealtime.parse_connectionRealtime.parseConnectionRealtime.parse_connection
realtime::token_requesttokenRequestrealtime.token_requestRealtime.tokenRequestRealtime.token_request
realtime::parse_tokenparseTokenrealtime.parse_tokenRealtime.parseTokenRealtime.parse_token
realtime::retry_after_msretryAfterMsrealtime.retry_after_msRealtime.retryAfterMsRealtime.retry_after_ms
public_api::token_requestappTokenRequestpublic_api.token_requestPublicApi.tokenRequestPublicApi.app_token_request
public_api::parse_tokenparseAppTokenpublic_api.parse_tokenPublicApi.parseTokenPublicApi.parse_app_token
public_api::livestreams_requestslivestreamsRequestspublic_api.livestreams_requestsPublicApi.livestreamsRequestsPublicApi.livestreams_requests
public_api::top_livestreams_requesttopLivestreamsRequestpublic_api.top_livestreams_requestPublicApi.topLivestreamsRequestPublicApi.top_livestreams_request
public_api::parse_livestreamsparseLivestreamspublic_api.parse_livestreamsPublicApi.parseLivestreamsPublicApi.parse_livestreams
public_api::channels_by_ids_requestchannelsByIdsRequestpublic_api.channels_by_ids_requestPublicApi.channelsByIdsRequestPublicApi.channels_by_ids_request
public_api::channels_by_slugs_requestchannelsBySlugsRequestpublic_api.channels_by_slugs_requestPublicApi.channelsBySlugsRequestPublicApi.channels_by_slugs_request
public_api::parse_channelsparseChannelspublic_api.parse_channelsPublicApi.parseChannelsPublicApi.parse_channels
public_api::public_key_requestpublicKeyRequestpublic_api.public_key_requestPublicApi.publicKeyRequestPublicApi.public_key_request
public_api::parse_public_keyparsePublicKeypublic_api.parse_public_keyPublicApi.parsePublicKeyPublicApi.parse_public_key
public_api::subscribe_requestsubscribeRequestpublic_api.subscribe_requestPublicApi.subscribeRequestPublicApi.subscribe_request
public_api::subscriptions_requestsubscriptionsRequestpublic_api.subscriptions_requestPublicApi.subscriptionsRequestPublicApi.subscriptions_request
public_api::parse_subscriptionsparseSubscriptionspublic_api.parse_subscriptionsPublicApi.parseSubscriptionsPublicApi.parse_subscriptions
public_api::unsubscribe_requestsunsubscribeRequestspublic_api.unsubscribe_requestsPublicApi.unsubscribeRequestsPublicApi.unsubscribe_requests
website::channel_requestchannelRequestwebsite.channel_requestWebsite.channelRequestWebsite.channel_request
website::parse_channelparseChannelwebsite.parse_channelWebsite.parseChannelWebsite.parse_channel
website::history_requesthistoryRequestwebsite.history_requestWebsite.historyRequestWebsite.history_request
website::parse_historyparseHistorywebsite.parse_historyWebsite.parseHistoryWebsite.parse_history
website::channel_user_requestchannelUserRequestwebsite.channel_user_requestWebsite.channelUserRequestWebsite.channel_user_request
website::parse_channel_userparseChannelUserwebsite.parse_channel_userWebsite.parseChannelUserWebsite.parse_channel_user
website::me_requestmeRequestwebsite.me_requestWebsite.meRequestWebsite.me_request
website::parse_meparseMewebsite.parse_meWebsite.parseMeWebsite.parse_me
website::ban_requestbanRequestwebsite.ban_requestWebsite.banRequestWebsite.ban_request
website::timeout_requesttimeoutRequestwebsite.timeout_requestWebsite.timeoutRequestWebsite.timeout_request
website::unban_requestunbanRequestwebsite.unban_requestWebsite.unbanRequestWebsite.unban_request
website::delete_message_requestdeleteMessageRequestwebsite.delete_message_requestWebsite.deleteMessageRequestWebsite.delete_message_request
website::pin_requestpinRequestwebsite.pin_requestWebsite.pinRequestWebsite.pin_request
website::unpin_requestunpinRequestwebsite.unpin_requestWebsite.unpinRequestWebsite.unpin_request
website::send_requestsendRequestwebsite.send_requestWebsite.sendRequestWebsite.send_request
website::parse_actionparseActionwebsite.parse_actionWebsite.parseActionWebsite.parse_action
webhooks::verifyverifyWebhookwebhooks.verifyWebhooks.verifyWebhooks.public_key
webhooks::parseparseWebhookwebhooks.parseWebhooks.parseWebhooks.parse