otp/inbox
← Kembali

API

Endpoint baca terbuka tanpa token dan mengizinkan CORS, jadi bisa dipanggil langsung dari browser, bot, atau skrip. Hanya endpoint kirim (/api/ingest) yang memakai token.

Realtime

GET/api/stream

Server-Sent Events. Koneksi tetap terbuka; setiap SMS baru dikirim sebagai event message. Saat tersambung, server mengirim event hello. Ping komentar dikirim tiap 25 detik.

curl -N https://otp.sewabotorder.com/api/stream

event: hello
data: {"total":128,"server_time":1794373601700}

event: message
data: {"id":"a1b2c3…","app":"Numero","title":"AUTHOTP","text":"Use code 391778 …","otp":"391778","card":"5014",…}

JavaScript:

const es = new EventSource('https://otp.sewabotorder.com/api/stream');
es.addEventListener('message', (e) => {
  const sms = JSON.parse(e.data);
  console.log(sms.otp, sms.text);
});

Python:

import json, requests
r = requests.get("https://otp.sewabotorder.com/api/stream", stream=True, timeout=None)
event = None
for line in r.iter_lines(decode_unicode=True):
    if line.startswith("event:"): event = line[6:].strip()
    elif line.startswith("data:") and event == "message":
        sms = json.loads(line[5:]); print(sms["otp"], sms["text"])

Kalau koneksi putus, sambung ulang lalu ambil yang terlewat dengan /api/messages?since=<received_at terakhir>.

Riwayat

GET/api/messages

ParameterKeterangan
limitJumlah pesan, 1–500. Default 100.
sinceHanya pesan dengan received_at lebih besar dari nilai ini (ms).
beforeHanya pesan dengan received_at lebih kecil dari nilai ini, untuk paging ke belakang.
qCari di judul, isi, kode, dan nama aplikasi.
curl "https://otp.sewabotorder.com/api/messages?limit=5"

{"ok":true,"count":5,"total":128,"messages":[{…terbaru…}, …]}

Objek pesan

FieldKeterangan
idID unik dari HP. Kiriman ulang dengan ID sama diabaikan.
otpKode yang terdeteksi dari isi pesan, atau null.
card4 digit akhir kartu kalau disebut di pesan, atau null.
title, textJudul dan isi notifikasi apa adanya.
app, packageNama dan package aplikasi asal notifikasi.
deviceModel HP pengirim.
posted_atWaktu notifikasi muncul di HP (ms).
received_atWaktu diterima server (ms).

Kirim (dipakai aplikasi HP)

POST/api/ingest

Memakai token INGEST_KEY supaya tidak ada pihak lain yang bisa memasukkan SMS palsu.

curl -X POST https://otp.sewabotorder.com/api/ingest \
  -H "Authorization: Bearer $INGEST_KEY" -H "Content-Type: application/json" \
  -d '{"id":"tes-12345678","app":"Numero","title":"AUTHOTP","text":"Use code 123456 …","posted_at":1794373601638}'

Balasan 201 untuk pesan baru, 200 dengan "duplicate":true kalau ID sudah ada.

GET/api/health

Mengembalikan jumlah pesan tersimpan dan jumlah klien realtime yang tersambung.