Autentikasi API Key

Cara menggunakan API key untuk mengakses endpoint API.

API menggunakan dua jenis autentikasi:

  1. API key — untuk endpoint API biasa dan integrasi server/admin.
  2. User-session token — untuk endpoint /me/*, diterbitkan lewat POST /sessions.

API key dibuat dari dashboard WordPress melalui custom post type API Keys.

Format API Key

Format API key:

text
sejoliapi_<prefix>_<secret>

Contoh:

text
sejoliapi_ab12cd34_1234567890abcdef1234567890abcdef

Header Authorization

Cara utama mengirim API key adalah melalui header Authorization:

http
Authorization: Bearer sejoliapi_<prefix>_<secret>

Contoh:

bash
curl \
  -H "Authorization: Bearer sejoliapi_ab12cd34_1234567890abcdef" \
  "https://domain-anda.com/wp-json/sejoli/v1/orders"

Header X-Sejoli-Key

Alternatif lain, API key dapat dikirim melalui header X-Sejoli-Key:

http
X-Sejoli-Key: sejoliapi_<prefix>_<secret>

Contoh:

bash
curl \
  -H "X-Sejoli-Key: sejoliapi_ab12cd34_1234567890abcdef" \
  "https://domain-anda.com/wp-json/sejoli/v1/orders"

Cara Validasi API Key

Saat request masuk, API akan:

  1. Step 1: Baca header

    Membaca header Authorization atau X-Sejoli-Key.

  2. Step 2: Cek format token

    Mengecek format token.

  3. Step 3: Cari API key

    Mencari API key berdasarkan prefix.

  4. Step 4: Verifikasi secret

    Memverifikasi secret menggunakan hash.

  5. Step 5: Baca scopes

    Membaca scopes yang dimiliki API key.

  6. Step 6: Cek scope endpoint

    Mengecek apakah scope cukup untuk endpoint yang diakses.

  7. Step 7: Update timestamp

    Memperbarui waktu terakhir digunakan.

User-session Token Untuk /me

Endpoint /me/* tidak memakai API key secara langsung. Endpoint tersebut memakai user-session token yang diterbitkan oleh:

http
POST /wp-json/sejoli/v1/sessions

POST /sessions sendiri tetap dilindungi API key dan membutuhkan scope sessions:write.

Setelah token diterbitkan, gunakan header:

http
Authorization: Bearer <user_session_token>

Scope Wajib

Setiap endpoint membutuhkan scope tertentu. Contoh:

EndpointScope
GET /ordersorders:read
POST /ordersorders:write
DELETE /orders/{id}orders:delete
GET /productsproducts:read
POST /sessionssessions:write

Jika scope tidak sesuai, API akan mengembalikan error:

json
{
  "code": "rest_forbidden",
  "message": "Insufficient scope.",
  "data": {
    "status": 403
  }
}

Tips Keamanan

  • Gunakan scope seminimal mungkin.
  • Buat API key berbeda untuk setiap aplikasi/integrasi.
  • Jangan menyimpan API key di frontend publik.
  • Rotasi API key jika dicurigai bocor.
  • Hapus API key yang sudah tidak digunakan.

Last updated Jul 6, 2026