Documentation de l’API
Créez des flux d’autorisation Kick, consultez les permissions et gérez les jetons avec l’API v2.
Flux d’autorisation
- Consultez le catalogue et choisissez les identifiants des permissions actives nécessaires à votre intégration.
- Créez un flux. Gardez sa clé de récupération privée et ouvrez authorization_url dans le navigateur du titulaire du compte.
- Après l’autorisation, récupérez les identifiants une seule fois. Enregistrez le jeton d’accès et le dernier jeton de renouvellement.
Les flux expirent après 24 heures. Une récupération réussie consomme les identifiants stockés. Attendez au moins cinq secondes entre les vérifications en attente.
Authentification et limites
La récupération utilise la clé privée du flux comme identifiant Bearer. Les autres endpoints utilisent les données indiquées ci-dessous. L’API v2 autorise 120 requêtes par minute et par IP ; HTTP 429 indique que la limite est atteinte.
Référence des endpoints
GET /api/v2/scopes
Autorisations disponibles pour le jeton
Consultez les identifiants, noms, descriptions et disponibilités des permissions actuelles. Cette requête ne nécessite aucun identifiant.
Cet endpoint n’a aucun paramètre de requête.
Réponse
HTTP 200- Réponse réussie
application/jsonRéponse d’exemple
{ "scopes": [ { "description": "Send chat messages as the authorized account.", "id": 6, "scope": "chat:write", "secret": false } ], "success": true } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
POST /api/v2/workflows
Créer un flux d’autorisation
Crée un flux d’autorisation de 24 heures. Utilisez le mode partagé activé ou les identifiants de votre application dans le corps POST.
Paramètres
ai_agentFacultatifstring· corpsNom facultatif du client IA, jusqu’à 64 octets UTF-8 sans caractères de contrôle. Il sert à l’attribution, pas à l’authentification.
credentialsFacultatifobject· corpsUtilisez votre application développeur Kick. Ne laissez les deux champs vides que si le mode partagé est disponible. Les identifiants restent en mémoire dans cet onglet et sont chiffrés temporairement sur le serveur pendant l’autorisation.
is_aiFacultatifboolean· corpsMarquer un flux comme assisté par IA.
redirect_urlFacultatifstring· corpsDestination HTTP ou HTTPS absolue facultative après l’autorisation. Les identifiants dans l’URL sont interdits.
scope_idsFacultatifarray· corpsIdentifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.
scopesFacultatifarray· corpsNoms de permissions séparés par des virgules. Le paramètre doit être présent ; une valeur vide ne demande aucune permission.
titleFacultatifstring· corpsNom de l’application, jusqu’à 500 octets UTF-8.
Corps JSON de la requête
{
"credentials": {
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
},
"scope_ids": [
6
],
"title": "Example integration"
}
Réponse
HTTP 201- Créé
application/jsonRéponse d’exemple
{ "authorization_url": "https://kicktokengen.com/authorize/EXAMPLE_ID", "expires_at": "2030-01-02T12:00:00Z", "id": "EXAMPLE_ID", "retrieval_key": "EXAMPLE_PRIVATE_KEY", "status_url": "https://kicktokengen.com/api/v2/workflows/EXAMPLE_ID", "success": true } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
GET /api/v2/workflows/{id}
Récupérer les identifiants du flux
Renvoie les identifiants une seule fois après l’autorisation. Envoyez la clé du flux comme identifiant Bearer. Une lecture réussie consomme les identifiants stockés.
Paramètres
idObligatoirestring· cheminIdentifiant du flux renvoyé à sa création.
AuthorizationObligatoireBearer· en-têteClé privée de récupération renvoyée à la création du flux. Ne l’incluez pas dans des liens publics.
Réponse
HTTP 200- Réponse réussie
application/jsonRéponse d’exemple
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "expires_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 202- Autorisation toujours en attente
application/jsonRéponse d’exemple
{ "status": "pending", "success": false } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 410- Identifiants expirés ou déjà récupérés
application/jsonRéponse d’exemple
{ "message": "workflow credentials are no longer available", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
GET /api/v2/ai/workflows/create
Créer un flux IA via GET
Alternative GET pour les clients limités à la consultation d’URLs. Crée un flux à partir des noms de permissions et renvoie une URL privée de récupération. Le JSON est servi en text/plain.
Paramètres
titleFacultatifstring· requêteNom de l’application, jusqu’à 500 octets UTF-8.
scopesFacultatifstring· requêteNoms de permissions séparés par des virgules. Le paramètre doit être présent ; une valeur vide ne demande aucune permission.
scope_idsFacultatifstring· requêteIdentifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.
ai_agentFacultatifstring· requêteNom facultatif du client IA, jusqu’à 64 octets UTF-8 sans caractères de contrôle. Il sert à l’attribution, pas à l’authentification.
Réponse
HTTP 201- Créé
application/jsonRéponse d’exemple
{ "authorization_url": "https://kicktokengen.com/authorize/EXAMPLE_ID", "id": "EXAMPLE_ID", "retrieval_url": "https://kicktokengen.com/api/v2/ai/workflows/EXAMPLE_ID/EXAMPLE_PRIVATE_KEY", "success": true } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
GET /api/v2/ai/workflows/{id}/{key}
Récupérer les identifiants IA via GET
URL privée contenant la clé de récupération. La réponse JSON remet les identifiants une fois ; protégez toute l’URL comme un mot de passe.
Paramètres
idObligatoirestring· cheminIdentifiant du flux renvoyé à sa création.
keyObligatoirestring· cheminClé privée de récupération renvoyée à la création du flux. Ne l’incluez pas dans des liens publics.
Réponse
HTTP 200- Réponse réussie
application/jsonRéponse d’exemple
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "expires_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 202- Autorisation toujours en attente
application/jsonRéponse d’exemple
{ "status": "pending", "success": false } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 410- Identifiants expirés ou déjà récupérés
application/jsonRéponse d’exemple
{ "message": "workflow credentials are no longer available", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
POST /api/v2/tokens/validate
Valider le jeton
Vérifie la validité et affiche l’application émettrice, le type, les permissions et l’expiration renvoyés par Kick.
Paramètres
access_tokenObligatoirestring· corpsJeton d’accès Kick à consulter ou révoquer, sans préfixe oauth:.
Corps JSON de la requête
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Réponse
HTTP 200- Réponse réussie
application/jsonRéponse d’exemple
{ "active": true, "client_id": "EXAMPLE_CLIENT_ID", "exp": 1893502800, "expires_in": 3600, "scope_details": [ { "description": "Send chat messages.", "scope": "chat:write" } ], "scopes": [ "chat:write" ], "success": true, "token_type": "user" } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid access token", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
POST /api/v2/tokens/refresh
Jeton de renouvellement
Renouvelle un jeton d’accès avec un jeton de renouvellement. Fournissez client_id et client_secret pour un jeton issu de votre propre application Kick.
Paramètres
client_idFacultatifstring· corpsIdentifiant client de l’application Kick. Omettez-le pour utiliser l’application partagée de KTG.
client_secretFacultatifstring· corpsSecret client de l’application Kick. Pour le renouvellement, fournissez-le avec client_id.
refresh_tokenObligatoirestring· corpsDernier jeton de renouvellement du compte et de l’application Kick.
Corps JSON de la requête
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"refresh_token": "EXAMPLE_REFRESH_TOKEN"
}
Réponse
HTTP 200- Réponse réussie
application/jsonRéponse d’exemple
{ "access_token": "EXAMPLE_ACCESS_TOKEN", "client_id": "EXAMPLE_CLIENT_ID", "expires_at": "2030-01-01T13:00:00Z", "expires_in": 3600, "refresh_token": "EXAMPLE_REFRESH_TOKEN", "scopes": [ "chat:write" ], "status": "authorized", "success": true, "token_type": "Bearer" } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid refresh token or client credentials", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
POST /api/v2/tokens/revoke
Révoquer le jeton
Révoque un seul jeton d’accès ou de renouvellement fourni dans le corps POST.
Paramètres
access_tokenFacultatifstring· corpsJeton d’accès Kick à consulter ou révoquer, sans préfixe oauth:.
refresh_tokenFacultatifstring· corpsDernier jeton de renouvellement du compte et de l’application Kick.
Corps JSON de la requête
{
"access_token": "EXAMPLE_ACCESS_TOKEN"
}
Réponse
HTTP 200- Réponse réussie
application/jsonRéponse d’exemple
{ "revoked": true, "success": true } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid token request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
POST /api/v2/quick-links
Lien rapide
Crée un lien réutilisable avec les identifiants de permissions choisis. auth=stay ouvre le générateur ; auth=authorize lance l’autorisation Kick.
Paramètres
authFacultatifstring· corpsstay ouvre le générateur. authorize et l’alias de compatibilité auth_auth lancent immédiatement l’autorisation.
scope_idsFacultatifarray· corpsIdentifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.
scopesFacultatifarray· corpsNoms de permissions séparés par des virgules. Le paramètre doit être présent ; une valeur vide ne demande aucune permission.
Corps JSON de la requête
{
"auth": "stay",
"scope_ids": [
6
]
}
Réponse
HTTP 201- Créé
application/jsonRéponse d’exemple
{ "success": true, "url": "https://kicktokengen.com/quick/Ab3dEf8_" } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }
POST /api/v2/token-requests
Demander un jeton
Crée un lien de demande d’autorisation. Une fois l’autorisation terminée par le titulaire du compte, les identifiants sont envoyés à my_email.
Paramètres
credentialsFacultatifobject· corpsUtilisez votre application développeur Kick. Ne laissez les deux champs vides que si le mode partagé est disponible. Les identifiants restent en mémoire dans cet onglet et sont chiffrés temporairement sur le serveur pendant l’autorisation.
my_emailObligatoirestring· corpsAdresse e-mail recevant les identifiants après l’achèvement de la demande.
my_nameObligatoirestring· corpsNom du demandeur, jusqu’à 128 octets UTF-8.
scope_idsFacultatifarray· corpsIdentifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.
scopesFacultatifarray· corpsNoms de permissions séparés par des virgules. Le paramètre doit être présent ; une valeur vide ne demande aucune permission.
Corps JSON de la requête
{
"credentials": {
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
},
"my_email": "developer@example.com",
"my_name": "Example developer",
"scope_ids": [
6
]
}
Réponse
HTTP 201- Créé
application/jsonRéponse d’exemple
{ "expires_at": "2030-01-02T12:00:00Z", "success": true, "url": "https://kicktokengen.com/request/EXAMPLE_ID" } HTTP 400- Requête invalide
application/jsonRéponse d’exemple
{ "message": "invalid request", "success": false } HTTP 401- Jeton ou clé de récupération invalide
application/jsonRéponse d’exemple
{ "message": "invalid retrieval key", "success": false } HTTP 429- Limite de requêtes atteinte
application/jsonRéponse d’exemple
{ "message": "rate limit exceeded", "success": false } HTTP 503- Service temporairement indisponible
application/jsonRéponse d’exemple
{ "message": "Service unavailable", "success": false }