● REST API · v1

เอกสาร 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.

Base URL
https://aurora.sikrid.co.th/api/v1
Authorization header
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

HTTPCodeความหมาย
401UNAUTHORIZEDAPI key หาย/ไม่ถูกต้อง หรือถูกระงับ
402INSUFFICIENT_BALANCEเติมเงินก่อน
402SLIP_REJECTED / SLIP_AMOUNT_MISMATCH / SLIP_RECEIVER_MISMATCHตรวจสลิปไม่ผ่าน
409SLIP_DUPLICATEสลิปนี้ถูกใช้ไปแล้ว
409IDEMPOTENCY_IN_PROGRESSคีย์เดียวกันกำลังทำงานอยู่
429RATE_LIMITEDเกินอัตรา — backoff ตาม retry_after_seconds
502/504MAIL_PROVIDER_* / OTP_PROVIDER_*ระบบขัดข้องชั่วคราว/หมดเวลา (ไม่หักเงิน หรือคืนเงินอัตโนมัติ)

ต้องการ API key? เข้าสู่ระบบ แล้วสร้างคีย์จากหน้า Dashboard › API Access.