Menu dokumentasi
Dokumentasi API & Webhook Autentikasi
Di halaman ini

Autentikasi

REST API Cloudin punya dua mekanisme autentikasi. Untuk integrasi server-to-server (bot, otomasi), pakai API key.

Base URL

kode
https://api.cloudin.id/v1

API key (X-API-Key)

Ini cara yang dipakai integrator. Generate key di Layanan → API Keys → Buat key.

bash
curl -H "X-API-Key: clk_live_xxx" \
  https://api.cloudin.id/v1/services/SVC_ID/addresses

Key hidup (clk_live_) dipakai di produksi. Ada juga key uji (clk_test_).

> Key hanya muncul sekali saat dibuat. Catat di password manager — kalau hilang, rotate.

Tiap key terikat ke satu layanan dan punya scope:

ScopeAkses
readBaca address & pesan (GET)
writeBaca + buat address (mencakup read)
adminSemua scope
Kalau scope tidak cukup untuk sebuah operasi, API balas 403 FORBIDDEN.

Endpoint yang menerima API key

API key hanya boleh dipakai di endpoint integrator berikut. Endpoint lain (mis. webhook CRUD, API keys, billing) menolak API key dengan 403 FORBIDDEN — endpoint itu khusus dashboard (Bearer JWT).

MethodPathScope minimal
GET/v1/services/:id/addressesread
POST/v1/services/:id/addresseswrite
GET/v1/inboxes/:address/messagesread
GET/v1/messages/:idread
API key yang dipakai harus milik layanan yang sama dengan resource yang diakses. Kalau :id layanan (atau pemilik address/pesan) bukan milik service key tersebut, API balas 403 FORBIDDEN.

Bearer JWT (dashboard)

Dashboard web (app.cloudin.id) mengautentikasi via Supabase session (Authorization: Bearer ). Ini mencakup semua endpoint /v1 yang user-scoped — termasuk yang tidak ada di allow-list API key. Kamu tidak perlu memakai jalur ini untuk integrasi; ia dipakai otomatis oleh UI dashboard.

Endpoint publik (tanpa auth)

Endpoint white-label di bawah /v1/public/* tidak butuh API key maupun JWT — dipakai oleh UI tempmail white-label di domain customer. Lihat Inbox publik (white-label).

Request ID

Setiap response menyertakan header X-Request-Id. Kamu boleh mengirim X-Request-Id sendiri untuk korelasi log; kalau tidak, server generate satu. Sertakan nilai ini saat melaporkan masalah — ia juga muncul di body error sebagai error.requestId.