Limits

The limits on sessions, phone numbers, requests and webhooks, and what happens when you reach them.

Limits protect end users from being pushed into repeat sends and keep the system stable. The values are settings that can change over time, so don't hard-code them.

LimitHow it worksWhen reached
Session lifetimeUsually 5 minutes; read expires_atA session.expired webhook arrives
Sessions per clientSessions you can create per minute429 rate_limited
Sessions per phoneSessions per number per hour (when you pass phone)429 rate_limited
Wrong-code sendersA number that sends 5 wrong SMS within an hour is throttled for a while. Re-sending the code of an already verified session does not countIts messages are not matched
Live rulesUp to 5 per client (2fa.mn can raise it per client)409 rule_limit
Test SMSUp to 30 POST /v1/test/mo per minute per client429 rate_limited
metadataA JSON object up to 4 KB400 invalid_request
Request bodyUp to 64 KB400 invalid_request
Test SMS text1 to 640 characters400 invalid_request
Webhook response2xx within 10 secondsLive webhooks are retried, at most 5 times. Test webhooks are not retried
Delivery logGET /v1/webhook/deliveries returns the latest 100

When you get 429

  • Retry with exponential backoff.
  • Don't create a new session on every click; reuse a session that is still valid.
  • Show the user a clear message such as "Please wait a moment and try again."

What's next

Was this page helpful?

On this page