├── APP_LOGIN_FLOW.md ├── LICENSE └── README.md /APP_LOGIN_FLOW.md: -------------------------------------------------------------------------------- 1 | ## Simple Login Flow 2 | Credits to: @soulweaver. on Discord 3 | 4 | 5 | The app flow is: 6 | - GET `/kick-token-provider` for the fields to use in `/mobile/login` 7 | - POST `/mobile/login` and get the response of `{"2fa_required":true}` 8 | - GET `/kick-token-provider` again, I'm not sure if this is required or the fields from the first one can be reused, but this is what the app does (edit: this isn't required apparently) 9 | - POST `/mobile/login` but include `"one_time_password": "xxxxxx"` in the JSON body 10 | 11 | Example body: 12 | ```json 13 | { 14 | "email": "", 15 | "password": "", 16 | "one_time_password": "xxxxxx", 17 | "_kick_token_xxxxxxxxxx": "", 18 | "_kick_token_valid_from": "", 19 | "isMobileRequest": true 20 | } 21 | ``` 22 | Other information 23 | `/api/v1/signup/verify/login-code` is only used for the webapp auth flow, which is all sorts of funky anyway 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Sean Sattler 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # kick-website-endpoints 2 | 3 | # Info! 4 | > Kick now published their public API you can find that one at https://docs.kick.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | ## A list of known endpoints of kick.com. (Open a pull request to add or remove some.) 12 | ### Includes a list of all current known api routes too. 13 | 14 | ### Check APP_LOGIN_FLOW.md for the way to login with a bot account. To use it for moderation purpose or integrations. 15 | 16 | ## Links: 17 | - [Pusher Events of Kick](https://gist.github.com/Digital39999/ffe7df2bfc08797c2ba19d42e8f739a0) 18 | - [KICK-API-TYPES](https://github.com/fb-sean/kick-api-types) 19 | - [Kick.com Discord Bot](https://kick.bot?utm_source=github-kick-endpoints) 20 | - [sattler.dev](https://sattler.dev?utm_source=github-kick-endpoints) 21 | 22 | GET documentation 23 | 24 | GET docs/{jsonFile?} 25 | 26 | GET docs/asset/{asset} 27 | 28 | GET api/oauth2-callback 29 | 30 | GET stripe/payment/{id} 31 | 32 | POST stripe/webhook 33 | 34 | POST nova/login 35 | 36 | GET nova/logout 37 | 38 | GET nova/password/reset 39 | 40 | POST nova/password/email 41 | 42 | GET nova/password/reset/{token} 43 | 44 | POST mobile/token 45 | 46 | GET login 47 | 48 | POST logout 49 | 50 | GET register 51 | 52 | GET password/reset 53 | 54 | POST password/email 55 | 56 | GET password/reset/{token} 57 | 58 | POST password/reset 59 | 60 | GET password/confirm 61 | 62 | POST socialite/{provider} 63 | 64 | GET api/v1/user 65 | 66 | GET api/v1/resource-urls 67 | 68 | POST api/v1/signup/agreed-terms 69 | 70 | POST api/v1/signup/username 71 | 72 | POST api/v1/signup/complete 73 | 74 | POST api/v1/signup/verification/resend 75 | 76 | POST api/v1/signup/send/sms 77 | 78 | POST api/v1/signup/send/email 79 | 80 | POST api/v1/signup/verify/code 81 | 82 | POST api/v1/signup/verify/email 83 | 84 | POST api/v1/signup/verify/username 85 | 86 | POST api/v1/signup/verify/phone 87 | 88 | GET kick-token-provider 89 | 90 | GET channels/check-username/{username} 91 | 92 | GET api/search 93 | 94 | GET nova/terms 95 | 96 | GET api/v1/channels/{channel}/chat 97 | 98 | GET api/v1/channels/followed 99 | 100 | POST api/v1/channel-links/reorder 101 | 102 | POST api/v1/message-react 103 | 104 | POST api/v1/channels/{channel}/mute-user 105 | 106 | GET api/v1/channels/{channel}/followers 107 | 108 | POST api/v1/channels/{channel}/add-badge 109 | 110 | POST api/v1/channels/{channel}/remove-badge 111 | 112 | GET api/v1/channels/{channel}/get-followers-for-badge/{badge} 113 | 114 | POST api/v1/channels/{channel}/support-a-creator 115 | 116 | GET api/v1/live-channels/{channel}/search 117 | 118 | GET api/v1/subscriptions 119 | 120 | GET api/v1/subscriptions/subscribers 121 | 122 | GET api/v1/subscriptions/history 123 | 124 | GET api/v1/subscriptions/connect-account 125 | 126 | POST api/v1/subscriptions/connect-account 127 | 128 | GET api/v1/subscriptions/plan 129 | 130 | GET api/v1/subscriptions/default-payment-method 131 | 132 | GET api/v1/subscriptions/payment-methods 133 | 134 | POST api/v1/subscriptions/payment-methods 135 | 136 | DELETE api/v1/subscriptions/payment-methods/{id} 137 | 138 | GET api/v1/subscriptions/stripe-countries 139 | 140 | GET api/v1/subscriptions/setup-intent 141 | 142 | GET api/v1/subscriptions/reset 143 | 144 | DELETE api/v1/subscriptions/reset 145 | 146 | POST api/v1/subscriptions/channels/{channel}/subscribe 147 | 148 | GET api/v1/subscriptions/payments-history 149 | 150 | PUT api/v1/subscriptions/{subscription}/update-payment-method 151 | 152 | DELETE api/v1/subscriptions/{subscription} 153 | 154 | POST api/v1/subscriptions/channels/{channel}/gift-subscriptions 155 | 156 | POST api/v1/subscriptions/channels/{channel}/confirm-payment-intent 157 | 158 | POST api/v1/channels/user/subscribe 159 | 160 | POST api/v1/channels/user/unsubscribe 161 | 162 | GET api/v1/channels/{channel}/livestream 163 | 164 | GET api/v1/live-streams/{liveStream}/heart-beat 165 | 166 | POST api/v1/channels/{channel}/chat 167 | 168 | POST api/v1/report-content 169 | 170 | GET api/v1/channels/following/{id} 171 | 172 | GET api/v1/{channel}/chatroom 173 | 174 | PUT api/v1/chatrooms/{chatroom} 175 | 176 | POST api/v1/chat-messages 177 | 178 | POST api/v1/chat-messages/{id} 179 | 180 | POST api/v1/channel-links 181 | 182 | PUT api/v1/channel-links/{channel_link} 183 | 184 | DELETE api/v1/channel-links/{channel_link} 185 | 186 | GET api/v1/channels/{channel} 187 | 188 | GET api/v1/channels/{channel}/links 189 | 190 | GET api/v1/users/{username} 191 | 192 | GET api/v1/categories 193 | 194 | GET api/v1/categories/top 195 | 196 | GET api/v1/user/categories/top 197 | 198 | GET api/v1/categories/{category} 199 | 200 | GET api/v1/user/livestreams 201 | 202 | GET api/v1/subcategories 203 | 204 | GET api/v1/listsubcategories 205 | 206 | GET api/v1/subcategories/{subcategory} 207 | 208 | GET api/v1/video/{video} 209 | 210 | POST api/v1/video/views/{video} 211 | 212 | DELETE api/v1/video/{video} 213 | 214 | POST api/v1/subcategories/{subcategory}/toggle-follow 215 | 216 | GET api/v1/channels/{channel}/banned-users 217 | 218 | POST api/mobile/channels/{channel}/subscriptions 219 | 220 | POST api/mobile/channels/{channel}/gift 221 | 222 | GET api/v2/channels/followed 223 | 224 | POST api/v2/channels/{channel}/subscriptions 225 | 226 | DELETE api/v2/channels/{channel}/subscriptions 227 | 228 | PUT api/v2/channels/{channel}/subscriptions/enable 229 | 230 | POST api/v2/channels/{channel}/gift 231 | 232 | GET api/v2/channels/{channel}/should-migrate 233 | 234 | GET api/v2/channels/{channel}/migrate 235 | 236 | POST api/v2/channels/{channel}/report 237 | 238 | POST api/v2/channels/{channel}/polls 239 | 240 | DELETE api/v2/channels/{channel}/polls 241 | 242 | POST api/v2/channels/{channel}/polls/vote 243 | 244 | POST api/v2/channels/{channel}/pinned-message 245 | 246 | DELETE api/v2/channels/{channel}/pinned-message 247 | 248 | GET api/v2/channels/{channel}/plans 249 | 250 | GET api/v2/channels/{channel}/me 251 | 252 | POST api/v2/channels/{channel}/follow 253 | 254 | DELETE api/v2/channels/{channel}/follow 255 | 256 | GET api/v2/user/payment-profile 257 | 258 | POST api/v2/user/payment-methods 259 | 260 | POST api/v2/user/payment-methods/delete 261 | 262 | POST api/v2/user/payment-methods/default 263 | 264 | GET api/v2/user/subscriptions 265 | 266 | POST api/v2/channels/{channel}/chat-commands 267 | 268 | GET api/v2/channels/{channel}/clips/init 269 | 270 | POST api/v2/channels/{channel}/clips/finalize 271 | 272 | DELETE api/v2/clips/{clip} 273 | 274 | PUT api/v2/clips/{clip}/like 275 | 276 | DELETE api/v2/clips/{clip}/like 277 | 278 | GET api/v2/channels/{channel}/bans 279 | 280 | POST api/v2/channels/{channel}/bans 281 | 282 | DELETE api/v2/channels/{channel}/bans/{username} 283 | 284 | GET api/v2/channels/{channel}/subscribers/last 285 | 286 | POST api/v2/mobile-tokens 287 | 288 | DELETE api/v2/mobile-tokens/{token} 289 | 290 | PUT api/v2/channels/{channelId}/users/{userId}/identity 291 | 292 | GET api/v2/channels/feed-activities 293 | 294 | GET api/v2/channels/{channelId}/users/{userId}/messages 295 | 296 | POST api/v2/security/user/update-phone 297 | 298 | POST api/v2/stream/update 299 | 300 | GET api/v2/user/verified-status 301 | 302 | GET api/v2/channels/{channel}/polls 303 | 304 | GET api/v2/channels/{channelId}/users/{userId}/identity 305 | 306 | GET api/v2/users/{userId}/messages 307 | 308 | GET api/v2/channels/{channelId}/messages 309 | 310 | GET api/v2/channels/{channel} 311 | 312 | GET api/v2/channels/{channel}/users/{username} 313 | 314 | GET api/v2/channels/{channel}/chatroom 315 | 316 | PUT api/v2/channels/{channel}/chatroom 317 | 318 | GET api/v2/channels/{channel}/livestream 319 | 320 | GET api/v2/channels/{channel}/videos/latest 321 | 322 | GET api/v2/channels/{channel}/chatroom/rules 323 | 324 | PUT api/v2/channels/{channel}/chatroom/rules 325 | 326 | GET api/v2/channels/{channel}/chatroom/banned-words 327 | 328 | PUT api/v2/channels/{channel}/chatroom/banned-words 329 | 330 | GET api/v2/clips/{clip} 331 | 332 | GET api/v2/channels/{channel}/clips 333 | 334 | PUT api/v2/clips/{clip}/private 335 | 336 | GET api/v2/clips/{clip}/info 337 | 338 | GET api/v2/clips 339 | 340 | GET api/v2/categories/{subcategory}/clips 341 | 342 | GET api/v2/channels/{channel}/leaderboards 343 | 344 | PUT api/v2/livestreams/{liveStream}/mature 345 | 346 | POST api/v2/messages/send/{chatroomId} 347 | 348 | DELETE api/v2/chatrooms/{chatroomId}/messages/{messageId} 349 | 350 | POST stream/update 351 | 352 | POST stream/{liveStream}/update 353 | 354 | GET stream/info 355 | 356 | PUT stream/info 357 | 358 | GET stream/publish_token 359 | 360 | PUT channels 361 | 362 | POST channels/add-user 363 | 364 | POST channels/remove-user 365 | 366 | PUT emotes/prefix 367 | 368 | GET emotes 369 | 370 | POST emotes 371 | 372 | DELETE emotes/{emote} 373 | 374 | GET channel-subscriber-badges 375 | 376 | POST channel-subscriber-badges 377 | 378 | PUT channel-subscriber-badges/{channel_subscriber_badge} 379 | 380 | DELETE channel-subscriber-badges/{channel_subscriber_badge} 381 | 382 | GET setup-2fa 383 | 384 | POST verify-2fa 385 | 386 | PUT remove-2fa 387 | 388 | GET stream/languages 389 | 390 | GET profile/default-pictures 391 | 392 | PATCH profile/update-default-profile-picture 393 | 394 | PATCH profile/update-default-banner-picture 395 | 396 | GET emotes/{channel} 397 | 398 | GET stream/livestreams/{lang} 399 | 400 | GET stream/featured-livestreams/{lang} 401 | 402 | GET current-viewers 403 | 404 | GET featured-livestreams/non-following 405 | 406 | POST update_profile 407 | 408 | POST update_password 409 | 410 | POST profile/update-profile-picture 411 | 412 | POST profile/update-profile-banner 413 | 414 | PATCH profile/update-notifications 415 | 416 | PATCH profile/update-username 417 | 418 | PATCH profile/update-offline-banner-picture 419 | 420 | GET channels/{channel}/{username} 421 | 422 | PUT api/internal/v1/channels/{channel}/chatroom/settings 423 | 424 | GET api/internal/v1/channels/{channel}/chatroom/banned-words 425 | 426 | POST api/internal/v1/channels/{channel}/chatroom/banned-words 427 | 428 | PUT api/internal/v1/channels/{channel}/chatroom/banned-words/{bannedword} 429 | 430 | DELETE api/internal/v1/channels/{channel}/chatroom/banned-words/{bannedword} 431 | 432 | PUT api/internal/v1/channels/{channel}/chatroom/rules 433 | 434 | PUT api/internal/v1/channels/{channel}/chatroom/identity 435 | 436 | PUT api/internal/v1/chatroom/identity 437 | 438 | POST api/internal/v1/channels/{channel}/chatroom/pinned-message 439 | 440 | DELETE api/internal/v1/channels/{channel}/chatroom/pinned-message 441 | 442 | POST api/internal/v1/channels/{channel}/chatroom/poll 443 | 444 | DELETE api/internal/v1/channels/{channel}/chatroom/poll 445 | 446 | POST api/internal/v1/channels/{channel}/chatroom/poll/vote 447 | 448 | GET api/internal/v1/channels/{channel}/community/moderators 449 | 450 | POST api/internal/v1/channels/{channel}/community/moderators 451 | 452 | DELETE api/internal/v1/channels/{channel}/community/moderators/{moderator} 453 | 454 | GET api/internal/v1/user/moderators 455 | 456 | GET api/internal/v1/channels/{channel}/community/ogs 457 | 458 | POST api/internal/v1/channels/{channel}/community/ogs 459 | 460 | DELETE api/internal/v1/channels/{channel}/community/ogs/{og} 461 | 462 | GET api/internal/v1/channels/{channel}/community/vips 463 | 464 | POST api/internal/v1/channels/{channel}/community/vips 465 | 466 | DELETE api/internal/v1/channels/{channel}/community/vips/{vip} 467 | 468 | GET api/internal/v1/channels/{channel}/events 469 | 470 | GET api/internal/v1/channels/{channel}/events/livestreams 471 | 472 | GET api/internal/v1/chatrooms/{chatroom}/events 473 | 474 | GET api/internal/v1/livestreams/{livestream}/events 475 | 476 | GET api/internal/v1/channels/{channel}/chatroom 477 | 478 | GET api/internal/v1/channels/{channel}/chatroom/settings 479 | 480 | GET api/internal/v1/channels/{channel}/chatroom/users/{userId}/identity 481 | 482 | GET api/internal/v1/chatroom/users/{userId}/identity 483 | 484 | GET api/internal/v1/channels/{channel}/chatroom/rules 485 | 486 | GET api/internal/v1/channels/{channel}/chatroom/pinned-message 487 | 488 | GET api/internal/v1/channels/{channel}/chatroom/poll 489 | 490 | POST webhooks/sns 491 | 492 | POST redirect/{provider} 493 | 494 | GET sitemap 495 | 496 | GET legal/{page} 497 | 498 | GET email/verify/{id}/{hash} 499 | 500 | GET payment-intent-redirect 501 | 502 | GET verify-new-email/{token} 503 | 504 | GET documentation/api-docs.json 505 | 506 | GET nova-impersonate/users/{id}/{guardName?} 507 | 508 | GET nova-impersonate/leave 509 | 510 | GET nova-vendor/maatwebsite/laravel-nova-excel/download 511 | 512 | GET nova 513 | 514 | GET {fallbackPlaceholder} 515 | 516 | ## New API 517 | 518 | GET https://api.kick.com/private/v1/categories 519 | 520 | GET https://api.kick.com/private/v1/clips 521 | 522 | GET https://api.kick.com/private/v1/channels/:slug 523 | 524 | GET https://api.kick.com/private/v1/channels/:slug/clips 525 | 526 | GET https://api.kick.com/private/v1/livestreams 527 | 528 | GET https://api.kick.com/channels/:id/followers-count 529 | 530 | GET https://api.kick.com/private/v0/channels/:id/viewer-count 531 | --------------------------------------------------------------------------------