API Autentikasi

Pelajari cara melakukan autentikasi dengan SmallPict API menggunakan alur OTP tanpa kata sandi kami.

SmallPict API menggunakan alur autentikasi tanpa kata sandi (passwordless) yang aman berbasis One-Time Password (OTP). Panduan ini menjelaskan cara meminta API key secara terprogram untuk integrasi pihak ketiga atau skrip kustom.

Semua request API harus dilakukan melalui HTTPS untuk memastikan privasi data.

Base URL

Semua endpoint yang didokumentasikan di sini bersifat relatif terhadap:

https://api.tuxnoob.com/v1

[!IMPORTANT] API autentikasi internal yang digunakan oleh staf dan dashboard web SmallPict memiliki akses yang sangat dibatasi (allowlisted) dan tidak didokumentasikan untuk publik di sini. Jangan mencoba menggunakan rute /internal/ untuk integrasi plugin.

1. Request OTP

Untuk memulai alur autentikasi, Anda harus meminta OTP untuk dikirimkan ke alamat email pengguna.

Endpoint: POST /plugin/auth/request-otp

Request Body (JSON)

{
  "email": "user@example.com",
  "site_url": "https://example.com"
}
  • email (wajib): Alamat email tujuan pengiriman OTP.
  • site_url (opsional): URL situs yang meminta akses.

Response

{
  "status": "success",
  "message": "OTP sent successfully",
  "expires_in": 900
}

2. Verify OTP

Setelah pengguna menerima kode 6-digit melalui email, kirimkan kode tersebut ke endpoint verifikasi untuk menerima API Key.

Endpoint: POST /plugin/auth/verify-otp

Request Body (JSON)

{
  "email": "user@example.com",
  "otp": "123456",
  "site_url": "https://example.com"
}
  • email (wajib): Alamat email yang digunakan pada langkah sebelumnya.
  • otp (wajib): Kode OTP 6-digit.

Response

Setelah verifikasi berhasil, API akan memberikan API key dan secret key baru. Simpan key ini dengan aman.

{
  "status": "success",
  "api_key": "sp_live_xxxxxxxxxxxxxxxxx",
  "secret_key": "sp_sec_xxxxxxxxxxxxxxxxx",
  "message": "Authentication successful"
}

Mengautentikasi Request

Setelah Anda mendapatkan api_key dan secret_key, Anda harus menyertakannya di header pada setiap request API (seperti pemrosesan gambar) menggunakan metode HMAC-SHA256 signature demi keamanan.

Kirimkan header berikut pada setiap request:

x-api-key: sp_live_xxxxxxxxxxxxxxxxx
x-timestamp: 1672531200
x-signature: <hmac-sha256-signature>

Pembuatan Signature

x-signature adalah hasil enkripsi HMAC-SHA256 dalam bentuk string hex.

  1. timestamp = Unix timestamp saat ini
  2. body_hash = SHA256 hash dari JSON payload (atau e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 jika payload kosong)
  3. string_to_sign = METHOD\nENDPOINT\nTIMESTAMP\nBODY_HASH
  4. signature = HMAC_SHA256(secret_key, string_to_sign)

Jika signature tidak ada atau tidak valid, API akan membalas dengan status 401 Unauthorized.