O "Sign in with ChatGPT" é o login OAuth 2.0 e OpenID Connect da OpenAI, disponível para usuários do ChatGPT em todo o mundo. Seu aplicativo recebe um ID de conta estável, além do nome, endereço de e-mail e foto de perfil da pessoa. Desde o DevDay em 29 de setembro de 2026, usuários Plus e Pro também podem permitir que aplicativos participantes executem solicitações de IA em seu plano ChatGPT em vez de sua chave de API, sob um limite semanal que eles definem por aplicativo. Seu aplicativo nunca recebe as conversas, memórias ou uma chave de API deles.
A segunda parte afeta sua fatura. Este guia cobre o fluxo, como o uso do plano se apresenta ao usuário, quem pode integrar hoje, quando o plano de um usuário deve substituir sua chave e como testar o login e seus caminhos de falha no Apidog. Para o restante do evento, consulte o resumo do DevDay 2026; se a identidade versus autorização for confusa, leia OAuth vs OpenID primeiro.
Login com ChatGPT em um relance
| Item | O que a OpenAI documenta |
|---|---|
| Escopos de identidade | openid profile email |
| Escopos de uso do plano (fluxo de código aberto) | offline_access resource.invoke chatgpt.tokens.use.direct, com resource=https://api.openai.com/v1 |
| Seu aplicativo recebe | Um token de ID; com uso do plano, um token de acesso e um token de atualização |
| Elegibilidade para uso do plano | Plus e Pro, em aplicativos participantes |
| Onde o uso é contabilizado | O uso de ChatGPT Work e Codex do plano |
| Controle por aplicativo | Limite semanal como uma parte do uso semanal total; créditos após o limite estão desativados por padrão |
| Tokens de uso do plano | Token de acesso 1 hora; token de atualização 30 dias, substituído a cada atualização |
| Acesso do desenvolvedor | Aplicativos comerciais: teste limitado via formulário de interesse. Aplicativos de código aberto: autoatendimento |
Fontes: a documentação do Sign in with ChatGPT, a referência de tokens e o artigo de ajuda da OpenAI sobre como usar seu plano ChatGPT em outros aplicativos.
O que seu aplicativo recebe e o que ele não recebe
A identidade é o padrão. Um cliente que solicita openid profile email obtém um token de ID. De acordo com o guia do site, profile cobre reivindicações disponíveis como nome e foto de perfil, e email cobre reivindicações de e-mail e verificação de e-mail. Os escopos de identidade não concedem acesso a conversas do ChatGPT ou recursos da API OpenAI.
Use o sub verificado mais o emissor e o ID do cliente, e não o e-mail, como chave para a conta. A OpenAI adverte que uma correspondência de e-mail por si só não é prova de propriedade, então peça aos usuários existentes para confirmar um link.
O uso do plano é uma concessão separada. Se o usuário aprovar os escopos adicionais, a resposta do token adiciona um token de acesso para solicitações de API de Respostas elegíveis. Clientes apenas de identidade não devem precisar de um access_token de forma alguma: o id_token é o único artefato necessário.
Como funciona o fluxo OAuth
O fluxo do site é o padrão Authorization Code grant com PKCE mais OIDC. Carregue os endpoints de https://auth.openai.com/.well-known/openid-configuration. A documentação lista estes valores de produção:
Emissor: https://auth.openai.com
Endpoint de autorização: https://auth.openai.com/api/accounts/authorize
Endpoint de token: https://auth.openai.com/api/accounts/oauth/token
URI JWKS: https://auth.openai.com/.well-known/jwks.json
- Seu backend gera um
statenovo, um verificador PKCE com um desafio S256 e umnonce. - Ele redireciona o navegador para o endpoint de autorização com seu ID de cliente, URI de redirecionamento exato e escopos.
- O usuário consente, e a OpenAI retorna um código para seu callback.
- Seu backend verifica o
state, troca o código e verifica a assinatura, emissor, audiência, expiração e nonce do token de ID. - Ele encontra, cria ou vincula a conta local e emite sua própria sessão.
Clientes públicos não enviam segredo. Um cliente confidencial usando client_secret_basic envia seu segredo apenas no cabeçalho HTTP Basic.
Ferramentas de código aberto se registram de forma diferente. O guia de login de código aberto começa com client_id=dynamic_agent_client, um agent_name_hint definido como o nome do seu aplicativo e um ext_agent_host_id persistente por host. O callback retorna um ID de cliente emitido (como oaiapp_...) para salvar e reutilizar; o redirecionamento é uma URI de loopback 127.0.0.1, e nenhum segredo de cliente está envolvido.
Como funciona o uso do plano para o usuário
O que seus usuários veem e o que sua documentação de suporte deve explicar:
- As solicitações elegíveis são contabilizadas no plano. Elas utilizam o uso de ChatGPT Work e Codex no plano Plus ou Pro do usuário.
- Cada aplicativo tem um limite semanal. O usuário o define como uma porcentagem do uso semanal total (o exemplo de configurações da documentação varia de 10% a 100%). É um teto, não um pool reservado, então o uso intenso em outro lugar pode esgotar o plano primeiro.
- Créditos são opcionais. Continuar usando créditos após os limites é desativado por padrão e requer que o limite do aplicativo esteja em 100%.
- O Plus tem um limite compartilhado de cinco horas. De acordo com a página de contas e sessões, ele abrange todos os aplicativos que usam o plano. Não se aplica ao Pro.
- A desconexão interrompe o uso futuro. Não reverte o uso já consumido, e a OpenAI não notifica seu aplicativo; você descobre quando uma solicitação ou atualização falha.
Os usuários gerenciam tudo isso em Configurações do ChatGPT, Uso (chatgpt.com/settings/usage), e as diretrizes de UI da OpenAI pedem que você coloque um link para lá com Gerenciar uso.
Quem está no lançamento e como obter um ID de cliente
O resumo do DevDay da OpenAI nomeia 16 parceiros de uso de plano, incluindo Devin da Cognition, Notion, Vercel, T3, OpenClaw e Dactyl. The New Stack lista Amp, Warp, Kilo Code e OpenCode entre os outros, com Lovable marcado como em breve. Se você executa OpenClaw, ele está em ambas as listas.
O discurso de Sam Altman no palco, conforme relatado pelo The New Stack: "agora você não precisa cobrir os custos de token deles para colocá-los em funcionamento."
Como você entra depende do que você envia:
- Aplicativos comerciais ou hospedados: o login é um teste limitado. Você solicita um ID de cliente entrando na lista de espera através do formulário de interesse da OpenAI, quer você queira apenas identidade ou também uso do plano (as URLs da documentação chamam o uso do plano de "compartilhamento de token").
- Ferramentas de código aberto e hospedadas localmente: o uso do plano está aberto a todos os parceiros de código aberto através do fluxo de autoatendimento acima.
O que muda na sua fatura da API
Hoje você paga por token e recupera isso através do preço. O uso do plano transfere o custo do modelo para a assinatura do usuário, então sua margem deixa de depender de quão intensamente eles usam IA. A desvantagem é o controle.
| Sua chave de API | O plano ChatGPT do usuário | |
|---|---|---|
| Quem paga | Você, por token | O plano do usuário (créditos somente se ele optar por isso) |
| Quem pode usar | Todo usuário | Usuários Plus e Pro que concedem chatgpt.tokens.use.direct |
| Limites | Seu nível de limite de taxa | Uso semanal do plano, o limite por aplicativo, a janela de cinco horas do Plus |
| Formato da solicitação | A API de Respostas completa | store: false e stream: true são obrigatórios; sem temperature, max_output_tokens, pesquisa de arquivo ou Code Interpreter |
| Falha típica | 429 quando você excede seu nível | 429 subscription_sharing_usage_limit_exceeded, ou esse código em um response.failed no meio do fluxo |
| Alternativa | Sua para projetar | Nenhuma automática: a OpenAI não troca a cobrança |
| O que mostrar | Seu próprio uso e preços | "Usando plano ChatGPT", um link para Gerenciar uso, quais de seus planos o suportam |
As restrições vêm da página de limitações da prévia: recursos que exigem estado de conversação armazenado ou ferramentas hospedadas não serão executados no plano de um usuário hoje.
Um padrão sensato é híbrido: uso do plano para trabalho interativo por usuários Plus e Pro, sua chave para todos os outros e para tarefas em segundo plano, CI e agentes agendados. Quando o limite é atingido, mostre Gerenciar uso e ofereça seus próprios créditos como uma opção secundária. A comparação de chave de API vs OAuth aborda a compensação geral, e OAuth para agentes de IA aborda como agir em nome de um usuário com segurança.
Como testar o fluxo de login e os caminhos de falha no Apidog
O Apidog não faz login de ninguém com o ChatGPT. Ele exercita sua configuração OAuth, chamadas de token e tratamento de erros. Baixe o Apidog e crie um ambiente.
1. Armazene o cliente como variáveis. Adicione SIWC_CLIENT_ID, SIWC_REDIRECT_URI e, para um cliente confidencial, SIWC_CLIENT_SECRET como um valor sensível, além de ACCESS_TOKEN para uso do plano. Referencie-os como {{SIWC_CLIENT_ID}} para que nenhum segredo viva em uma solicitação salva.
2. Execute o fluxo de Código de Autorização. Na aba Auth, escolha OAuth 2.0 com Código de Autorização com PKCE, insira os endpoints acima, defina o escopo para openid profile email e use uma URL de callback registrada para seu cliente. O guia de OAuth 2.0 do Apidog explica cada campo.
3. Afirme sobre o token de ID que você obteve. Salve a troca de token como seu próprio POST para o endpoint de token (código, verificador, URI de redirecionamento, ID do cliente) e adicione um pós-processador a ele. As verificações de assinatura e nonce ainda pertencem ao seu 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());
});
Registre name, email e picture em vez de afirmá-los, pois são retornados quando disponíveis. Para uso do plano, afirme que body.scope contém chatgpt.tokens.use.direct.
4. Simule os caminhos de falha. Uma conta Plus real é um acessório ruim, então retorne estes de um servidor mock do Apidog:
- Uso do plano recusado: uma resposta de token cujo
scopenão possuichatgpt.tokens.use.direct. Seu aplicativo deve manter o login e oferecer a opção de habilitar o uso do plano ou usar outro caminho de faturamento. - Limite atingido: 429 com
error.codesubscription_sharing_usage_limit_exceeded, além do mesmo código em um evento de fluxoresponse.failed. Afirme que seu aplicativo pausa as solicitações do plano. - Não elegível: 403
subscription_sharing_user_not_eligible. Não tente novamente ou entre em loop através do OAuth. - Desconectado: uma atualização retornando
invalid_grant, ou 401subscription_sharing_invalid_user. Limpe os tokens e solicite o login novamente.
Encadeie os casos em um cenário de teste e execute-o em CI com o Apidog CLI. A página de erros e recuperação lista o conjunto completo.
5. Verifique a chamada ao vivo. Com um token de plano real, envie a solicitação de streaming da documentação (no Apidog, como Bearer {{ACCESS_TOKEN}}) e confirme que o fluxo termina em response.completed, o único sinal de sucesso:
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
Usuários Gratuitos podem fazer login com o ChatGPT? O login está disponível para usuários do ChatGPT globalmente. Usar o plano dentro de outro aplicativo requer Plus ou Pro.
Meu aplicativo recebe a chave de API do usuário da OpenAI? Não. Você recebe um token de ID e, com o uso do plano, um token de acesso OAuth para solicitações de API de Respostas elegíveis.
O que acontece quando um usuário atinge seu limite? As solicitações falham com subscription_sharing_usage_limit_exceeded: um HTTP 429, ou um evento response.failed após o início do streaming. Pause e direcione para Gerenciar uso.
Um usuário Plus pode executar o GPT-6.1 Sol através de um aplicativo parceiro? O exemplo da documentação usa gpt-6.1-sol com um token de plano, mas lista os modelos da conta com esse token antes de oferecer um. Mais em o GPT-6.1 Sol é gratuito.
Próximo passo
Se você executa um aplicativo comercial, entre na lista de espera agora e construa seu gerenciamento de limite e desconexão contra mocks enquanto espera. Trate o uso do plano como uma opção ao lado da sua própria cobrança de API, não um substituto. Salve as asserções de token e o cenário de falha no Apidog, para que, no dia em que seu ID de cliente chegar, a única nova variável seja o token real.
