Se connecter avec ChatGPT est l’intégration OAuth 2.0 et OpenID Connect d’OpenAI, disponible pour les utilisateurs de ChatGPT dans le monde entier. Votre application reçoit un identifiant de compte stable, ainsi que le nom, l’adresse e-mail et la photo de profil de l’utilisateur. Depuis le DevDay du 29 septembre 2026, les utilisateurs Plus et Pro peuvent aussi autoriser des applications participantes à exécuter des requêtes d’IA sur leur plan ChatGPT, dans la limite d’un plafond hebdomadaire défini par application. Votre application ne reçoit jamais leurs conversations, leurs souvenirs ni leur clé API.
Essayez Apidog dès aujourd’hui
Ce guide explique comment implémenter la connexion, décider quand utiliser le plan ChatGPT plutôt que votre clé API, gérer les erreurs de facturation et tester le flux dans Apidog. Pour le contexte de l’événement, consultez le récapitulatif du DevDay 2026. Si la différence entre identité et autorisation n’est pas claire, commencez par OAuth vs OpenID.
Se connecter avec ChatGPT : vue d’ensemble
| Élément | Ce qu’OpenAI documente |
|---|---|
| Portées d’identité | openid profile email |
| Portées d’utilisation du plan (flux open-source) |
offline_access resource.invoke chatgpt.tokens.use.direct, avec resource=https://api.openai.com/v1
|
| Ce que reçoit votre application | Un jeton d’identité ; avec l’utilisation du plan, un jeton d’accès et un jeton de rafraîchissement |
| Éligibilité à l’utilisation du plan | Utilisateurs Plus et Pro, dans les applications participantes |
| Où l’utilisation est comptabilisée | Utilisation ChatGPT Work et Codex du plan |
| Contrôle par application | Plafond hebdomadaire en pourcentage de l’utilisation hebdomadaire totale ; les crédits après plafond sont désactivés par défaut |
| Durée des jetons de plan | Jeton d’accès : 1 heure ; jeton de rafraîchissement : 30 jours, remplacé à chaque rafraîchissement |
| Accès développeur | Applications commerciales : essai limité via formulaire d’intérêt. Applications open-source : libre-service |
Sources : la documentation Se connecter avec ChatGPT, la référence des jetons et l’article d’aide OpenAI sur l’utilisation de votre plan ChatGPT dans d’autres applications.
Ce que votre application reçoit — et ne reçoit pas
Par défaut, implémentez uniquement l’identité. Un client qui demande les scopes suivants reçoit un jeton d’identité :
openid profile email
D’après le guide web :
-
profiledonne accès aux revendications disponibles, notamment le nom et l’image de profil ; -
emaildonne accès à l’adresse e-mail et à son état de vérification.
Ces scopes n’accordent aucun accès aux conversations ChatGPT ni aux ressources de l’API OpenAI.
Identifiez le compte avec sub
Ne liez pas un compte local à partir de l’e-mail seul. Utilisez :
-
iss: l’émetteur ; -
sub: l’identifiant stable de l’utilisateur ; -
aud: votre ID client.
OpenAI indique qu’une correspondance d’e-mail seule ne prouve pas la propriété du compte. Si un utilisateur existant veut associer ChatGPT à son compte local, demandez une confirmation explicite.
L’utilisation du plan est une autorisation distincte
L’utilisation du plan n’est pas incluse dans la connexion de base. Si l’utilisateur accepte les scopes supplémentaires, la réponse de jeton inclut un access_token utilisable pour des requêtes API de Réponses éligibles.
Pour un client qui ne fait que de l’authentification :
- n’exigez pas d’
access_token; - utilisez l’
id_tokenpour établir votre session ; - ne demandez pas de scopes d’utilisation du plan sans besoin fonctionnel.
Implémenter le flux OAuth avec PKCE
Le flux web repose sur le grant Authorization Code avec PKCE, complété par OpenID Connect.
Chargez la configuration OIDC depuis :
https://auth.openai.com/.well-known/openid-configuration
Les endpoints de production documentés sont :
Issuer: https://auth.openai.com
Authorization endpoint: https://auth.openai.com/api/accounts/authorize
Token endpoint: https://auth.openai.com/api/accounts/oauth/token
JWKS URI: https://auth.openai.com/.well-known/jwks.json
Étapes côté backend
- Générez un
statealéatoire, unnonceet une paire PKCE (code_verifier/code_challengeS256). - Stockez temporairement
state,nonceetcode_verifierdans une session sécurisée côté serveur. - Redirigez le navigateur vers l’endpoint d’autorisation avec votre
client_id, votre URI de redirection exacte et les scopes demandés. - À votre callback, vérifiez que le paramètre
statecorrespond à la valeur stockée. - Échangez le code d’autorisation contre des jetons.
- Vérifiez la signature du jeton d’identité avec le JWKS, puis validez
iss,aud,expetnonce. - Créez, trouvez ou liez le compte local à partir de
issetsub. - Émettez votre propre session applicative.
Les clients publics n’envoient pas de secret client. Un client confidentiel qui utilise client_secret_basic transmet son secret uniquement via l’en-tête HTTP Basic.
Cas des outils open-source locaux
Les outils open-source suivent un flux d’enregistrement différent. Le guide de connexion open-source utilise notamment :
client_id=dynamic_agent_client
agent_name_hint=<nom de votre application>
ext_agent_host_id=<identifiant persistant par hôte>
Points à implémenter :
- utilisez une URI de bouclage
127.0.0.1comme redirection ; - sauvegardez l’ID client émis au callback, typiquement sous la forme
oaiapp_...; - réutilisez cet ID client lors des connexions suivantes ;
- ne configurez pas de secret client.
Expliquer l’utilisation du plan à vos utilisateurs
Votre interface et votre documentation de support doivent expliciter le comportement suivant.
- Les requêtes éligibles sont déduites du plan. Elles utilisent l’allocation ChatGPT Work et Codex du plan Plus ou Pro.
- Chaque application possède un plafond hebdomadaire. L’utilisateur le définit comme un pourcentage de son utilisation hebdomadaire globale. La documentation donne un exemple allant de 10 % à 100 %.
- Le plafond n’est pas un quota réservé. Une utilisation intensive dans ChatGPT ou une autre application peut épuiser l’allocation avant votre application.
- Les crédits sont facultatifs. Continuer avec des crédits après la limite est désactivé par défaut et nécessite un plafond d’application de 100 %.
- Plus applique une limite partagée de cinq heures. D’après la page comptes et sessions, cette limite couvre toutes les applications utilisant le plan. Elle ne s’applique pas à Pro.
- La déconnexion stoppe les utilisations futures. Elle ne retire pas l’utilisation passée et OpenAI ne notifie pas votre application. Vous le détectez lorsqu’un rafraîchissement ou une requête échoue.
Ajoutez dans votre produit un lien Gérer l’utilisation vers chatgpt.com/settings/usage, conformément aux directives d’interface OpenAI.
Obtenir un ID client
Le récapitulatif DevDay d’OpenAI cite 16 partenaires d’utilisation du plan, notamment Devin de Cognition, Notion, Vercel, T3, OpenClaw et Dactyl. The New Stack mentionne également Amp, Warp, Kilo Code et OpenCode, avec Lovable indiqué comme « à venir ». Si vous utilisez OpenClaw, il apparaît dans les deux listes.
Selon une déclaration de Sam Altman rapportée par The New Stack : « maintenant, vous n’avez plus à couvrir leurs coûts de jetons pour les faire démarrer. »
Le parcours dépend de votre type d’application :
- Application commerciale ou hébergée : la connexion est disponible dans le cadre d’un essai limité. Demandez un ID client via le formulaire d’intérêt OpenAI, que vous utilisiez seulement l’identité ou aussi l’utilisation du plan.
- Outil open-source hébergé localement : l’utilisation du plan est disponible en libre-service via le flux open-source.
Décider quand utiliser le plan ChatGPT plutôt que votre clé API
L’utilisation du plan transfère le coût du modèle vers l’abonnement de l’utilisateur. Votre marge dépend alors moins de l’intensité d’utilisation IA, mais vous perdez une partie du contrôle sur les limites et les capacités disponibles.
| Votre clé API | Plan ChatGPT de l’utilisateur | |
|---|---|---|
| Qui paie | Vous, par jeton | Le plan de l’utilisateur ; crédits uniquement s’il les active |
| Utilisateurs concernés | Tous les utilisateurs | Utilisateurs Plus et Pro ayant accordé chatgpt.tokens.use.direct
|
| Limites | Votre niveau de rate limit | Utilisation hebdomadaire, plafond par application, fenêtre Plus de cinq heures |
| Requête requise | API de Réponses complète |
store: false et stream: true obligatoires |
| Fonctionnalités indisponibles | Selon votre configuration API | Pas de temperature, max_output_tokens, recherche de fichiers ni Interprète de code |
| Échec courant | HTTP 429 lié à votre rate limit | HTTP 429 subscription_sharing_usage_limit_exceeded ou événement response.failed pendant le streaming |
| Bascule automatique | À concevoir dans votre produit | Aucune : OpenAI ne modifie pas votre facturation |
| UI à prévoir | Votre propre suivi et tarification | « Utilisation du plan ChatGPT », lien Gérer l’utilisation et plans compatibles |
Les restrictions sont détaillées dans la page des limitations de prévisualisation. Les fonctionnalités nécessitant un état de conversation persistant ou des outils hébergés ne fonctionnent pas actuellement avec le plan de l’utilisateur.
Stratégie de repli recommandée
Adoptez une stratégie hybride :
- utilisez le plan ChatGPT pour les interactions en temps réel des utilisateurs Plus et Pro ;
- utilisez votre clé API pour les utilisateurs non éligibles ;
- utilisez votre clé API pour les tâches de fond, la CI et les agents planifiés ;
- lorsque le plafond est atteint, suspendez les requêtes financées par le plan ;
- affichez Gérer l’utilisation et proposez éventuellement vos propres crédits.
Pour approfondir le choix de modèle d’accès, consultez Clé API vs OAuth et OAuth pour les agents d’IA.
Tester la connexion et les erreurs dans Apidog
Apidog ne connecte pas directement vos utilisateurs à ChatGPT : il vous aide à tester votre configuration OAuth, vos échanges de jetons et vos scénarios d’erreur. Téléchargez Apidog, puis créez un environnement dédié.
1. Définir les variables d’environnement
Ajoutez les variables suivantes :
SIWC_CLIENT_ID
SIWC_REDIRECT_URI
SIWC_CLIENT_SECRET
ACCESS_TOKEN
Traitez SIWC_CLIENT_SECRET comme une valeur sensible et référencez les variables dans vos requêtes :
{{SIWC_CLIENT_ID}}
{{SIWC_REDIRECT_URI}}
{{ACCESS_TOKEN}}
Ainsi, vos secrets ne sont pas enregistrés en clair dans les collections.
2. Tester Authorization Code + PKCE
Dans l’onglet Auth d’Apidog :
- choisissez OAuth 2.0 ;
- sélectionnez Authorization Code with PKCE ;
- renseignez les endpoints OpenAI ;
- définissez le scope initial sur :
openid profile email
- utilisez une URI de rappel déjà enregistrée pour votre client.
Le guide OAuth 2.0 d’Apidog détaille la configuration de chaque champ.
3. Vérifier la réponse de jeton
Créez une requête POST dédiée vers l’endpoint de jetons. Testez au minimum la présence de l’id_token et ses revendications décodées.
const body = pm.response.json();
pm.test("L'échange de jeton retourne un ID token", () => {
pm.expect(pm.response.code).to.eql(200);
pm.expect(body.id_token).to.be.a("string");
});
const decode = require("atob");
const part = body.id_token
.split(".")[1]
.replace(/-/g, "+")
.replace(/_/g, "/");
const claims = JSON.parse(
decode(part + "=".repeat((4 - (part.length % 4)) % 4))
);
pm.test("Les claims correspondent à ce client", () => {
pm.expect(claims.iss).to.eql("https://auth.openai.com");
pm.expect(claims.aud).to.include(pm.environment.get("SIWC_CLIENT_ID"));
pm.expect(claims.sub).to.be.a("string").and.not.empty;
pm.expect(claims.exp * 1000).to.be.above(Date.now());
});
Ces tests décodent le jeton, mais ne remplacent pas les contrôles serveur. Votre backend doit toujours vérifier :
- la signature JWT via le JWKS ;
- le
nonce; - l’émetteur ;
- l’audience ;
- l’expiration.
N’échouez pas le test si name, email ou picture sont absents : enregistrez-les seulement lorsqu’ils sont fournis.
Pour l’utilisation du plan, vérifiez aussi que body.scope contient :
chatgpt.tokens.use.direct
4. Simuler les chemins d’échec
Ne testez pas uniquement avec un vrai compte Plus. Créez des réponses simulées avec un serveur de maquette Apidog.
| Scénario | Réponse simulée | Comportement attendu |
|---|---|---|
| Utilisation du plan refusée | Réponse de jeton sans chatgpt.tokens.use.direct dans scope
|
Conserver la connexion et proposer l’activation du plan ou une autre facturation |
| Plafond atteint | HTTP 429 avec error.code: subscription_sharing_usage_limit_exceeded
|
Suspendre les requêtes financées par le plan |
| Erreur pendant le streaming | Événement response.failed avec le même code |
Arrêter le flux et afficher une action de récupération |
| Utilisateur non éligible | HTTP 403 subscription_sharing_user_not_eligible
|
Ne pas réessayer ni relancer OAuth en boucle |
| Utilisateur déconnecté |
invalid_grant au rafraîchissement ou HTTP 401 subscription_sharing_invalid_user
|
Effacer les jetons et demander une nouvelle connexion |
Enchaînez ces cas dans un scénario de test, puis exécutez-le dans votre CI avec la CLI Apidog. La page erreurs et récupération contient la liste complète des erreurs documentées.
5. Vérifier un appel réel au plan
Avec un vrai jeton de plan, envoyez une requête de streaming. Ajoutez Bearer {{ACCESS_TOKEN}} dans Apidog ou testez avec curl.
curl --no-buffer https://api.openai.com/v1/responses \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6.1-sol",
"input": [{"role": "user", "content": "Say exactly: Hello, world!"}],
"store": false,
"stream": true
}'
Considérez response.completed comme le signal de réussite du flux. Un statut HTTP initial réussi ne garantit pas qu’un streaming se terminera correctement.
FAQ
Les utilisateurs gratuits peuvent-ils se connecter avec ChatGPT ?
Oui. La connexion est disponible pour les utilisateurs ChatGPT du monde entier. L’utilisation du plan dans une application tierce nécessite Plus ou Pro.Mon application reçoit-elle la clé API OpenAI de l’utilisateur ?
Non. Votre application reçoit un jeton d’identité et, pour l’utilisation du plan, un jeton OAuth destiné aux requêtes API de Réponses éligibles.Que se passe-t-il lorsqu’un utilisateur atteint son plafond ?
Les requêtes échouent avecsubscription_sharing_usage_limit_exceeded: HTTP 429 ou événementresponse.failedaprès le démarrage du streaming. Suspendez les requêtes du plan et redirigez l’utilisateur vers Gérer l’utilisation.Un utilisateur Plus peut-il exécuter GPT-6.1 Sol via une application partenaire ?
L’exemple de la documentation utilisegpt-6.1-solavec un jeton de plan. Listez toutefois les modèles accessibles avec ce jeton avant d’en proposer un dans votre interface. Consultez aussi GPT-6.1 Sol est-il gratuit ?.
Étape suivante
Si vous développez une application commerciale, rejoignez la liste d’attente et implémentez dès maintenant vos scénarios de plafonnement, de déconnexion et de repli à partir de maquettes. Traitez l’utilisation du plan comme une option complémentaire à votre facturation API, pas comme un remplacement total.
Enregistrez vos assertions de jetons et vos scénarios d’échec dans Apidog. Lorsque vous recevrez votre ID client, il ne vous restera qu’à remplacer les variables de test par les identifiants de production.
Top comments (0)