Documentation de l’API

Créez des flux d’autorisation Kick, consultez les permissions et gérez les jetons avec l’API v2.

Télécharger OpenAPI

Flux d’autorisation

  1. Consultez le catalogue et choisissez les identifiants des permissions actives nécessaires à votre intégration.
  2. Créez un flux. Gardez sa clé de récupération privée et ouvrez authorization_url dans le navigateur du titulaire du compte.
  3. 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/json
Ré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/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint
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_agentFacultatif

string · corps

Nom facultatif du client IA, jusqu’à 64 octets UTF-8 sans caractères de contrôle. Il sert à l’attribution, pas à l’authentification.

credentialsFacultatif

object · corps

Utilisez 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_aiFacultatif

boolean · corps

Marquer un flux comme assisté par IA.

redirect_urlFacultatif

string · corps

Destination HTTP ou HTTPS absolue facultative après l’autorisation. Les identifiants dans l’URL sont interdits.

scope_idsFacultatif

array · corps

Identifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.

scopesFacultatif

array · corps

Noms de permissions séparés par des virgules. Le paramètre doit être présent ; une valeur vide ne demande aucune permission.

titleFacultatif

string · corps

Nom 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/json
Ré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/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint
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

idObligatoire

string · chemin

Identifiant du flux renvoyé à sa création.

AuthorizationObligatoire

Bearer · en-tête

Clé 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/json
Ré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/json
Réponse d’exemple
{
  "status": "pending",
  "success": false
}
HTTP 400
Requête invalide
application/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 410
Identifiants expirés ou déjà récupérés
application/json
Réponse d’exemple
{
  "message": "workflow credentials are no longer available",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint
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

titleFacultatif

string · requête

Nom de l’application, jusqu’à 500 octets UTF-8.

scopesFacultatif

string · requête

Noms de permissions séparés par des virgules. Le paramètre doit être présent ; une valeur vide ne demande aucune permission.

scope_idsFacultatif

string · requête

Identifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.

ai_agentFacultatif

string · requête

Nom 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/json
Ré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/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint
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

idObligatoire

string · chemin

Identifiant du flux renvoyé à sa création.

keyObligatoire

string · chemin

Clé 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/json
Ré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/json
Réponse d’exemple
{
  "status": "pending",
  "success": false
}
HTTP 400
Requête invalide
application/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 410
Identifiants expirés ou déjà récupérés
application/json
Réponse d’exemple
{
  "message": "workflow credentials are no longer available",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint
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_tokenObligatoire

string · corps

Jeton 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/json
Ré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/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid access token",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint
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_idFacultatif

string · corps

Identifiant client de l’application Kick. Omettez-le pour utiliser l’application partagée de KTG.

client_secretFacultatif

string · corps

Secret client de l’application Kick. Pour le renouvellement, fournissez-le avec client_id.

refresh_tokenObligatoire

string · corps

Dernier 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/json
Ré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/json
Réponse d’exemple
{
  "message": "invalid refresh token or client credentials",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint
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_tokenFacultatif

string · corps

Jeton d’accès Kick à consulter ou révoquer, sans préfixe oauth:.

refresh_tokenFacultatif

string · corps

Dernier 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/json
Réponse d’exemple
{
  "revoked": true,
  "success": true
}
HTTP 400
Requête invalide
application/json
Réponse d’exemple
{
  "message": "invalid token request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint
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

credentialsFacultatif

object · corps

Utilisez 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_emailObligatoire

string · corps

Adresse e-mail recevant les identifiants après l’achèvement de la demande.

my_nameObligatoire

string · corps

Nom du demandeur, jusqu’à 128 octets UTF-8.

scope_idsFacultatif

array · corps

Identifiants numériques du catalogue. Choisissez des permissions actives, au maximum 150 distinctes.

scopesFacultatif

array · corps

Noms 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/json
Ré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/json
Réponse d’exemple
{
  "message": "invalid request",
  "success": false
}
HTTP 401
Jeton ou clé de récupération invalide
application/json
Réponse d’exemple
{
  "message": "invalid retrieval key",
  "success": false
}
HTTP 429
Limite de requêtes atteinte
application/json
Réponse d’exemple
{
  "message": "rate limit exceeded",
  "success": false
}
HTTP 503
Service temporairement indisponible
application/json
Réponse d’exemple
{
  "message": "Service unavailable",
  "success": false
}
Essayer cet endpoint