Public API
Kicklet's HTTP API is available below /api on the same host as the dashboard. The production base URL is:
This is not Kicklet's final stable public API. These endpoints document the HTTP routes that are currently available for integrations and dashboard-adjacent automation. Paths, permissions, request bodies, and response formats may change while Kicklet's dedicated public API is still being designed.
https://kicklet.app/api
Use the API when an external tool should read channel data, send chat messages, update points, manage variables, or connect Kicklet to another system. Some endpoints are public read endpoints, but most endpoints require an API token because they act on your Kicklet account.
Authentication
Create API tokens in Profile / Settings. Send the token in the Authorization header:
Authorization: APIToken YOUR_TOKEN
Use a separate token per integration and only enable the permissions that integration needs. Treat the token like a password. A leaked token can be revoked without changing your Kicklet login.
The examples below include an API token field for authenticated endpoints. The token is only kept in your browser for the current docs session.
IDs
Some endpoints use userId, and some use kickId.
userIdis the Kicklet account ID returned by user lookup endpoints and used by account-owned resources such as commands, variables, counters, and song requests.kickIdis the Kick user ID used by stats endpoints.
You can look up both IDs from a Kick username.
/user/by-kick-username/{kickUsername}Find a Kicklet user by Kick username
Returns the Kicklet account ID and Kick user ID for a public Kicklet account.
https://kicklet.app/api/user/by-kick-username/kickletExample response
{
"id": 123,
"kickId": 456789,
"kickUsername": "Kicklet",
"kickSlug": "kicklet"
}Public Read Endpoints
These endpoints do not require an API token. They are intended for overlays, public profile pages, and read-only integrations.
/stats/public/{kickId}/viewer/rankingPublic viewer ranking
Returns public viewer ranking data. Use search to find one viewer by username, or order the list by watchtime, points, or messagesSent.
https://kicklet.app/api/stats/public/%7BkickId%7D/viewer/ranking?page=1&pageSize=10&orderBy=watchtime&order=descExample response
{
"count": 1,
"ranking": [
{
"viewerKickUserID": 324342,
"viewerKickUsername": "Test",
"watchTime": 466321367161466,
"points": 5000,
"messagesSent": 4700,
"rank": 6
}
]
}/stats/public/{kickId}/currencyPublic point currency
Returns the configured name of the channel point currency.
https://kicklet.app/api/stats/public/%7BkickId%7D/currencyExample response
{
"currency": "points"
}/song/public/{userId}Public song queue
Returns the public song request queue for a Kicklet account.
https://kicklet.app/api/song/public/%7BuserId%7DChat
Chat endpoints act as Kicklet in your Kick chat. They require an API token for the owner account.
/kick/messageSend a Kick chat message
Sends a message to the connected Kick chat as Kicklet.
https://kicklet.app/api/kick/messageExample response
{
"id": "f28bcec7-8825-422a-aa9c-e24d0fddf388",
"content": "Hello from the Kicklet API"
}/kick/chat/clearClear chat
Clears the connected Kick chatroom.
https://kicklet.app/api/kick/chat/clear/kick/chat/followerSet follower-only mode
Turns follower-only mode on or off. minDuration is the required follow duration in minutes.
https://kicklet.app/api/kick/chat/follower/kick/chat/subscriberSet subscriber-only mode
Turns subscriber-only chat mode on or off.
https://kicklet.app/api/kick/chat/subscriber/kick/chat/emoteSet emote-only mode
Turns emote-only chat mode on or off.
https://kicklet.app/api/kick/chat/emote/kick/chat/slowSet slow mode
Turns slow mode on or off. messageInterval is the delay between messages in seconds.
https://kicklet.app/api/kick/chat/slow/kick/chat/restrictionsClear chat restrictions
Removes active chatroom restrictions.
https://kicklet.app/api/kick/chat/restrictionsViewer stats and points
Stats endpoints use kickId. Reading stats requires stats.view; changing points or viewer stats requires stats.update.
/stats/{kickId}/viewer/rankingViewer ranking
Returns the private viewer ranking including last activity. Use the same ordering and search fields as the public ranking endpoint.
https://kicklet.app/api/stats/%7BkickId%7D/viewer/ranking?page=1&pageSize=10&orderBy=watchtime&order=desc/stats/{kickId}/viewer/{viewer}/statsViewer stats
Returns points, watchtime, message count, rank, and last activity for one viewer.
https://kicklet.app/api/stats/%7BkickId%7D/viewer/%7Bviewer%7D/stats/stats/{kickId}/viewer/{viewer}/statsUpdate viewer stats
Replaces the selected viewer stats with exact values. watchTime is stored as a duration value in nanoseconds.
https://kicklet.app/api/stats/%7BkickId%7D/viewer/%7Bviewer%7D/stats/stats/{kickId}/viewer/resetReset viewer stats
Resets selected viewer stat fields for the channel. Set only the fields you want to reset to true.
https://kicklet.app/api/stats/%7BkickId%7D/viewer/resetGet viewer points with the API
/stats/{kickId}/points/{viewer}Get viewer points
Reads the current point balance for one viewer.
https://kicklet.app/api/stats/%7BkickId%7D/points/%7Bviewer%7DAdd points with the API
/stats/{kickId}/points/{viewer}/add/{points}Add points
Adds points to one viewer and returns the updated value.
https://kicklet.app/api/stats/%7BkickId%7D/points/%7Bviewer%7D/add/12Remove points with the API
/stats/{kickId}/points/{viewer}/remove/{points}Remove points
Subtracts points from one viewer.
https://kicklet.app/api/stats/%7BkickId%7D/points/%7Bviewer%7D/remove/12Set viewer points with the API
/stats/{kickId}/points/{viewer}/set/{points}Set points
Sets one viewer's balance to an exact value.
https://kicklet.app/api/stats/%7BkickId%7D/points/%7Bviewer%7D/set/1000Add points to active viewers with the API
/stats/{kickId}/points/add-viewer/{points}Add points to active viewers
Adds points to every viewer Kicklet currently considers active in chat.
https://kicklet.app/api/stats/%7BkickId%7D/points/add-viewer/10Get point settings with the API
/stats/{kickId}/settings/pointsGet point settings
Reads the channel point configuration, including currency name and automatic earning settings.
https://kicklet.app/api/stats/%7BkickId%7D/settings/pointsLive and Activity Stats
Use these endpoints for dashboards, overlays, and external automations that need current channel activity.
/stats/{kickId}/watchtime/{viewer}Viewer watchtime
Returns the tracked watchtime for one viewer.
https://kicklet.app/api/stats/%7BkickId%7D/watchtime/%7Bviewer%7D/stats/{kickId}/viewer/active/countActive viewer count
Returns how many viewers are currently considered active by Kicklet.
https://kicklet.app/api/stats/%7BkickId%7D/viewer/active/count/stats/{kickId}/viewer/active/randomRandom active viewers
Returns up to max random active viewers.
https://kicklet.app/api/stats/%7BkickId%7D/viewer/active/random?max=10/stats/{kickId}/livestream/is-liveLive status
Returns whether the channel is currently live.
https://kicklet.app/api/stats/%7BkickId%7D/livestream/is-live/stats/{kickId}/livestreamLivestream history
Returns a paginated list of tracked livestreams with stream stats.
https://kicklet.app/api/stats/%7BkickId%7D/livestream?page=1&pageSize=10/stats/{kickId}/last-eventsRecent events
Returns recent channel events such as follows, subscriptions, and related stream events.
https://kicklet.app/api/stats/%7BkickId%7D/last-events/stats/{kickId}/eventsEvent list
Returns a searchable, paginated event list. typeFilters accepts comma-separated event types.
https://kicklet.app/api/stats/%7BkickId%7D/events?page=0&pageSize=10&order=desc/stats/{kickId}/subscriptions/activeActive subscriptions
Returns active subscriptions for the channel.
https://kicklet.app/api/stats/%7BkickId%7D/subscriptions/active?page=0&pageSize=10Command Stats
Command stats can be used for overlays, analytics, or external automations that react to command usage.
/stats/{kickId}/command/execution/countTotal command executions
Returns the total command execution count for the last number of minutes.
https://kicklet.app/api/stats/%7BkickId%7D/command/execution/count?minutes=60/stats/{kickId}/command/{command}/execution/countOne command execution count
Returns the execution count for one command during the selected time window.
https://kicklet.app/api/stats/%7BkickId%7D/command/!hello/execution/count?minutes=60/stats/{kickId}/command/execution/rankingCommand execution ranking
Returns the most-used commands for the selected time window.
https://kicklet.app/api/stats/%7BkickId%7D/command/execution/ranking?minutes=60&top=10Variables and Counters
Variable endpoints use userId. Global variables have no viewer. Viewer variables include a viewer value. TTL is optional and uses seconds.
/{userId}/counter-variableList counter variables
Returns all counter variables for the Kicklet account.
https://kicklet.app/api/%7BuserId%7D/counter-variable/{userId}/counter-variable/name/{name}Get counter variable
Returns one counter variable by name.
https://kicklet.app/api/%7BuserId%7D/counter-variable/name/wins/{userId}/counter-variable/name/{name}/setSet counter variable
Replaces the counter value with an exact number.
https://kicklet.app/api/%7BuserId%7D/counter-variable/name/wins/set/{userId}/counter-variable/name/{name}/incrementIncrement counter variable
Adds the given value to the counter. Use a negative number to decrease it.
https://kicklet.app/api/%7BuserId%7D/counter-variable/name/wins/increment/{userId}/variableList global variables
Returns global variables, with pagination and search.
https://kicklet.app/api/%7BuserId%7D/variable?page=1&pageSize=100/{userId}/variable/viewer/overviewList viewer variable names
Returns viewer-variable names and overview data.
https://kicklet.app/api/%7BuserId%7D/variable/viewer/overview?page=1&pageSize=100/{userId}/variable/viewer/list/{variable}List viewer variable values
Returns values for one viewer variable across viewers.
https://kicklet.app/api/%7BuserId%7D/variable/viewer/list/rank?page=1&pageSize=100/{userId}/variableSet variable
Creates or updates a global variable or viewer variable. Omit viewer for a global variable.
https://kicklet.app/api/%7BuserId%7D/variable/{userId}/variableDelete variable
Deletes a global variable, one viewer variable value, or all viewer values for a variable.
https://kicklet.app/api/%7BuserId%7D/variableSong Requests
Song endpoints use userId. Reading requires song.view; adding requires song.create; deleting, skipping, moving, and clearing require song.delete.
/song/{userId}List song queue
Returns the song request queue.
https://kicklet.app/api/song/%7BuserId%7D/song/{userId}/currentCurrent song
Returns the currently playing song request.
https://kicklet.app/api/song/%7BuserId%7D/current/song/{userId}Add song request
Adds a song request from a video URL or search term.
https://kicklet.app/api/song/%7BuserId%7D/song/{userId}/skipSkip current song
Skips the currently playing song request.
https://kicklet.app/api/song/%7BuserId%7D/skip/song/{userId}/clearClear song queue
Removes all song requests from the queue.
https://kicklet.app/api/song/%7BuserId%7D/clear/song/{userId}/{songId}Delete song request
Deletes one song request by ID.
https://kicklet.app/api/song/%7BuserId%7D/%7BsongId%7DErrors
Successful requests usually return JSON or 204 No Content. Invalid input returns 400 Bad Request, missing or invalid authentication returns 401 or 403, and permission failures return 403. When a backend operation fails, the gateway forwards the mapped error status and response from Kicklet.