Verify.MN icon
Verify.MN
SMS → Backend Event API
Try itWhyHow worksAPIPricingFAQ
Нэвтрэх
Холболт + Баталгаажуулалт = Тогтмол орлого

SMS → Backend Event API

Receive SMS as webhooks. Trigger anything. Монголын бүх үүрэн оператортой холбогдсон нэг API. 144773 руу ирсэн SMS-г real-time event болгож таны backend руу шууд илгээнэ.

ЭхлэхЯагаад Verify.MN?
Давуу тал
1

Sign up → API KEY → Ship

Гэрээ, уулзалт, хүлээлт шаардлагагүй. Бүртгүүлж шууд production-д ашигла.

2

0₮ зардал

SMS төлбөрийг хэрэглэгч өөрөө төлнө. Барьцаа төлбөр, суурь хураамж, setup fee, monthly fee ямар ч зардал гарахгүй.

3

Easy Setup

SESSION үүсгэ, CALLBACK хүлээ, төлөв шалга. SDK шаардлагагүй, REST API л хангалттай.

4

SMS бүр = 40₮ орлого

Хэрэглэгч баталгаажуулалт хийх бүрд таны данс руу 40₮ орлого шууд хуримтлагдана.

5

Session-гүй RULE callback

144773 дугаарт ирсэн PREFIX-тэй SMS-ийг танд нэг API-аар redirect хийнэ. Service activation, account linking зэрэгт.

Try it

Туршиж үзэх - Production Flow

Session үүсгээд 144773 дугаар руу SMS илгээж бодитоор туршиж үзээрэй.

Туршиж үзэх таны дугаар

Мессеж илгээх боломжтой латин үсэг, тоо, тэмдэгт

Яагаад Verify.MN?

SMS үйлчилгээ интеграц хийх нүсэр процессоос нэг API хүртэл

Оператор тус бүртэй гэрээ хийх, барьцаа төлөх, сар бүрийн хураамж төлөх шаардлагагүй. Бүртгүүлэн API KEY авч production-д шууд ашигла.

Монголд SMS үйлчилгээ ашиглахад

Үүрэн оператор тус бүртэй гэрээ

Дугаарын төлбөр + барьцаа төлбөр

Суурь хураамж + хэрэглээний төлбөр

Техникийн холболт өөрөө хийх

Найдвартай ажиллагаа өөрөө хариуцах

Verify.MN SMS Event Gateway

Монголын бүх үүрэн оператор нэг API дээр нэгдсэн

0₮ setup, 0₮ monthly — гэрээ шаардлагагүй

SMS event бүрт 40₮ орлого

Sign up → API KEY → Ship

< 1s callback latency

MT vs MO

Илгээх биш, хүлээн авах — 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

Mobile Operators → Verify.MN → Your App

Баталгаажуулалтын урсгал

Хэрэглэгч 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

SESSION vs RULE

Хоёр integration загвар — нэг API

Нэг удаагийн баталгаажуулалт хэрэгтэй бол SESSION, ирсэн SMS бүрээр action trigger хийх бол RULE.

SESSION

Түр хугацаанд SMS хүлээж match хийх

Нэг удаагийн баталгаажуулалт. 5 минутын TTL.

Жишээ: код `1234`, хугацаа `5 мин`

OTP / нэг удаагийн код

Login, signup verification

Худалдан авалт баталгаажуулах

Endpoint

POST /sessions

RULE

Ирсэн SMS → Шууд action trigger

Persistent prefix. SMS бүрт callback илгээнэ.

Жишээ: `OPEN:123` → 123 дугаар хаалга нээх

Remote control — хаалга, төхөөрөмж удирдах

Micro-payment trigger

SMS command automation

Endpoint

Developer callback URL

API

Интеграцийн endpoint-ууд

SESSION үүсгэх, CALLBACK мэдэгдэл хүлээж авах, албан ёсны төлөв шалгах үндсэн endpoint-уудыг шууд ашиглахад бэлэн жишээтэй нь үзүүлэв.

POST

/sessions

SESSION үүсгэх

Backend талаас API түлхүүрээр баталгаажуулсан хүсэлт илгээж, утас болон илгээх текстийг зааж шинэ SESSION үүсгэнэ. Хариу болон `sessionId`, `smsUri`, `displayInstruction`, `expiresAt` утгуудыг авна.

REQUEST

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"
  }'
RESPONSE

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"
}
GET

/sessions/:sessionId

SESSION төлөв шалгах

Албан ёсны үнэн төлөв энд байна. CALLBACK ирсэн ч бизнес логикоосоо өмнө энэ endpoint-оор VERIFIED эсэхийг давхар шалгана.

REQUEST

GET /sessions/:sessionId

curl "https://api.verify.mn/sessions/4d4c95ff-0fd4-4d9e-900d-6d18fb8ce6a7"
RESPONSE

Албан ёсны 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"
}
GET

callback

CALLBACK мэдэгдэл

Verify.MN баталгаажсан даруйд танай CALLBACK руу GET мэдэгдэл илгээнэ. Body байхгүй, зөвхөн notification.

CALLBACK SAMPLE

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 хийх боломжтой.

RULE

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 хүсэлт явна.

CALLBACK SAMPLE

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
SMS URI

UI-д товчлуур болгон байрлуулах sms: схем

sms:144773?body=XJK%3AJOIN%2042

Яагаад SMS URI-г зөвлөх вэ? 3 үсэгтэй PREFIX, : тэмдэгт, тодорхой текст бүхий мессежийг хэрэглэгчээр гараар бичүүлэх нь алдаа гарахад хүргэдэг. UI-д дээрх sms: схемтэй SMS URI товчлуур байрлуулахад л хангалттай — дарангуут SMS апп текст бөглөгдсөн хэлбэрээр нээгдэж, хэрэглэгч зөвхөн “Илгээх” товч дарна.

One-tap SMS URI

sms:144773?body=4321

Хэрэглэгч нэг товч дараад бэлэн мессеж илгээнэ. Дугаар цээжлэх, текст гараар бичих шаардлагагүй — алдаа гарахгүй.

AI code agent

Нэг prompt-оор хялбар холбуулах

Доорх prompt-ийг Cursor, Claude Code, Copilot гэх мэт AI code agent-даа өгвөл таны код дотор verify.mn холболтыг 2-3 минутад бичнэ. Хуулж аваад agent-даа paste хийнэ үү.

PROMPT

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 тусгай дугаарын гэрээгээр хамтран ажилладаг.

Mobicom99 · 95 · 94 · 85
Skytel96 · 92 · 91 · 90 · 69
Unitel89 · 88 · 86 · 80
Gmobile98 · 97 · 93 · 87 · 83
ONDO60 · 66
Lime72
Toki55
Kaos505

Оператор (45%) + НӨАТ (10%) + ААНОАТ (10%)

≈98₮

Үүрэн оператор компаниуд болон татварын хэсэгт үлдэнэ.

Verify.MN

≈12₮

Платформ, infrastructure төлбөр.

DEV орлого

= 40₮

Холболт хийсэн танд шууд орлого болон хуваарилагдана.

FAQ

Түгээмэл асуултууд

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 мэдээллээ харах боломжтой.

НэвтрэхБүртгүүлэх