Reference / Messages / ส่ง SMS

POSTส่ง SMS

POST https://me-sms.com/api/v2/sms/send

ส่งข้อความ SMS ไปยังเบอร์ปลายทาง รองรับการส่งครั้งละ 1 เบอร์ หรือ batch ได้สูงสุด 2,000,000 เบอร์ต่อ request เมื่อสำเร็จจะคืนค่า uuid ใช้ดูสถานะ/รายงานการส่งที่ GET /api/v2/sms/{uuid}/recipients

– Authentication

วิธี authenticate

สร้าง API key ที่หน้า Settings → API Keys จากนั้นแนบ header x-api-key: <key> ทุกครั้งที่ยิง request

Endpoint POST /api/v2/sms/send ต้องใช้ API key ที่มี scope sms:send หรือ * เท่านั้น ส่วน endpoint อื่นใน docs นี้ใช้ API key ที่ valid ก็เพียงพอ

– Body parameters

พารามิเตอร์

sender
stringREQUIRED
Sender name ที่ผ่านการอนุมัติแล้ว ความยาวไม่เกิน 11 ตัวอักษร อังกฤษ/ตัวเลข/เครื่องหมาย (ขอ sender ใหม่ได้ที่หน้า Senders)
content
stringOPTIONAL*
เนื้อหาข้อความ ความยาวไม่เกิน 1,000 ตัวอักษร – ภาษาไทยนับ 70 ตัวอักษร/SMS, ภาษาอังกฤษนับ 160 ตัวอักษร/SMS *ต้องส่ง content หรือ templateId อย่างใดอย่างหนึ่ง
msisdns
string[]OPTIONAL*
เบอร์ปลายทาง – รูปแบบ 66XXXXXXXXX หรือ 0XXXXXXXXX สูงสุด 2,000,000 เบอร์ต่อ request *ต้องส่ง msisdns หรือ contactGroupId อย่างใดอย่างหนึ่ง
contactGroupId
integerOPTIONAL
ส่งให้ contact group ที่สร้างไว้ – ระบบจะ resolve เบอร์ทั้งหมดในกลุ่มอัตโนมัติ
templateId
integerOPTIONAL
ใช้ template ที่บันทึกไว้แทน content – ใส่ variables เพื่อแทนค่า {{name}}
variables
objectOPTIONAL
key/value สำหรับแทนใน template เช่น {"name":"คุณตูน"}
scheduledTime
string (ISO 8601)OPTIONAL
เวลาส่งล่วงหน้า เช่น 2026-06-01T10:00:00+07:00
dryRun
booleanOPTIONAL
ตั้งเป็น true เพื่อตรวจราคาและจำนวนข้อความโดยไม่หักเครดิตและไม่ส่งจริง
– Response

การตอบกลับ

200 OKข้อความถูก queue เรียบร้อย
400 เบอร์/พารามิเตอร์ไม่ถูกต้อง
401 ไม่มี / API key ไม่ถูกต้อง
402 เครดิตไม่เพียงพอ – เติมเครดิตที่ หน้าราคา
429 เกิน rate limit – ลด throughput
– Delivery status

สถานะปลายทาง (per-recipient)

เรียก GET /api/v2/sms/{uuid}/recipients เพื่อรับสถานะของแต่ละเบอร์

pending
รับเข้าระบบ รอส่งให้ผู้ให้บริการ
success
ปลายทางรับสำเร็จ ✓
failed
ส่งไม่สำเร็จ (เบอร์ปิด/ไม่มีสัญญาณ)
invalid
เบอร์ไม่ถูกต้อง
blocked
เบอร์ติด blocklist
expired
หมดเวลา retry
timeout
ไม่ได้รับ delivery report ภายในเวลาที่กำหนด

Error format

เมื่อ API ตอบ status code 4xx/5xx body จะอยู่ในรูปแบบ JSON เดียวกันเสมอ:

{
  "error": "Insufficient credits",
  "code": "INSUFFICIENT_CREDITS"
}

error เป็นข้อความที่อ่านง่าย, code เป็น machine-readable (มีในบาง endpoint เท่านั้น เช่น send/retry). HTTP status code ที่พบบ่อย:

400
พารามิเตอร์ไม่ถูกต้อง
401
ไม่มี/API key ไม่ถูกต้อง
402
เครดิตไม่พอ
403
scope ไม่พอ หรือไม่ใช่เจ้าของ resource
404
ไม่พบ resource
429
เกิน rate limit

POSTPreview cost

POST https://me-sms.com/api/v2/sms/preview-cost

คำนวณจำนวนข้อความ (parts) + จำนวนเครดิตที่จะถูกหัก ก่อนเรียก /send จริง ไม่ดึงเครดิตและไม่ส่ง SMS

พารามิเตอร์ (body)

content
stringREQUIRED
เนื้อหาที่จะใช้คำนวณ ความยาวไม่เกิน 2,000 ตัวอักษร
msisdns
string[]OPTIONAL*
เบอร์ปลายทาง — เลือก msisdns หรือ contactGroupId
contactGroupId
integerOPTIONAL
contact group id แทนการระบุเบอร์ทีละตัว
templateId
integerOPTIONAL
ใช้ template ที่บันทึกไว้แทน content
variables
objectOPTIONAL
แทนค่าตัวแปรใน template

POSTยกเลิก scheduled SMS

POST https://me-sms.com/api/v2/sms/{uuid}/cancel

ยกเลิก SMS ที่ตั้งเวลาส่งล่วงหน้าแต่ยังไม่ถึงเวลา ยกเลิกแล้วเครดิตจะถูกคืน (ถ้าหักไปก่อน)

Path

uuid
stringREQUIRED
UUID ของ SMS ที่ได้ตอนเรียก /send

ยกเลิกได้เฉพาะ SMS ที่ตั้งเวลาไว้ล่วงหน้าและยังไม่ถึงเวลาส่ง (มีค่า scheduledTime) ถ้า SMS ถูกประมวลผลไปแล้ว/ส่งเสร็จแล้ว/ถูกยกเลิกแล้ว จะตอบ HTTP 400 หรือ 409 พร้อม code: NOT_SCHEDULED / ALREADY_CANCELLED / ALREADY_PROCESSING


GETรายการ SMS

GET https://me-sms.com/api/v2/sms

รายการ SMS ของบัญชี เรียงล่าสุดก่อน

Query parameters

page
integerOPTIONAL
default 1
limit
integerOPTIONAL
default 20, max 100
status
enumOPTIONAL
sent | failed | pending | scheduled | cancelled
sender
stringOPTIONAL
กรองตามชื่อ sender
from / to
ISO 8601OPTIONAL
ช่วงเวลา createdAt
search
stringOPTIONAL
ค้นใน refNo / content

GETดึง 1 SMS

GET https://me-sms.com/api/v2/sms/{uuid}

รายละเอียดของ 1 SMS รวมถึง drSummary (จำนวนเบอร์แต่ละสถานะ) เมื่อส่งเสร็จแล้ว


GETRecipients (per-recipient status)

GET https://me-sms.com/api/v2/sms/{uuid}/recipients

สถานะปลายทางทีละเบอร์ รองรับ cursor pagination เพื่อเลื่อนรายการขนาดใหญ่ได้รวดเร็ว แม้การส่งมีผู้รับระดับล้านเบอร์

Query parameters

limit
integerOPTIONAL
default 50, max 50
after
integerOPTIONAL
cursor — ส่งค่า nextCursor ที่ได้จาก response ก่อนหน้า (เริ่มจาก 0 = หน้าแรก) เพื่อดึงหน้าถัดไป
status
enumOPTIONAL
pending | success | failed | invalid | blocked | expired | timeout
search
stringOPTIONAL
ค้นเบอร์ปลายทาง (substring)

เมื่อใช้ after response จะมี nextCursor + hasMore แทนค่า total (ดูสรุปจำนวนทั้งหมดของแต่ละสถานะที่ summary[])


GETเครดิตคงเหลือ

GET https://me-sms.com/api/v2/sms/credit/balance

เครดิตคงเหลือของบัญชี (ใช้ดูก่อนตัดสินใจส่ง batch ใหญ่)


GETรายการ sender

GET https://me-sms.com/api/v2/senders

sender name ทั้งหมดของบัญชี (รวม shared) ส่ง SMS ได้เฉพาะ sender ที่ status = "approved"

ขอ sender name ใหม่ผ่าน หน้า Senders ในระบบ (มีขั้นตอนยืนยันเอกสาร — ไม่รองรับผ่าน API)