Mark
Prix Créer un compte
← Tous les articles

Quel token d'API utiliser pour votre jeu ?

Mike Dalton Par Mike Dalton ·

Une fenêtre de jeu et un serveur, chacun avec une icône de clé, avec des flèches pointant vers une carte de tableau de bord montrant un graphique à barres, à côté du logo Game Stats AI.

Game Stats AI propose deux types de token d'API. Un token client peut envoyer de la télémétrie, comme des matchs et des événements de succès, mais ne peut pas lire les rapports. Un token serveur peut envoyer de la télémétrie et lire les rapports. Utilisez un token client dans tout ce qui est livré dans un build du jeu, et un token serveur dans le code qui tourne sur une machine que vous contrôlez.

Ce que chaque token peut faire

Token client Token serveur
Envoyer des matchs, des événements, des personnages et des succès Oui Oui
Lire les rapports et les autres données du compte Non Oui
Se connecter au serveur MCP Non Oui
Peut être livré dans un build du jeu Oui Non

Choisissez le type au moment de créer le token dans Paramètres > Tokens API. Le token complet n'est affiché qu'une fois, juste après sa création. Les nouveaux tokens commencent par leur type, client_ ou server_, ce qui vous permet de savoir lequel se trouve dans votre code.

L'écran de création d'un token API, avec un champ nom et un choix de type de token Client ou Serveur

Ce que l'API répond pour chaque token

Les requêtes ci-dessous placent l'identifiant de votre compte et les deux tokens dans des variables d'environnement :

export ACCOUNT_ID=your_account_id
export CLIENT_TOKEN=client_your_token
export SERVER_TOKEN=server_your_token

Chaque requête utilise -w "\n%{http_code}\n", qui affiche le code de statut HTTP après le corps de la réponse.

Un token client peut envoyer de la télémétrie

Envoyez un match à l'endpoint des matchs avec le token client :

curl -s -w "\n%{http_code}\n" -X POST "https://gamestats.ai/api/v1/accounts/$ACCOUNT_ID/matches" \
  -H "Authorization: Bearer $CLIENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"external_id": "match_8f3a2c", "version_name": "2.1.0", "match_at": "2026-10-12T20:15:00Z", "match_players": [{"username": "player_3e8", "match_attributes": {"win": 1, "loss": 0}}, {"username": "player_40d", "match_attributes": {"win": 0, "loss": 1}}]}'
{}
201

201 Created signifie que le match a été accepté. Les endpoints des événements de succès, des événements de progression, des personnages et des succès acceptent un token client de la même façon.

Un token client ne peut pas lire les rapports

Demandez les rapports du compte à l'endpoint des rapports de personnages avec le même token :

curl -s -w "\n%{http_code}\n" "https://gamestats.ai/api/v1/accounts/$ACCOUNT_ID/character_reports" \
  -H "Authorization: Bearer $CLIENT_TOKEN"

403

403 Forbidden signifie que le token est valide, mais que son type n'a pas le droit de faire cette requête. Le corps est vide : affichez le code de statut pour le voir. Tous les endpoints qui lisent des données répondent ainsi à un token client, et le serveur MCP aussi.

Un token qui n'existe pas, ou qui a été révoqué, reçoit 401 Unauthorized à la place.

Un token serveur peut lire les rapports

Envoyez la même requête avec le token serveur :

curl -s -w "\n%{http_code}\n" "https://gamestats.ai/api/v1/accounts/$ACCOUNT_ID/character_reports" \
  -H "Authorization: Bearer $SERVER_TOKEN"
[{"id":1,"external_id":null,"label":"Character Win Rates","description":null}]
200

200 OK signifie que la requête a réussi, et le corps contient la liste des rapports de personnages du compte. Un token serveur peut aussi envoyer tout ce qu'un token client peut envoyer.

Quel token utiliser à quel endroit

  • Dans un build du jeu, pour ordinateur, mobile, console ou navigateur : utilisez un token client. Les joueurs téléchargent le build, et toute personne qui cherche peut y trouver le token.
  • Sur votre serveur de jeu ou votre backend : utilisez un token serveur. Si votre jeu envoie déjà ses résultats via un backend que vous gérez, envoyez la télémétrie depuis ce backend, et aucun token n'est livré aux joueurs.
  • Dans vos propres scripts et dans le serveur MCP : utilisez un token serveur, et gardez-le sur votre machine.

Considérez tout token présent dans un build du jeu comme public. Un token client limite ce que peut faire la personne qui le trouve : elle peut envoyer de la télémétrie à votre compte, mais elle ne peut pas lire vos rapports ni aucune autre donnée du compte.

Ce que font les origines navigateur, et ce qu'elles ne font pas

Un jeu pour navigateur doit aussi avoir son origine ajoutée dans Paramètres > Origines navigateur. Le guide Phaser montre la configuration.

La page de paramètres Origines navigateur avec http://localhost:5173 ajoutée

Avant qu'une page envoie une requête avec un token vers un autre domaine, le navigateur demande à ce domaine si l'origine de la page est autorisée. Cette requête s'appelle une requête préliminaire (preflight). Vous pouvez envoyer la même requête avec curl :

curl -s -i -X OPTIONS "https://gamestats.ai/api/v1/accounts/$ACCOUNT_ID/matches" \
  -H "Origin: https://play.yourgame.com" \
  -H "Access-Control-Request-Method: POST" \
  -H "Access-Control-Request-Headers: authorization, content-type"

Pour une origine que vous avez ajoutée, la réponse contient cet en-tête :

access-control-allow-origin: https://play.yourgame.com

Pour une origine que vous n'avez pas ajoutée, l'en-tête est absent, et le navigateur n'envoie pas la requête.

C'est le navigateur qui fait cette vérification, pas l'API. curl, les scripts et les jeux qui ne tournent pas dans un navigateur sautent la requête préliminaire et envoient directement la requête. Voici le token client qui envoie un match avec une origine absente de la liste :

curl -s -w "\n%{http_code}\n" -X POST "https://gamestats.ai/api/v1/accounts/$ACCOUNT_ID/matches" \
  -H "Origin: https://not-your-game.example" \
  -H "Authorization: Bearer $CLIENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"external_id": "match_8f3a2d", "version_name": "2.1.0", "match_at": "2026-10-12T20:20:00Z", "match_players": [{"username": "player_3e8", "match_attributes": {"win": 0, "loss": 1}}, {"username": "player_40d", "match_attributes": {"win": 1, "loss": 0}}]}'
{}
201

Le match a été accepté. Les origines navigateur empêchent d'autres sites d'utiliser votre token dans le navigateur de leurs visiteurs. Elles ne limitent pas ce qu'un token peut faire en dehors d'un navigateur, et ne protègent donc pas un token qui fuite. C'est le type du token qui le fait. Les jeux qui ne tournent pas dans un navigateur n'ont besoin d'aucune origine.

Si un token fuite

Révoquez-le dans Paramètres > Tokens API. Toute requête avec un token révoqué reçoit 401 à partir de ce moment, y compris les requêtes des builds que vos joueurs ont déjà.

Un token serveur qui fuite peut lire toutes les données de votre compte : révoquez-le immédiatement et créez-en un nouveau.

Un token client qui fuite ne peut qu'envoyer de la télémétrie, vous pouvez donc choisir quand le révoquer. Révoquez-le immédiatement pour arrêter les requêtes, ou publiez d'abord une mise à jour avec un nouveau token client pour que les joueurs actuels continuent d'envoyer des événements, puis révoquez l'ancien token.

Continuer la lecture

© 2026 Rowhome Labs, LLC