เอกสาร API Aurora
เข้าถึงระบบแบบโปรแกรมสำหรับนักพัฒนาและรีเซลเลอร์ — เติมเงิน ซื้อ Hotmail อ่าน OTP จากกล่องเมล เช่าเบอร์รับ OTP และรับเหตุการณ์ผ่าน webhook ทั้งหมดผ่าน HTTP. เงินทุกค่าเป็นหน่วย สตางค์ (satang) (1 บาท = 100 สตางค์) ส่งเป็น string.
เริ่มต้นใช้งาน
ทุกคำขอไปที่ https://aurora.sikrid.co.th/api/v1/* ต้องแนบ API key เป็น Bearer token บน header Authorization. คีย์จะแสดง ครั้งเดียว ตอนสร้าง — ถ้าทำหาย ให้หมุนคีย์ใหม่จากหน้า Dashboard.
https://aurora.sikrid.co.th/api/v1
Authorization: Bearer sk_live_xxxxx
ทุก response เป็น JSON. กรณี error จะใช้ envelope รูปแบบเดียวกันเสมอ:
{ "error": { "code": "RATE_LIMITED", "message": "…", "retry_after_seconds": 12 } }เติมเงิน (PromptPay + สลิป)
สร้าง payment intent เพื่อรับ QR พร้อมเพย์ ชำระเงิน แล้วส่งข้อมูล QR จากสลิปกลับมา ระบบจะตรวจสลิปกับบัญชีผู้รับและเครดิตยอดทันที. แนะนำให้แนบ Idempotency-Key. ยอดบนสลิปต้องตรงกับ intent เป๊ะ และสลิปใช้ได้ครั้งเดียว.
# 1) สร้าง intent (ได้ qr_payload = สตริง EMVCo PromptPay)
curl -X POST https://aurora.sikrid.co.th/api/v1/topup/promptpay \
-H "Authorization: Bearer sk_live_xxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "amount_cents": "10000" }'
# 2) ชำระเงิน แล้วส่งข้อมูล QR จากสลิป
curl -X POST https://aurora.sikrid.co.th/api/v1/topup/promptpay/:id/slip \
-H "Authorization: Bearer sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{ "qr_data": "<string ที่อ่านได้จาก QR บนสลิป>" }'
# 3) เช็คสถานะ intent
curl https://aurora.sikrid.co.th/api/v1/topup/promptpay/:id \
-H "Authorization: Bearer sk_live_xxxxx"ซื้อ Hotmail + อ่าน OTP จากกล่องเมล
ดูแคตตาล็อกสินค้า สั่งซื้อ แล้วดึง credential ของ order. หมายเหตุ: credential ไม่ถูกส่งคืน ใน response ของการสั่งซื้อ ต้องเรียก order detail แยกเพื่ออ่าน. แนะนำให้แนบ Idempotency-Key ทุกครั้งที่สั่งซื้อ.
# ดูสินค้า
curl https://aurora.sikrid.co.th/api/v1/mail/products \
-H "Authorization: Bearer sk_live_xxxxx"
# → { "products": [ { "sku": "m-1", "label": "Hotmail New",
# "price_cents": "1000", "available": -1, "quality": 3 }, … ] }
# สั่งซื้อ (credential ไม่อยู่ใน response นี้)
curl -X POST https://aurora.sikrid.co.th/api/v1/mail/orders \
-H "Authorization: Bearer sk_live_xxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "sku": "m-1", "qty": 1 }'
# ดึง credential ของ order
curl https://aurora.sikrid.co.th/api/v1/mail/orders/:id \
-H "Authorization: Bearer sk_live_xxxxx"
# → { …, "items": [ { "credential": "email|password|token|uuid" } ] }อ่าน OTP ที่ส่งเข้ากล่องเมลที่ซื้อ (ต้องเปิดใช้ MAIL_OTP_READ_ENABLED): poll จนกว่า otp จะไม่เป็น null. พารามิเตอร์ from กรองผู้ส่ง,since กรองตามวันที่ (ISO), email จำเป็นเมื่อ order มีหลายบัญชี.
curl "https://aurora.sikrid.co.th/api/v1/mail/orders/:id/otp?from=tiktok&since=2026-06-10T00:00:00Z" \
-H "Authorization: Bearer sk_live_xxxxx"
# → { "email": "box@hotmail.com", "otp": "654321", # null จนกว่าจะมีข้อความเข้า → poll
# "message": { "from": "...", "subject": "...", "date": "...", "preview": "..." },
# "checked_at": "..." }เช่าเบอร์รับ OTP
ดูบริการที่รองรับ จองเบอร์ แล้ว poll GET /operations/:id จนสถานะเป็น completed (มี otp_code) หรือใช้ webhook เพื่อรับผลแบบ push. ยกเลิกก่อน SMS เข้าเพื่อคืนเงินที่กันไว้.
# ดูบริการ
curl https://aurora.sikrid.co.th/api/v1/services \
-H "Authorization: Bearer sk_live_xxxxx"
# → { "services": [ { "service": "telegram", "country": 1, "charge_cents": "30" }, … ] }
# จองเบอร์
curl -X POST https://aurora.sikrid.co.th/api/v1/numbers \
-H "Authorization: Bearer sk_live_xxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "service": "telegram", "country": 1 }'
# poll ผลลัพธ์
curl https://aurora.sikrid.co.th/api/v1/operations/:id \
-H "Authorization: Bearer sk_live_xxxxx"
# → { …, "status": "completed", "otp_code": "123456", "sms_text": "..." }
# ยกเลิก + คืนเงินที่กันไว้ (ถ้ายังไม่มี OTP)
curl -X POST https://aurora.sikrid.co.th/api/v1/operations/:id/cancel \
-H "Authorization: Bearer sk_live_xxxxx"Webhook
ตั้งค่า URL ปลายทางเพื่อรับเหตุการณ์ OTP และคำสั่งซื้อแบบ push. ทุก request จะถูกเซ็นด้วย secret ของคุณ (HMAC) — การตั้ง URL ใหม่จะหมุน signing secret ใหม่เสมอ.
curl -X POST https://aurora.sikrid.co.th/api/v1/webhook-config \
-H "Authorization: Bearer sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{ "webhook_url": "https://you/hook" }'
# → หมุน signing secret ใหม่ (แสดงครั้งเดียว)Idempotency
ทุก POST ที่เคลื่อนเงิน (/numbers, /mail/orders, /topup/*) ควรแนบ Idempotency-Key เป็น UUID ที่ไม่ซ้ำ. การ retry ด้วยคีย์เดิมจะ replay ผลลัพธ์เดิมแทนการหักเงินซ้ำ — ส่วนคำขอซ้ำที่ยังทำงานอยู่ จะได้ 409 IDEMPOTENCY_IN_PROGRESS.
Idempotency-Key: 1f3a9c10-2b44-4d6e-9f0a-7c1e2b3d4e5f
Rate limits
เมื่อเปิด RATE_LIMIT_ENABLED: จำกัดอัตราการสมัคร/ขอ magic link ต่อ IP, และ API ทั่วไป + การ poll OTP ต่อคีย์. ถ้าเกินจะได้ 429 RATE_LIMITED พร้อม header Retry-After — ให้ backoff ตามค่านั้น.
ตาราง Error codes
| HTTP | Code | ความหมาย |
|---|---|---|
| 401 | UNAUTHORIZED | API key หาย/ไม่ถูกต้อง หรือถูกระงับ |
| 402 | INSUFFICIENT_BALANCE | เติมเงินก่อน |
| 402 | SLIP_REJECTED / SLIP_AMOUNT_MISMATCH / SLIP_RECEIVER_MISMATCH | ตรวจสลิปไม่ผ่าน |
| 409 | SLIP_DUPLICATE | สลิปนี้ถูกใช้ไปแล้ว |
| 409 | IDEMPOTENCY_IN_PROGRESS | คีย์เดียวกันกำลังทำงานอยู่ |
| 429 | RATE_LIMITED | เกินอัตรา — backoff ตาม retry_after_seconds |
| 502/504 | MAIL_PROVIDER_* / OTP_PROVIDER_* | ระบบขัดข้องชั่วคราว/หมดเวลา (ไม่หักเงิน หรือคืนเงินอัตโนมัติ) |
ต้องการ API key? เข้าสู่ระบบ แล้วสร้างคีย์จากหน้า Dashboard › API Access.