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
| Parameter | Keterangan |
|---|---|
| limit | Jumlah pesan, 1–500. Default 100. |
| since | Hanya pesan dengan received_at lebih besar dari nilai ini (ms). |
| before | Hanya pesan dengan received_at lebih kecil dari nilai ini, untuk paging ke belakang. |
| q | Cari 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
| Field | Keterangan |
|---|---|
| id | ID unik dari HP. Kiriman ulang dengan ID sama diabaikan. |
| otp | Kode yang terdeteksi dari isi pesan, atau null. |
| card | 4 digit akhir kartu kalau disebut di pesan, atau null. |
| title, text | Judul dan isi notifikasi apa adanya. |
| app, package | Nama dan package aplikasi asal notifikasi. |
| device | Model HP pengirim. |
| posted_at | Waktu notifikasi muncul di HP (ms). |
| received_at | Waktu 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.