Se connecter avec ChatGPT est la connexion OAuth 2.0 et OpenID Connect d'OpenAI, disponible pour les utilisateurs de ChatGPT du 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 la personne. Depuis le DevDay du 29 septembre 2026, les utilisateurs Plus et Pro peuvent également autoriser les applications participantes à exécuter des requêtes d'IA sur leur plan ChatGPT au lieu de votre clé API, dans la limite d'un plafond hebdomadaire qu'ils définissent par application. Votre application ne reçoit jamais leurs conversations, leurs souvenirs ou une clé API.
La deuxième partie concerne votre facture. Ce guide couvre le processus, la manière dont l'utilisation du plan apparaît à l'utilisateur, qui peut intégrer aujourd'hui, quand le plan d'un utilisateur devrait remplacer votre clé, et comment tester la connexion et ses chemins d'échec dans Apidog. Pour le reste de l'événement, consultez le récapitulatif du DevDay 2026 ; si la distinction entre identité et autorisation est floue, lisez d'abord OAuth vs OpenID.
Se connecter avec ChatGPT en un coup d'œil
| É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 |
| Votre application reçoit | 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 | L'utilisation de ChatGPT Work et Codex du plan |
| Contrôle par application | Plafond hebdomadaire en pourcentage de l'utilisation hebdomadaire totale ; les crédits après le plafond sont désactivés par défaut |
| Jetons d'utilisation du 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 un formulaire d'intérêt. Applications open-source : en libre-service |
Sources : la documentation Se connecter avec ChatGPT, la référence des jetons, et l'article d'aide d'OpenAI sur l'utilisation de votre plan ChatGPT dans d'autres applications.
Ce que votre application reçoit et ce qu'elle ne reçoit pas
L'identité est la valeur par défaut. Un client qui demande openid profile email reçoit un jeton d'identité. Selon le guide du site web, profile couvre les revendications disponibles telles que le nom et l'image de profil, et email couvre les revendications d'e-mail et de vérification d'e-mail. Les portées d'identité n'accordent pas l'accès aux conversations ChatGPT ou aux ressources de l'API OpenAI.
Clé du compte basée sur le sub vérifié plus l'émetteur et l'ID client, et non sur l'e-mail. OpenAI avertit qu'une simple correspondance d'e-mail n'est pas une preuve de propriété, demandez donc aux utilisateurs existants de confirmer un lien.
L'utilisation du plan est un octroi distinct. Si l'utilisateur approuve les portées supplémentaires, la réponse du jeton ajoute un jeton d'accès pour les requêtes API de Réponses éligibles. Les clients uniquement identitaires ne devraient pas du tout nécessiter d' access_token : l' id_token est le seul artefact requis.
Fonctionnement du flux OAuth
Le flux du site web est le grant du code d'autorisation standard avec PKCE plus OIDC. Chargez les points de terminaison depuis https://auth.openai.com/.well-known/openid-configuration. La documentation liste ces valeurs de production :
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
- Votre backend génère un nouveau
state, un vérificateur PKCE avec un challenge S256, et unnonce. - Il redirige le navigateur vers le point de terminaison d'autorisation avec votre ID client, l'URI de redirection exacte et les scopes.
- L'utilisateur consent, et OpenAI renvoie un code à votre callback.
- Votre backend vérifie le
state, échange le code, et vérifie la signature, l'émetteur, l'audience, l'expiration et le nonce du jeton d'identité. - Il trouve, crée ou lie le compte local et émet sa propre session.
Les clients publics n'envoient aucun secret. Un client confidentiel utilisant client_secret_basic envoie son secret uniquement dans l'en-tête HTTP Basic.
Les outils open-source s'enregistrent différemment. Le guide de connexion open-source commence par client_id=dynamic_agent_client, un agent_name_hint défini sur le nom de votre application, et un ext_agent_host_id persistant par hôte. Le rappel renvoie un ID client émis (tel que oaiapp_...) à sauvegarder et à réutiliser ; la redirection est une URI de bouclage 127.0.0.1, et aucun secret client n'est impliqué.
Comment l'utilisation du plan fonctionne pour l'utilisateur
Ce que vos utilisateurs voient et ce que vos documents de support doivent expliquer :
- Les requêtes éligibles sont déduites du plan. Elles s'appuient sur l'utilisation de ChatGPT Work et Codex dans le plan Plus ou Pro de l'utilisateur.
- Chaque application reçoit un plafond hebdomadaire. L'utilisateur le définit comme un pourcentage de l'utilisation hebdomadaire globale (l'exemple de paramétrage de la documentation va de 10 % à 100 %). C'est un plafond, pas un pool réservé, donc une utilisation intensive ailleurs peut épuiser le plan en premier.
- Les crédits sont optionnels. Continuer sur des crédits après les limites est désactivé par défaut et nécessite que le plafond de l'application soit à 100 %.
- Plus a une limite partagée de cinq heures. Selon la page des comptes et sessions, elle s'étend à toutes les applications utilisant le plan. Elle ne s'applique pas à Pro.
- La déconnexion arrête l'utilisation future. Elle n'annule pas l'utilisation déjà consommée, et OpenAI n'avertit pas votre application ; vous le découvrez lorsqu'une requête ou un rafraîchissement échoue.
Les utilisateurs gèrent tout cela dans les paramètres de ChatGPT, Utilisation (chatgpt.com/settings/usage), et les directives d'interface utilisateur d'OpenAI vous demandent d'y lier avec Gérer l'utilisation.
Qui est présent au lancement et comment obtenir un ID client
Le récapitulatif du DevDay d'OpenAI nomme 16 partenaires d'utilisation du plan, dont Devin de Cognition, Notion, Vercel, T3, OpenClaw et Dactyl. The New Stack liste Amp, Warp, Kilo Code et OpenCode parmi les autres, avec Lovable marqué comme "à venir". Si vous utilisez OpenClaw, il figure sur les deux listes.
Le discours de Sam Altman sur scène, tel que rapporté par The New Stack : "maintenant, vous n'avez plus à couvrir leurs coûts de jetons pour les faire démarrer."
Comment y participer dépend de ce que vous livrez :
- Applications commerciales ou hébergées : la connexion est un essai limité. Vous demandez un ID client en rejoignant la liste d'attente via le formulaire d'intérêt d'OpenAI, que vous souhaitiez uniquement l'identité ou également l'utilisation du plan (les URL de la documentation appellent l'utilisation du plan "partage de jetons").
- Outils open-source et hébergés localement : l'utilisation du plan est ouverte à tous les partenaires open-source via le flux en libre-service ci-dessus.
Ce qui change pour votre facture API
Aujourd'hui, vous payez par jeton et le récupérez via la tarification. L'utilisation du plan transfère le coût du modèle sur l'abonnement de l'utilisateur, de sorte que votre marge ne dépend plus de l'intensité de leur utilisation de l'IA. Le compromis est le contrôle.
| Votre clé API | Le plan ChatGPT de l'utilisateur | |
|---|---|---|
| Qui paie | Vous, par jeton | Le plan de l'utilisateur (crédits uniquement s'il opte) |
| Qui peut l'utiliser | Chaque utilisateur | Utilisateurs Plus et Pro qui accordent chatgpt.tokens.use.direct |
| Limites | Votre niveau de limite de débit | Utilisation hebdomadaire du plan, le plafond par application, la fenêtre de cinq heures de Plus |
| Forme de la requête | L'API de Réponses complète | store: false et stream: true requis ; pas de temperature, max_output_tokens, recherche de fichiers ou Interprète de code |
| Échec typique | 429 lorsque vous dépassez votre niveau | 429 subscription_sharing_usage_limit_exceeded, ou ce code dans un événement de flux response.failed en milieu de flux |
| Solution de repli | À vous de concevoir | Aucun automatique : OpenAI ne change pas la facturation |
| Ce qu'il faut montrer | Votre propre utilisation et tarification | "Utilisation du plan ChatGPT", un lien Gérer l'utilisation, quels de vos plans le prennent en charge |
Les restrictions proviennent de la page des limitations de prévisualisation : les fonctionnalités qui nécessitent un état de conversation stocké ou des outils hébergés ne fonctionneront pas sur le plan d'un utilisateur aujourd'hui.
Un paramètre par défaut sensé est hybride : utilisation du plan pour le travail interactif par les utilisateurs Plus et Pro, votre clé pour tous les autres et pour les tâches de fond, l'intégration continue (CI) et les agents planifiés. Lorsque le plafond est atteint, affichez Gérer l'utilisation et proposez vos propres crédits comme option secondaire. La comparaison Clé API vs OAuth couvre le compromis général, et OAuth pour les agents d'IA couvre l'action au nom d'un utilisateur en toute sécurité.
Comment tester le flux de connexion et les chemins d'échec dans Apidog
Apidog ne connecte personne avec ChatGPT. Il exerce votre configuration OAuth, les appels de jetons et la gestion des erreurs. Téléchargez Apidog et créez un environnement.
1. Stockez le client en tant que variables. Ajoutez SIWC_CLIENT_ID, SIWC_REDIRECT_URI, et pour un client confidentiel SIWC_CLIENT_SECRET comme valeur sensible, plus ACCESS_TOKEN pour l'utilisation du plan. Référencez-les comme {{SIWC_CLIENT_ID}} afin qu'aucun secret ne figure dans une requête enregistrée.
2. Exécutez le flux du Code d'autorisation. Dans l'onglet Auth, choisissez OAuth 2.0 avec Code d'autorisation avec PKCE, entrez les points de terminaison ci-dessus, définissez la portée sur openid profile email, et utilisez une URL de rappel enregistrée pour votre client. Le guide Apidog OAuth 2.0 explique chaque champ.
3. Affirmez sur le jeton d'identité que vous avez obtenu. Enregistrez l'échange de jetons comme sa propre requête POST vers le point de terminaison de jetons (code, vérificateur, URI de redirection, ID client) et ajoutez-y un post-processeur. Les vérifications de signature et de nonce relèvent toujours de votre backend.
const body = pm.response.json();
pm.test("token exchange returned an 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("ID token claims match this 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());
});
Enregistrez name, email et picture plutôt que de les affirmer, car ils sont renvoyés lorsqu'ils sont disponibles. Pour l'utilisation du plan, affirmez que body.scope contient chatgpt.tokens.use.direct.
4. Simulez les chemins d'échec. Un véritable compte Plus est un mauvais modèle, renvoyez donc ceci depuis un serveur de maquette Apidog :
- Utilisation du plan refusée : une réponse de jeton dont la portée
scopene contient paschatgpt.tokens.use.direct. Votre application doit conserver la connexion et proposer d'activer l'utilisation du plan ou d'utiliser un autre chemin de facturation. - Plafond atteint : 429 avec
error.codesubscription_sharing_usage_limit_exceeded, plus le même code dans un événement de fluxresponse.faileden milieu de flux. Affirmez que votre application met en pause les requêtes du plan. - Non éligible : 403
subscription_sharing_user_not_eligible. Ne réessayez pas ou ne bouclez pas via OAuth. - Déconnecté : un rafraîchissement renvoyant
invalid_grant, ou 401subscription_sharing_invalid_user. Effacez les jetons et demandez une nouvelle connexion.
Enchaînez les cas dans un scénario de test et exécutez-le en CI avec la CLI Apidog. La page des erreurs et de la récupération liste l'ensemble complet.
5. Vérifiez l'appel en direct. Avec un véritable jeton de plan, envoyez la requête de streaming de la documentation (dans Apidog, comme Bearer {{ACCESS_TOKEN}}) et confirmez que le flux se termine par response.completed, le seul signal de succès :
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
}'
FAQ
- Les utilisateurs gratuits peuvent-ils se connecter avec ChatGPT ? La connexion est disponible pour les utilisateurs de ChatGPT du monde entier. L'utilisation du plan au sein d'une autre application nécessite Plus ou Pro.
- Mon application reçoit-elle la clé API OpenAI de l'utilisateur ? Non. Vous obtenez un jeton d'identité et, avec l'utilisation du plan, un jeton d'accès OAuth pour les requêtes API de Réponses éligibles.
- Que se passe-t-il lorsqu'un utilisateur atteint son plafond ? Les requêtes échouent avec
subscription_sharing_usage_limit_exceeded: un HTTP 429, ou un événementresponse.failedaprès le début du streaming. Mettez en pause et renvoyez 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 utilise
gpt-6.1-solavec un jeton de plan, mais liste les modèles du compte avec ce jeton avant d'en proposer un. Plus d'informations dans GPT-6.1 Sol est-il gratuit.
Étape suivante
Si vous dirigez une application commerciale, rejoignez la liste d'attente dès maintenant et construisez votre gestion des plafonds et de la déconnexion par rapport à des maquettes pendant que vous attendez. Considérez l'utilisation du plan comme une option à côté de votre propre facturation API, et non comme un remplacement. Enregistrez les affirmations de jetons et le scénario d'échec dans Apidog, de sorte que le jour où votre ID client arrive, la seule nouvelle variable soit le vrai jeton.
