Lewati ke konten utama
s.id Logo
Lihat Markdown

Autentikasi

Dua cara autentikasi dengan API s.id, API key untuk server-ke-server, OAuth 2.0 untuk bertindak atas nama pengguna.

Akses server-ke-server

API key dipakai buat autentikasi integrasi server-ke-server. Buat satu di Dashboard → Developer → API Keys, pilih scope kamu, lalu kirim sebagai token Bearer.

ScopeAkses
links:readLihat daftar dan detail link
links:writeBuat dan perbarui link (buat, edit, pulihkan)
links:archiveArsipkan link
links:analyticsLihat statistik klik per link dan jumlah sepanjang waktu
qr:readLihat pengaturan QR (global dan per link)
qr:writeSesuaikan pengaturan QR (global dan per link)
user:readLihat profil pengguna terautentikasi dan kuota akun
microsites:readLihat microsite
microsites:writeBuat, perbarui, dan kelola komponen microsite
microsites:deleteHapus microsite dan komponennya
bash
Authorization: Bearer sk_live_...
bash
curl https://api.s.id/v2/links \
  -H "Authorization: Bearer sk_live_..."
  • Kunci diawali sk_live_ dan hanya ditampilkan sekali saat pembuatan.
  • Minta scope seminimal mungkin yang integrasimu butuhkan.
  • Cabut kunci segera jika dikompromi, buat yang baru.
  • Jangan pernah mengekspos API key di sisi klien (browser, aplikasi mobile).

Alur otorisasi

Arahkan pengguna ke s.id untuk memberikan persetujuan, verifikasi state saat callback, lalu tukarkan kode sekali pakai dengan access token dan refresh token yang berotasi.

  • Buat nilai state acak, simpan di sesi pengguna, lalu verifikasi kecocokan persis saat callback untuk mencegah CSRF.
  • Gunakan redirect_uri yang persis sama dengan URI yang terdaftar untuk aplikasi OAuth-mu.

PKCE wajib, tanpa client secret

Untuk SPA, aplikasi mobile, dan CLI. Buat code_verifier acak, kirim challenge S256 saat authorize, lalu kirim verifier asli ketika menukar token.

bash
https://api.s.id/oauth/authorize?
  response_type=code&
  client_id=YOUR_CLIENT_ID&
  redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback&
  scope=links%3Aread%20links%3Awrite&
  state=RANDOM_CSRF_VALUE&
  code_challenge=BASE64URL_SHA256_VERIFIER&
  code_challenge_method=S256
bash
curl -X POST https://api.s.id/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "code=AUTHORIZATION_CODE" \
  -d "redirect_uri=https://app.example.com/callback" \
  -d "code_verifier=ORIGINAL_RANDOM_VERIFIER"

Client secret di backend tepercaya

Untuk aplikasi server-rendered atau backend yang dapat menjaga client_secret. PKCE tetap opsional dan disarankan sebagai perlindungan tambahan.

bash
https://api.s.id/oauth/authorize?
  response_type=code&
  client_id=YOUR_CLIENT_ID&
  redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback&
  scope=links%3Aread%20links%3Awrite&
  state=RANDOM_CSRF_VALUE
bash
curl -X POST https://api.s.id/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "code=AUTHORIZATION_CODE" \
  -d "redirect_uri=https://app.example.com/callback"
Access tokenKeterangan
access_tokenBerlaku selama 1 jam
refresh_tokenBerlaku selama 30 hari
codeSekali pakai; kedaluwarsa setelah 10 menit
bash
curl -X POST https://api.s.id/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=refresh_token" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "refresh_token=CURRENT_REFRESH_TOKEN"
bash
curl -X POST https://api.s.id/oauth/revoke \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_TO_REVOKE"}'
Discovery dan operasi tokenKeterangan
https://api.s.id/.well-known/oauth-authorization-serverTemukan URL endpoint, scope yang didukung, dan metode PKCE melalui metadata RFC 8414.
POST /oauth/introspectResource server rahasia dapat memeriksa apakah token aktif dan melihat scope-nya.
POST /oauth/revokeCabut access token atau refresh token saat pengguna memutus integrasimu.
GET /oauth/userinfoBaca profil yang terkait dengan access token OAuth yang memiliki user:read.

Buka Dashboard Developer