SMS → Backend Event API
Receive SMS as webhooks. Trigger anything. Монголын бүх үүрэн оператортой холбогдсон нэг API. 144773 руу ирсэн SMS-г real-time event болгож таны backend руу шууд илгээнэ.
Sign up → API KEY → Ship
Гэрээ, уулзалт, хүлээлт шаардлагагүй. Бүртгүүлж шууд production-д ашигла.
0₮ зардал
SMS төлбөрийг хэрэглэгч өөрөө төлнө. Барьцаа төлбөр, суурь хураамж, setup fee, monthly fee ямар ч зардал гарахгүй.
Easy Setup
SESSION үүсгэ, CALLBACK хүлээ, төлөв шалга. SDK шаардлагагүй, REST API л хангалттай.
SMS бүр = 40₮ орлого
Хэрэглэгч баталгаажуулалт хийх бүрд таны данс руу 40₮ орлого шууд хуримтлагдана.
Session-гүй RULE callback
144773 дугаарт ирсэн PREFIX-тэй SMS-ийг танд нэг API-аар redirect хийнэ. Service activation, account linking зэрэгт.
Туршиж үзэх - Production Flow
Session үүсгээд 144773 дугаар руу SMS илгээж бодитоор туршиж үзээрэй.
Туршиж үзэх таны дугаар
Мессеж илгээх боломжтой латин үсэг, тоо, тэмдэгт
SMS үйлчилгээ интеграц хийх нүсэр процессоос нэг API хүртэл
Оператор тус бүртэй гэрээ хийх, барьцаа төлөх, сар бүрийн хураамж төлөх шаардлагагүй. Бүртгүүлэн API KEY авч production-д шууд ашигла.
Үүрэн оператор тус бүртэй гэрээ
Дугаарын төлбөр + барьцаа төлбөр
Суурь хураамж + хэрэглээний төлбөр
Техникийн холболт өөрөө хийх
Найдвартай ажиллагаа өөрөө хариуцах
Монголын бүх үүрэн оператор нэг API дээр нэгдсэн
0₮ setup, 0₮ monthly — гэрээ шаардлагагүй
SMS event бүрт 40₮ орлого
Sign up → API KEY → Ship
< 1s callback latency
Илгээх биш, хүлээн авах — MO SMS гэж юу вэ?
Уламжлалт SMS нь системээс хэрэглэгч рүү илгээгддэг (MT). Verify.MN харин эсрэг чиглэлтэй — хэрэглэгч өөрөө 144773 руу SMS илгээж таны системийг trigger хийнэ (MO).
Илгээх (MT)
Mobile-Terminated
Урсгал
Server → User
Зардал
Та төлнө
Техник
API Call
Ашиглалт
OTP, Notification
Хүлээн авах (MO)
Mobile-Originated
Урсгал
User → Server
Зардал
Хэрэглэгч төлнө (орлого)
Техник
Webhook / Event
Ашиглалт
Verification, Payment, Trigger
Баталгаажуулалтын урсгал
Хэрэглэгч 144773 руу SMS илгээхэд Verify.MN Gateway оператороос хүлээн авч, таны backend руу шууд event хэлбэрээр дамжуулна.
Your App
Таны backend / app server
Verify.MN Gateway
Монголын бүх үүрэн операторыг нэгтгэсэн API
User + Mobile Operator
Mobicom, Skytel, Unitel, G-Mobile, ONDO
1. Session үүсгэх
POST /sessions
2. Session мэдээлэл буцаах
sessionId, text, ttl, smsUri
3. SMS заавар харуулах
smsUri, text, ttl-ийг UI дээр үзүүлнэ
4. SMS илгээх
144773 руу “0000”
5. Callback мэдэгдэл
GET callback
6. Төлөв шалгах
GET /sessions/:sessionId
7. Албан ёсны төлөв
status = VERIFIED
Хоёр integration загвар — нэг API
Нэг удаагийн баталгаажуулалт хэрэгтэй бол SESSION, ирсэн SMS бүрээр action trigger хийх бол RULE.
Түр хугацаанд SMS хүлээж match хийх
Нэг удаагийн баталгаажуулалт. 5 минутын TTL.
Жишээ: код `1234`, хугацаа `5 мин`
OTP / нэг удаагийн код
Login, signup verification
Худалдан авалт баталгаажуулах
POST /sessions
Ирсэн SMS → Шууд action trigger
Persistent prefix. SMS бүрт callback илгээнэ.
Жишээ: `OPEN:123` → 123 дугаар хаалга нээх
Remote control — хаалга, төхөөрөмж удирдах
Micro-payment trigger
SMS command automation
Developer callback URL
Интеграцийн endpoint-ууд
SESSION үүсгэх, CALLBACK мэдэгдэл хүлээж авах, албан ёсны төлөв шалгах үндсэн endpoint-уудыг шууд ашиглахад бэлэн жишээтэй нь үзүүлэв.
/sessions
SESSION үүсгэх
Backend талаас API түлхүүрээр баталгаажуулсан хүсэлт илгээж, утас болон илгээх текстийг зааж шинэ SESSION үүсгэнэ. Хариу болон `sessionId`, `smsUri`, `displayInstruction`, `expiresAt` утгуудыг авна.
POST /sessions
curl -X POST "https://api.verify.mn/sessions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer vrf_xxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"phone": "90144773",
"text": "482916",
"callback": "https://acme.com/verify/order-7421"
}'SESSION үүссэний дараах хариу
{
"sessionId": "4d4c95ff-0fd4-4d9e-900d-6d18fb8ce6a7",
"phone": "90144773",
"shortcode": "144773",
"text": "482916",
"smsUri": "sms:144773?body=482916",
"displayInstruction": "144773 дугаарт \"482916\" гэж SMS илгээнэ үү",
"expiresAt": "2026-04-14T12:30:00.000Z"
}/sessions/:sessionId
SESSION төлөв шалгах
Албан ёсны үнэн төлөв энд байна. CALLBACK ирсэн ч бизнес логикоосоо өмнө энэ endpoint-оор VERIFIED эсэхийг давхар шалгана.
GET /sessions/:sessionId
curl "https://api.verify.mn/sessions/4d4c95ff-0fd4-4d9e-900d-6d18fb8ce6a7"
Албан ёсны SESSION төлөв
{
"sessionId": "4d4c95ff-0fd4-4d9e-900d-6d18fb8ce6a7",
"phone": "90144773",
"sessionStatus": "VERIFIED",
"callbackStatus": "SENT",
"verifiedAt": "2026-04-14T12:28:15.000Z",
"expiresAt": "2026-04-14T12:30:00.000Z"
}callback
CALLBACK мэдэгдэл
Verify.MN баталгаажсан даруйд танай CALLBACK руу GET мэдэгдэл илгээнэ. Body байхгүй, зөвхөн notification.
Verify.MN-ээс ирэх GET мэдэгдэл
GET https://acme.com/verify/order-7421 # Body байхгүй. Зөвхөн мэдэгдэл. # Статусыг GET /sessions/:sessionId-р шалгана.
Front UI-д хэрхэн мэдэгдэх вэ? Хэрэв таны backend, frontend хоёр WebSocket/SSE-ээр холбогддог бол CALLBACK ирсний дараа тухайн мэдэгдлийг frontend рүү шууд дамжуулан баталгаажуулалт дууссаныг хэрэглэгчид агшин зуурт харуулж болно. Хэрэв socket холболт байхгүй бол frontend-ээс 3 секунд тутам GET /sessions/:sessionId дуудаж sessionStatus: VERIFIED болсон эсэхийг polling хийх боломжтой.
SESSION-гүй inbound SMS automation
Хэрэглэгч өөрөө эхлээд 144773 руу SMS илгээж, таны callback руу шууд мэдэгдэл очих flow. Activation, account linking, subscribe зэрэг шаардлагад тохиромжтой.
Ажиллах зарчим
1. Developer Console-ээс RULE үүсгэнэ (нэр + shortcode + callback URL). Сервер 3 үсэгтэй PREFIX (жишээ нь XJK) санамсаргүй үүсгэж буцаана.
2. Хэрэглэгчид 144773 дугаарт <PREFIX>:<ТЕКСТ> форматаар SMS илгээхийг заана. Жишээ: XJK:JOIN 42.
3. SMS ирэнгүүт таны callback URL руу query params-тай GET хүсэлт явна.
RULE callback-д ирэх GET хүсэлт
GET https://acme.com/sms/handle ?requestId=4d4c95ff-0fd4-4d9e-900d-6d18fb8ce6a7 &phone=90144773 &text=XJK%3AJOIN%2042 &ruleId=rule_8a1c... &shortcode=144773 &receivedAt=2026-04-15T10:30:00%2B08:00
UI-д товчлуур болгон байрлуулах sms: схем
sms:144773?body=XJK%3AJOIN%2042
Яагаад SMS URI-г зөвлөх вэ? 3 үсэгтэй PREFIX, : тэмдэгт, тодорхой текст бүхий мессежийг хэрэглэгчээр гараар бичүүлэх нь алдаа гарахад хүргэдэг. UI-д дээрх sms: схемтэй SMS URI товчлуур байрлуулахад л хангалттай — дарангуут SMS апп текст бөглөгдсөн хэлбэрээр нээгдэж, хэрэглэгч зөвхөн “Илгээх” товч дарна.
sms:144773?body=4321
Хэрэглэгч нэг товч дараад бэлэн мессеж илгээнэ. Дугаар цээжлэх, текст гараар бичих шаардлагагүй — алдаа гарахгүй.
Нэг prompt-оор хялбар холбуулах
Доорх prompt-ийг Cursor, Claude Code, Copilot гэх мэт AI code agent-даа өгвөл таны код дотор verify.mn холболтыг 2-3 минутад бичнэ. Хуулж аваад agent-даа paste хийнэ үү.
verify.mn integration
You are integrating verify.mn — a Mongolia-only Mobile-Originated (MO) SMS phone
verification API — into this codebase. Add a function `verifyPhone(phone: string): Promise<boolean>`
(adapt to the codebase's language and style) that returns true only after the user's phone is confirmed.
## How verification works
1. Backend calls POST https://api.verify.mn/sessions with phone + SMS text + callback URL.
2. API returns sessionId, smsUri (sms:144773?body=...), displayInstruction (Mongolian text to
show the user), and expiresAt (300s TTL).
3. Show displayInstruction to the user. On mobile, offer smsUri as a tap-to-open link.
4. User sends the SMS from their phone to shortcode 144773.
5. On receipt, verify.mn fires a GET request to the callback URL (no body, no signature).
Treat this as a "check now" notification — do NOT trust it on its own.
6. On receiving the callback (or while polling every ~3s), call
GET https://api.verify.mn/sessions/{sessionId} and confirm sessionStatus === "VERIFIED".
7. If expiresAt passes without VERIFIED, treat as failure.
## Endpoints
### POST /sessions (auth required)
Headers: Authorization: Bearer <VERIFY_MN_API_KEY> (read from env, never hardcode)
Content-Type: application/json
Body: { "phone": "<8-16 digits>", "text": "<1-120 chars>", "callback": "<https URL>" }
Response: { sessionId, phone, shortcode: "144773", text, smsUri, displayInstruction, expiresAt }
Errors: 400 validation, 401 bad key, 500 server
### GET /sessions/{sessionId} (no auth)
Response: { sessionId, phone, sessionStatus: PENDING|VERIFIED|EXPIRED,
callbackStatus: PENDING|SENT|FAILED, verifiedAt, expiresAt }
Errors: 404 not found, 429 too many requests (same sessionId polled faster than
every 2s), 500 server
### Callback (verify.mn -> developer)
Method: GET, no body, no HMAC. Retries up to 5x on non-200. Must return 200 fast.
Purpose: wake-up signal. Always re-check via GET /sessions/{sessionId}.
## Requirements
- Read VERIFY_MN_API_KEY from env. Fail loudly if missing.
- Generate a random 4-6 digit numeric code as SMS text (e.g. "482916") per session — do not reuse.
- Store sessionId linked to the user/order record being verified.
- On callback receipt, look up the session, call GET /sessions/{sessionId}, mark verified.
- If no callback is available, poll GET /sessions/{sessionId} until VERIFIED or expiresAt,
with a hard timeout. **Minimum polling interval is 3 seconds** — faster than 2s gets 429.
Do not implement aggressive retry loops on 429; back off to >= 3s.
- Use the project's existing HTTP client and logging. Do not add new dependencies unless required.
- Never log the API key.
## Pricing (context only, no code needed)
Per verified phone: user pays 150₮ to operator; developer earns 40₮ (credited to the verify.mn
dashboard). No setup fee, no monthly fee.
## Done when
- verifyPhone(phone) returns true for a phone that sent the correct SMS, false otherwise.
- VERIFY_MN_API_KEY is documented in the project's env example file.
- Callback route (if used) returns 200 quickly and triggers status check.
- Test covers: PENDING -> VERIFIED, EXPIRED timeout, 401 on bad key.
1 SMS = 150₮. Орлого хуваарилалт нь тодорхой.
Манай байгууллага нь үүрэн оператор компаниудтай 144773 тусгай дугаарын гэрээгээр хамтран ажилладаг.
99 · 95 · 94 · 85
98 · 97 · 93 · 87 · 83
60 · 66
72
55
505Оператор (45%) + НӨАТ (10%) + ААНОАТ (10%)
≈98₮
Үүрэн оператор компаниуд болон татварын хэсэгт үлдэнэ.
Verify.MN
≈12₮
Платформ, infrastructure төлбөр.
DEV орлого
= 40₮
Холболт хийсэн танд шууд орлого болон хуваарилагдана.
Түгээмэл асуултууд
Verify.MN SMS Event Gateway-ийг ашиглахтай холбоотой түгээмэл асуултын хариулт.
Mobicom, Skytel, Unitel, G-Mobile, ONDO, Lime, Toki, Kaos — Монголын бүх үүрэн оператор дэмжигдэнэ. Ямар ч дугаараас 144773 руу илгээсэн SMS танд хүрнэ.
Setup fee байхгүй. Monthly fee байхгүй. SMS event бүрт 40₮ developer-ийн дансанд орлого шууд хуримтлагдана — SMS-ийн үндсэн төлбөрийг хэрэглэгч өөрөө төлнө.
Sign up → API KEY авах → API-г шууд production-д ашиглах. Гэрээ, уулзалт, хүлээлт шаардлагагүй.
Operator webhook-оос таны backend callback хүртэл 1 секундээс бага — бодит цагийн event-driven pipeline.
IP allowlist, JWT HS256 гарын үсэг, TLS шифрлэлт — callback-ийг нэмэлт secret-оор верификац хийх боломжтой.
Нэг удаагийн баталгаажуулалт, OTP эсвэл login verification бол SESSION. Ирсэн SMS бүрээр persistent action trigger хийх (ж: remote control, payment command, automation) бол RULE.
Verify.MN дээр интеграцаа эхлүүл
Developer Console-д нэвтрэн API KEY үүсгэх, SESSION хянах, банкны данс тохируулан PAYOUT мэдээллээ харах боломжтой.