Skip to content

SMS coverage

Axowl sends phone verification codes by SMS to 76 countries. The same list applies to every place a code goes out by SMS:

  • organization phone OTP — POST /api/org/otp/send and the public contact OTP;
  • end-user MFA for your app’s users — POST /apps/{key}/auth/mfa/enroll/send, the code sent with a login that returns mode: "challenge", and POST /apps/{key}/auth/mfa/challenge/resend.

A number in a country outside the list is not sent to and costs nothing. The request fails with region_not_supported, so you can show the user another way in (passkey, email, or a sealed device) instead of a code screen that never fills.

Korean numbers on an app group with a linked KakaoTalk channel get the code as AlimTalk first; see KakaoTalk AlimTalk. The country list below decides the SMS path.

Codes are delivered as text messages only, including to U.S. and Canadian numbers. There is no voice-call delivery. Texts other than codes (approval confirmation links) go only to numbers whose owner opted in to SMS, and texts to +1 numbers end with “Reply STOP to opt out.” On end-user MFA, channel (and smsChannel on a login) is "sms" or "alimtalk".

Countries are in three groups. The group sets how many codes one phone number can receive in 24 hours. Only codes that were actually delivered count toward the limit — a failed send does not use up an attempt.

GroupCodes per number per 24 hCountries
StandardNo daily cap (normal resend throttling only)44
Limited218
Restricted114

Limited and Restricted countries are the ones where SMS toll fraud (artificially inflated traffic) is common. They also share a platform-wide daily safety limit; ordinary sign-up traffic does not reach it.

RegionCountries
North AmericaUnited States (including Puerto Rico and the U.S. Virgin Islands), Canada, Guam
Asia-PacificSouth Korea, Japan, Taiwan, Hong Kong, Singapore, Australia, New Zealand
Western EuropeUnited Kingdom, Ireland, France, Germany, Netherlands, Belgium, Luxembourg, Switzerland, Austria, Liechtenstein
Southern EuropeSpain, Portugal, Italy, Greece, Malta, Cyprus, Gibraltar
NordicsDenmark, Sweden, Norway, Finland, Iceland
Central and Eastern EuropePoland, Czech Republic, Slovakia, Slovenia, Croatia, Hungary, Romania, Bulgaria, Estonia, Latvia, Lithuania
Middle EastIsrael

Limited — 18 countries (2 codes per number per day)

Section titled “Limited — 18 countries (2 codes per number per day)”
RegionCountries
Latin AmericaMexico, Brazil, Argentina, Chile, Peru
AsiaIndia, Indonesia, Malaysia, Thailand, Philippines, Vietnam
Middle EastUnited Arab Emirates, Saudi Arabia, Qatar, Kuwait, Turkey
AfricaSouth Africa, Kenya

Restricted — 14 countries (1 code per number per day)

Section titled “Restricted — 14 countries (1 code per number per day)”
RegionCountries
South AsiaPakistan, Bangladesh, Nepal, Sri Lanka
Southeast AsiaMyanmar
Central Asia and CaucasusUzbekistan, Kyrgyzstan, Kazakhstan, Azerbaijan
EuropeRussia
OceaniaFiji
AfricaNigeria, Ghana, Tanzania

+1 numbers outside the United States and Canada

Section titled “+1 numbers outside the United States and Canada”

+1 is shared by several countries. Caribbean and Atlantic area codes — for example Jamaica (+1 876), the Dominican Republic (+1 809 / 829 / 849), the Bahamas (+1 242) and Bermuda (+1 441) — are not in the list and fail with region_not_supported. Puerto Rico, the U.S. Virgin Islands and Guam are covered.

WhereResponseMeaning
Organization OTPregion_not_supportedThe country is not in the list. Nothing was sent.
Organization OTPregion_daily_limitThis number has had its daily codes for a Limited or Restricted country. Try again after 24 hours.
Organization OTPregion_fuseThe shared daily safety limit for Limited and Restricted countries is reached. Try again later.
End-user MFA502 { error: "region_not_supported" }Any of the three cases above. On a login, smsDelivered is false and smsError is "region_not_supported".

Phone numbers must be in E.164 form (+ and country code). A number without a leading + is treated as outside the list.