DEV Community

Cover image for Login ChatGPT untuk Developer: Panduan Alur OAuth, Manajemen Penggunaan Paket, dan Dampak Biaya API Anda
Walse
Walse

Posted on Originally published at apidog.com

Login ChatGPT untuk Developer: Panduan Alur OAuth, Manajemen Penggunaan Paket, dan Dampak Biaya API Anda

Masuk dengan ChatGPT adalah login OAuth 2.0 dan OpenID Connect milik OpenAI yang tersedia bagi pengguna ChatGPT di seluruh dunia. Aplikasi Anda mendapatkan ID akun yang stabil, serta nama, alamat email, dan gambar profil pengguna. Sejak DevDay pada 29 September 2026, pengguna Plus dan Pro juga dapat mengizinkan aplikasi yang berpartisipasi menjalankan permintaan AI pada paket ChatGPT mereka, bukan menggunakan kunci API Anda, dengan batas mingguan yang mereka tetapkan per aplikasi. Aplikasi Anda tidak pernah menerima percakapan, memori, atau kunci API pengguna.

Coba Apidog hari ini

Bagian ini berfokus pada dampak tagihan. Anda akan mempelajari alur OAuth, cara penggunaan paket terlihat bagi pengguna, kelayakan integrasi, kapan paket pengguna dapat menggantikan kunci API Anda, serta cara menguji alur masuk dan kegagalan di Apidog. Untuk konteks acara, baca rangkuman DevDay 2026. Jika perbedaan identitas dan otorisasi belum jelas, mulai dari OAuth vs OpenID.

Masuk dengan ChatGPT sekilas

Item Yang didokumentasikan OpenAI
Cakupan identitas openid profile email
Cakupan penggunaan paket (alur sumber terbuka) offline_access resource.invoke chatgpt.tokens.use.direct, dengan resource=https://api.openai.com/v1
Yang diterima aplikasi Anda Token ID; untuk penggunaan paket, token akses dan token refresh
Kelayakan penggunaan paket Plus dan Pro, pada aplikasi yang berpartisipasi
Di mana penggunaan dihitung Penggunaan ChatGPT Work dan Codex pada paket
Kontrol per aplikasi Batas mingguan sebagai bagian dari total penggunaan mingguan; kredit setelah batas dinonaktifkan secara default
Token penggunaan paket Token akses 1 jam; token refresh 30 hari dan diganti setiap kali refresh
Akses pengembang Aplikasi komersial: uji coba terbatas melalui formulir minat. Aplikasi sumber terbuka: layanan mandiri

Sumber: dokumen Masuk dengan ChatGPT, referensi token, dan artikel bantuan OpenAI tentang menggunakan paket ChatGPT Anda di aplikasi lain.

Apa yang diterima aplikasi Anda, dan apa yang tidak

Identitas adalah kemampuan default. Klien yang meminta cakupan openid profile email mendapatkan token ID. Menurut panduan situs web, cakupan profile dapat memberikan klaim seperti nama dan gambar profil, sedangkan email dapat memberikan klaim email dan status verifikasi email.

Cakupan identitas tidak memberikan akses ke percakapan ChatGPT maupun sumber daya API OpenAI.

Gunakan kombinasi iss, aud, dan sub terverifikasi untuk mengidentifikasi akun lokal. Jangan gunakan email sebagai satu-satunya kunci akun. OpenAI memperingatkan bahwa kecocokan email saja bukan bukti kepemilikan akun, jadi pengguna lama harus mengonfirmasi proses penautan akun.

Penggunaan paket adalah hibah terpisah. Jika pengguna menyetujui cakupan tambahan, respons token menyertakan token akses untuk permintaan API Responses yang memenuhi syarat. Jika aplikasi Anda hanya membutuhkan identitas, Anda tidak memerlukan access_token; id_token sudah cukup.

Bagaimana alur OAuth bekerja

Alur situs web menggunakan Authorization Code grant dengan PKCE dan OIDC.

Muat metadata provider dari:

https://auth.openai.com/.well-known/openid-configuration
Enter fullscreen mode Exit fullscreen mode

Nilai produksi yang didokumentasikan:

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
Enter fullscreen mode Exit fullscreen mode

Implementasikan alur berikut di backend:

  1. Buat state, PKCE verifier dengan challenge S256, dan nonce baru.
  2. Arahkan browser ke authorization endpoint dengan client_id, redirect_uri, dan scope yang sesuai.
  3. Setelah pengguna menyetujui akses, terima authorization code pada endpoint callback.
  4. Validasi state, lalu tukarkan code dengan token.
  5. Verifikasi tanda tangan token ID, iss, aud, exp, dan nonce.
  6. Temukan, buat, atau tautkan akun lokal berdasarkan identitas terverifikasi.
  7. Buat sesi aplikasi Anda sendiri.

Klien publik tidak boleh mengirim client secret. Klien rahasia yang menggunakan client_secret_basic hanya boleh mengirim secret melalui header HTTP Basic.

Untuk alat sumber terbuka, proses pendaftarannya berbeda. Panduan masuk sumber terbuka menggunakan:

  • client_id=dynamic_agent_client
  • agent_name_hint berisi nama aplikasi Anda
  • ext_agent_host_id yang persisten untuk setiap host

Callback mengembalikan ID klien yang diterbitkan, misalnya oaiapp_.... Simpan ID tersebut dan gunakan kembali pada login berikutnya. URI pengalihan menggunakan loopback 127.0.0.1, tanpa client secret.

Bagaimana penggunaan paket berfungsi bagi pengguna

Dokumentasi dan UI aplikasi Anda perlu menjelaskan hal berikut.

  • Permintaan yang memenuhi syarat dihitung terhadap paket. Penggunaan memakai kuota ChatGPT Work dan Codex pada paket Plus atau Pro pengguna.
  • Setiap aplikasi memiliki batas mingguan. Pengguna menetapkannya sebagai persentase dari total penggunaan mingguan. Contoh pengaturan dalam dokumentasi berkisar dari 10% sampai 100%.
  • Batas aplikasi bukan kuota yang dicadangkan. Penggunaan tinggi pada aplikasi atau layanan lain dapat menghabiskan paket lebih dahulu.
  • Kredit bersifat opt-in. Melanjutkan dengan kredit setelah batas tercapai dinonaktifkan secara default dan memerlukan batas aplikasi 100%.
  • Plus memiliki batas lima jam bersama. Menurut halaman akun dan sesi, batas ini berlaku di semua aplikasi yang menggunakan paket. Batas tersebut tidak berlaku untuk Pro.
  • Pemutusan akses menghentikan penggunaan berikutnya. Penggunaan yang sudah terjadi tidak dibatalkan. OpenAI tidak mengirim notifikasi ke aplikasi Anda; Anda mengetahuinya ketika request atau refresh token gagal.

Pengguna mengelola pengaturan melalui Pengaturan ChatGPT, Penggunaan (chatgpt.com/settings/usage). Panduan UI OpenAI meminta aplikasi menautkan pengguna ke halaman tersebut melalui tombol atau tautan Kelola penggunaan.

Siapa yang berpartisipasi saat peluncuran, dan bagaimana mendapatkan ID klien

Rangkuman DevDay OpenAI menyebut 16 mitra penggunaan paket, termasuk Devin dari Cognition, Notion, Vercel, T3, OpenClaw, dan Dactyl. The New Stack juga mencantumkan Amp, Warp, Kilo Code, dan OpenCode, dengan Lovable ditandai sebagai “segera hadir”.

Jika Anda menjalankan OpenClaw, proyek tersebut muncul di kedua daftar.

Seperti dilaporkan The New Stack, Sam Altman menyampaikan: “sekarang Anda tidak perlu menanggung biaya token mereka untuk memulai.”

Cara bergabung bergantung pada jenis aplikasi Anda:

  • Aplikasi komersial atau hosted: akses masuk masih berupa uji coba terbatas. Anda dapat meminta ID klien melalui formulir minat OpenAI, baik untuk identitas saja maupun penggunaan paket.
  • Alat sumber terbuka dan lokal: penggunaan paket tersedia bagi mitra sumber terbuka melalui alur layanan mandiri.

Apa yang berubah pada tagihan API Anda

Dengan kunci API sendiri, Anda membayar per token dan biasanya memulihkan biaya melalui harga produk. Dengan penggunaan paket, biaya model berpindah ke langganan pengguna. Margin Anda tidak lagi bergantung langsung pada jumlah token yang digunakan pengguna, tetapi Anda kehilangan sebagian kontrol atas ketersediaan kuota.

Kunci API Anda Paket ChatGPT pengguna
Siapa yang membayar Anda, per token Paket pengguna; kredit hanya jika pengguna memilihnya
Siapa yang dapat menggunakannya Setiap pengguna Pengguna Plus dan Pro yang memberikan chatgpt.tokens.use.direct
Batasan Rate limit akun API Anda Penggunaan mingguan paket, batas per aplikasi, dan jendela lima jam Plus
Bentuk permintaan API Responses penuh Wajib store: false dan stream: true; tidak mendukung temperature, max_output_tokens, pencarian file, atau Code Interpreter
Kegagalan umum HTTP 429 saat melampaui tier 429 subscription_sharing_usage_limit_exceeded, atau kode yang sama dalam response.failed saat streaming
Cadangan Anda yang merancang Tidak otomatis; OpenAI tidak mengganti metode penagihan
Yang perlu ditampilkan Penggunaan dan harga Anda “Menggunakan paket ChatGPT”, tautan Kelola penggunaan, dan paket yang didukung

Pembatasan ini berasal dari halaman batasan pratinjau: fitur yang memerlukan status percakapan tersimpan atau alat yang di-host belum berjalan pada paket pengguna.

Konfigurasi yang praktis adalah model hibrida:

  • Gunakan paket pengguna untuk pekerjaan interaktif dari pengguna Plus dan Pro.
  • Gunakan kunci API Anda untuk pengguna lain.
  • Gunakan kunci API Anda untuk pekerjaan latar belakang, CI, dan agen terjadwal.
  • Saat batas paket tercapai, tampilkan Kelola penggunaan dan tawarkan kredit Anda sendiri sebagai opsi sekunder.

Lihat juga perbandingan Kunci API vs OAuth dan OAuth untuk agen AI.

Cara menguji alur masuk dan jalur kegagalan di Apidog

Apidog tidak melakukan login dengan ChatGPT untuk Anda. Gunakan Apidog untuk menguji konfigurasi OAuth, pertukaran token, request API, dan penanganan error.

Unduh Apidog, lalu buat environment khusus untuk integrasi ini.

1. Simpan konfigurasi klien sebagai variabel

Tambahkan variabel environment berikut sebagai nilai sensitif:

SIWC_CLIENT_ID
SIWC_REDIRECT_URI
SIWC_CLIENT_SECRET
ACCESS_TOKEN
Enter fullscreen mode Exit fullscreen mode

SIWC_CLIENT_SECRET hanya diperlukan untuk klien rahasia. Referensikan nilai dengan sintaks seperti:

{{SIWC_CLIENT_ID}}
Enter fullscreen mode Exit fullscreen mode

Dengan begitu, secret tidak tersimpan langsung dalam koleksi request.

2. Jalankan Authorization Code flow dengan PKCE

Pada tab Auth:

  1. Pilih OAuth 2.0.
  2. Pilih Authorization Code with PKCE.
  3. Masukkan authorization endpoint dan token endpoint OpenAI.
  4. Atur scope identitas ke:
   openid profile email
Enter fullscreen mode Exit fullscreen mode
  1. Gunakan callback URL yang sudah didaftarkan untuk client Anda.

Untuk panduan konfigurasi setiap field, lihat panduan OAuth 2.0 Apidog.

3. Assert respons token ID

Simpan pertukaran token sebagai request POST terpisah ke token endpoint. Kirim authorization code, PKCE verifier, redirect URI, dan client ID.

Tambahkan post-processor berikut untuk memeriksa respons dasar:

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());
});
Enter fullscreen mode Exit fullscreen mode

Jangan membuat assertion wajib untuk name, email, atau picture, karena klaim tersebut hanya tersedia jika dikembalikan provider. Catat nilainya untuk inspeksi.

Untuk penggunaan paket, pastikan body.scope memuat:

chatgpt.tokens.use.direct
Enter fullscreen mode Exit fullscreen mode

Validasi tanda tangan JWT dan nonce tetap harus dilakukan oleh backend Anda.

4. Simulasikan jalur kegagalan

Akun Plus asli tidak cocok untuk menguji seluruh kasus kegagalan. Gunakan mock server Apidog untuk mengembalikan respons berikut.

  • Penggunaan paket ditolak: respons token dengan scope tanpa chatgpt.tokens.use.direct. Aplikasi harus tetap mempertahankan sesi login dan menawarkan aktivasi penggunaan paket atau jalur penagihan lain.
  • Batas tercapai: HTTP 429 dengan error.code bernilai subscription_sharing_usage_limit_exceeded. Simulasikan juga kode yang sama dalam event streaming response.failed. Aplikasi harus menghentikan request paket.
  • Tidak memenuhi syarat: HTTP 403 dengan subscription_sharing_user_not_eligible. Jangan melakukan retry atau membuat loop OAuth.
  • Akses diputus: refresh token mengembalikan invalid_grant, atau API mengembalikan HTTP 401 dengan subscription_sharing_invalid_user. Hapus token lokal dan minta pengguna login kembali.

Rangkai kasus ini menjadi skenario pengujian dan jalankan pada CI menggunakan Apidog CLI. Halaman kesalahan dan pemulihan memuat daftar error lengkap.

5. Periksa request penggunaan paket secara langsung

Dengan token paket asli, kirim request streaming ke API Responses. Di Apidog, gunakan:

Bearer {{ACCESS_TOKEN}}
Enter fullscreen mode Exit fullscreen mode

Request harus berakhir dengan response.completed, yang merupakan satu-satunya sinyal keberhasilan.

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
  }'
Enter fullscreen mode Exit fullscreen mode

FAQ

Bisakah pengguna Gratis masuk dengan ChatGPT?

Ya. Masuk dengan ChatGPT tersedia bagi pengguna ChatGPT secara global. Namun, penggunaan paket di aplikasi lain memerlukan Plus atau Pro.

Apakah aplikasi saya mendapatkan kunci API OpenAI pengguna?

Tidak. Aplikasi menerima token ID dan, jika penggunaan paket disetujui, token akses OAuth untuk request API Responses yang memenuhi syarat.

Apa yang terjadi ketika pengguna mencapai batas penggunaan?

Request gagal dengan subscription_sharing_usage_limit_exceeded: sebagai HTTP 429, atau event response.failed jika streaming sudah dimulai. Hentikan proses dan tampilkan tautan Kelola penggunaan.

Bisakah pengguna Plus menjalankan GPT-6.1 Sol melalui aplikasi mitra?

Contoh dokumentasi menggunakan gpt-6.1-sol dengan token paket. Namun, daftar model yang tersedia harus diperiksa dengan token akun tersebut sebelum model ditawarkan di aplikasi. Baca juga apakah GPT-6.1 Sol gratis.

Langkah selanjutnya

Jika Anda menjalankan aplikasi komersial, bergabunglah dengan daftar tunggu dan mulai bangun penanganan batas serta pemutusan akses menggunakan mock sekarang. Perlakukan penggunaan paket sebagai opsi tambahan di samping penagihan API Anda, bukan pengganti langsung.

Simpan assertion token dan skenario kegagalan di Apidog. Saat ID klien Anda tersedia, variabel baru yang perlu diuji hanyalah token asli.

Top comments (0)