API Documentation

Panduan lengkap menggunakan API Akses Email

Base URL

https://aksesemail.my.id/api

Semua endpoint menggunakan base URL ini. Prefix /api sudah termasuk.

Authentication

Endpoint terproteksi membutuhkan API Key via header X-API-Key. API Key didapat dari dashboard setelah mendaftar.

Endpoint publik (prefix /inbox) tidak membutuhkan API Key.

# Contoh request dengan API Key
curl -H "X-API-Key: ak_xxxxxxxxxxxxxxxxxx" \
     https://aksesemail.my.id/api/emails/user@aksesemail.my.id
⚠️ Jangan bagikan API Key kamu! Bersifat rahasia dan memberi akses penuh ke semua inbox kamu.

Email yang Dilindungi Password

Jika sebuah alamat diproteksi dengan password, endpoint /emails/* untuk alamat itu wajib menyertakan header X-Email-Password (di samping X-API-Key). Tanpa password yang benar, response 401 dengan requiresPassword: true.

curl -H "X-API-Key: ak_xxxxxxxxxxxxxxxxxx" \
     -H "X-Email-Password: passwordrahasia" \
     https://aksesemail.my.id/api/emails/user@aksesemail.my.id

Ringkasan Endpoint

MethodEndpointAuthDeskripsi
GET/emails/:addressAPI KeyAmbil semua email (isi lengkap)
GET/emails/:address/:idAPI KeyAmbil satu email by ID
DEL/emails/:address/:idAPI KeyHapus satu email
GET/inbox/:addressPublikDaftar email (preview)
GET/inbox/:address/:idPublikIsi lengkap satu email
DEL/inbox/:addressPublikHapus semua email di inbox

Endpoint Terproteksi (Butuh API Key)

GET/emails/:address

Ambil semua email ke alamat tertentu. Response menyertakan isi lengkap (plain text & HTML).

Gunakan untuk otomasi seperti mengambil kode OTP, link verifikasi, dll.

Contoh Request

curl -H "X-API-Key: ak_xxxxxxxxxxxxxxxxxx" \
     https://aksesemail.my.id/api/emails/user@aksesemail.my.id

Contoh Response (200 OK)

{
  "success": true,
  "emails": [
    {
      "id": "clxyz123abc",
      "from": "OpenAI <noreply@tm.openai.com>",
      "to": "user@aksesemail.my.id",
      "subject": "Your temporary ChatGPT verification code",
      "body": "Enter this code to continue:\n\n361259\n...",
      "text": "Enter this code to continue:\n\n361259\n...",
      "html": "<html>...</html>",
      "received_at": "2026-05-03T01:55:02.000Z"
    }
  ]
}

Deskripsi Field

FieldTipeKeterangan
idstringID unik email (untuk detail/hapus)
fromstringPengirim, format Nama <email>
tostringPenerima (sama dengan :address)
subjectstringJudul email
bodystringIsi plain text — OTP, link, teks utama
textstringAlias dari body
htmlstringIsi email format HTML lengkap
received_atstringWaktu diterima (ISO 8601 UTC)
GET/emails/:address/:id

Ambil satu email spesifik berdasarkan ID dari endpoint list di atas.

Contoh Request

curl -H "X-API-Key: ak_xxxxxxxxxxxxxxxxxx" \
     https://aksesemail.my.id/api/emails/user@aksesemail.my.id/clxyz123abc

Response 200 / 404

{ "success": true, "email": { ... } }
{ "success": false, "error": "Email not found." }
DELETE/emails/:address/:id

Hapus satu email berdasarkan ID. Aksi ini tidak bisa dibatalkan.

curl -X DELETE \
     -H "X-API-Key: ak_xxxxxxxxxxxxxxxxxx" \
     https://aksesemail.my.id/api/emails/user@aksesemail.my.id/clxyz123abc
{ "success": true, "message": "Email deleted." }

Endpoint Publik (Tanpa API Key)

Tidak butuh autentikasi. Dipakai frontend, tapi juga bisa diakses langsung.

GET/inbox/:address

Ambil daftar email masuk (preview saja).

⚠️ Tidak menyertakan isi email. Hanya preview 100 karakter. Untuk isi lengkap gunakan /emails/:address.

curl https://aksesemail.my.id/api/inbox/user@aksesemail.my.id
{
  "success": true,
  "emails": [
    {
      "id": "clxyz123abc",
      "from": "OpenAI <noreply@tm.openai.com>",
      "subject": "Your verification code",
      "preview": "Enter this temporary verification code to contin...",
      "received_at": "2026-05-03T01:55:02.000Z"
    }
  ]
}
GET/inbox/:address/:id

Ambil isi lengkap satu email (termasuk body & HTML). Dipakai UI saat membuka email.

curl https://aksesemail.my.id/api/inbox/user@aksesemail.my.id/clxyz123abc
DELETE/inbox/:address

Hapus semua email di inbox untuk alamat tertentu. Dipakai tombol "Hapus" di UI.

{ "success": true, "message": "Deleted 2 email(s).", "count": 2 }

Contoh Kode Lengkap

Mengambil semua email lalu mencetak subject + membaca OTP.

import requests, re

API_KEY = "ak_xxxxxxxxxxxxxxxxxx"
EMAIL   = "user@aksesemail.my.id"
BASE    = "https://aksesemail.my.id"

resp = requests.get(f"{BASE}/api/emails/{EMAIL}", headers={"X-API-Key": API_KEY}, timeout=30)
data = resp.json()
if not data["success"]:
    print("Gagal:", data.get("error")); exit()

for email in data["emails"]:
    print(f"--- {email['subject']} ---")
    match = re.search(r'\b(\d{6})\b', email['body'])
    if match: print("OTP :", match.group(1))

Error Responses

Semua error mengembalikan JSON dengan success: false dan error.

StatusPenyebabContoh
200Sukses{ "success": true, ... }
400Format alamat email salah"Invalid email address format."
401API Key tidak ada / tidak valid"Unauthorized."
401Email dilindungi password, header X-Email-Password salah/kosong{ "requiresPassword": true }
404Email dengan ID tidak ditemukan"Email not found."
429Terlalu banyak request"Too many requests."
500Server error internal"..."

Catatan Penting