Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
en-uses-esLanguages that are available to use. See the full list of supported languages in the Verify Languages Guide. It has no effect if the channel is silent_auth.
15900180180Specifies the wait time in seconds between attempts to deliver the verification code. On the Verify Success pricing model, the minimum channel_timeout is fixed at 60 seconds and cannot be changed; and if you are using Silent Authentication, the channel_timeout is always fixed at 60 seconds, irrespective of the pricing model.
140myPersonalRefIf the client_ref is set when the request is sent, it will be included in the callbacks
44Length of the code to send to the user. It applies to all channels defined in the workflow.
45678910410e4dR1QzAn optional alphanumeric custom code to use if you don't want Vonage to generate the code. Only the Verify Conversion pricing model allows using this parameter, and it has no effect if the channel is silent_auth.
118ACMEThe brand that is sending the verification request. Please note that for security reasons, the following regex is used to escape this value: ^[^\/{}:$]*$. A value that fails this check will result in a 422.
4ed3027d-8762-44a0-aa3f-c393717413a4A custom template ID to use. This parameter works only when channel is sms or rcs.
Defines the sequence of actions (max 3) that Vonage uses to reach the end-user you want to verify with a PIN code. See documentation
silent_authThe channel
silent_auth150447700900000The phone number to use for authentication, in the E.164 format. Don't use a leading + or 00 when entering a phone number, start with the country code, for example, 447700900000.
https://acme-app.com/sa/redirectOptional final redirect added at the end of the check_url request/response lifecycle. See the documentation for integrations. Will contain the request_id and code as a url fragment after the URL.
trueOptional parameter if you are using the Vonage Sandbox to test Silent Auth integrations.
trueControls network coverage lookup. If true, a synchronous error is returned when the network is unsupported. If false a check_url is always returned and errors are reported via callbacks.
Example Request
{
"locale": "es-es",
"channel_timeout": 180,
"client_ref": "myPersonalRef",
"code_length": 4,
"code": "e4dR1Qz",
"brand": "ACME",
"template_id": "4ed3027d-8762-44a0-aa3f-c393717413a4",
"workflow": [
{
"channel": "silent_auth",
"to": "44770090000",
"redirect_url": "https://acme-app.com/sa/redirect"
},
{
"channel": "sms",
"to": "44770090000"
},
{
"channel": "voice",
"to": "44770090000"
}
]
}{
"locale": "es-es",
"channel_timeout": 180,
"client_ref": "myPersonalRef",
"code_length": 4,
"code": "e4dR1Qz",
"brand": "ACME",
"template_id": "4ed3027d-8762-44a0-aa3f-c393717413a4",
"workflow": [
{
"channel": "silent_auth",
"to": "44770090000",
"redirect_url": "https://acme-app.com/sa/redirect"
},
{
"channel": "sms",
"to": "44770090000"
},
{
"channel": "voice",
"to": "44770090000"
}
]
}c11236f4-00bf-4b89-84ba-88b25df97315The ID of the request
https://api.nexmo.com/v2/verify/c11236f4-00bf-4b89-84ba-88b25df97315/silent-auth/redirectThe URL to complete the Silent Authentication verification process. It is returned only when Silent Auth is the initial verification channel in the workflow and the network supports it, unless coverage_check is set to false. See the documentation for supported network availability.
Example Response
{
"request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
"check_url": "https://api.nexmo.com/v2/verify/c11236f4-00bf-4b89-84ba-88b25df97315/silent-auth/redirect"
}Check a supplied code against a request to see if it is valid
Allows a code to be checked against an existing Verification request.
If you are checking a code against a Silent Authentication workflow, you will only have one attempt to submit the code, as this should be handled by a Client SDK.
Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
4101234The code provided by the user. The PIN code can be retried a maximum of three times.
Example Request
{
"code": "1234"
}{
"code": "1234"
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
Attempt Silent Authentication completion
This is a URL that is returned from a new Silent Authentication request as check_url (or can also be obtained from the Silent Authentication webhook event, if your integration is asynchronous.) Performing a GET request on the URL provided will return a series of 30x redirects to follow. Following these 30xs will result in either success containing a code to submit or an error.
This URL (i.e. the `check_url`) must be hit by a device using cellular data in order for Silent Authentication to work correctly.
https:\\example.com\silent-auth\your-callback-route#error_description=The silent auth verification cannot be completed. The possible error messages are as follows:
- The silent auth verification cannot be completed.
- Device MSISDN does not match.
- Device number does not resolve to a supported Mobile Network Operator.
- IP Address does not resolve to a cellular device.
List all templates
Writing Custom Templates is only possible if your account has been enabled to do so. You can, however, view your templates. Please contact Support to enable this.
Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
1How many items in page
2The current page number
10Count of pages
25Total amount of all templates
List of templates
8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9my-templatetrueTarget URL
Target URL
Target URL
Target URL
Target URL
Target URL
Target URL
Example Response
{
"page_size": 1,
"page": 2,
"total_pages": 10,
"total_items": 25,
"_embedded": {
"templates": [
{
"template_id": "8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9",
"name": "my-template",
"is_default": true,
"_links": {
"self": {
"href": "http://example.com"
},
"fragments": {
"href": "http://example.com"
}
}
}
]
},
"_links": {
"self": {
"href": "https://api.nexmo.com/v2/verify/templates?page=2"
},
"next": {
"href": "https://api.nexmo.com/v2/verify/templates?page=3"
},
"prev": {
"href": "https://api.nexmo.com/v2/verify/templates?page=1"
},
"last": {
"href": "https://api.nexmo.com/v2/verify/templates?page=5"
}
}
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
164my-templateReference name for template.
Example Request
{
"name": "my-template"
}{
"name": "my-template"
}8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9my-templatetrueTarget URL
Target URL
Example Response
{
"template_id": "8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9",
"name": "my-template",
"is_default": true,
"_links": {
"self": {
"href": "https://api.nexmo.com/v2/verify/templates/8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9"
},
"fragments": {
"href": "https://api.nexmo.com/v2/verify/templates/8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9/template_fragments"
}
}
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9my-templatetrueTarget URL
Target URL
Example Response
{
"template_id": "8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9",
"name": "my-template",
"is_default": true,
"_links": {
"self": {
"href": "https://api.nexmo.com/v2/verify/templates/8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9"
},
"fragments": {
"href": "https://api.nexmo.com/v2/verify/templates/8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9/template_fragments"
}
}
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
my-templateReference name for template.
trueWhether the template is the default template if a new request does not specify a template to use.
Example Request
{
"name": "my-template",
"is_default": true
}{
"name": "my-template",
"is_default": true
}8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9my-templatetrueTarget URL
Target URL
Example Response
{
"template_id": "8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9",
"name": "my-template",
"is_default": true,
"_links": {
"self": {
"href": "https://api.nexmo.com/v2/verify/templates/8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9"
},
"fragments": {
"href": "https://api.nexmo.com/v2/verify/templates/8f35a1a7-eb2f-4552-8fdf-fffdaee41bc9/template_fragments"
}
}
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
1How many items in page
2The current page number
10Count of pages
25Total amount of all template fragments
List of Fragment Templates
c70f446e-997a-4313-a081-60a02a31dc19ID for this template fragment
smssmsvoiceen-usA Locale in IETF BCP 47 format
Text content of the template. May contain 4 reserved variables: `${code}`, `${brand}`, `${time-limit}` and `${time-limit-unit}`Text content of the template
2023-08-30T15:20:15.17865735Z2021-08-30T20:12:15.17865735ZTarget URL
Target URL
Target URL
Target URL
Target URL
Target URL
Target URL
Example Response
{
"page_size": 1,
"page": 2,
"total_pages": 10,
"total_items": 25,
"_embedded": {
"template_fragments": [
{
"template_fragment_id": "c70f446e-997a-4313-a081-60a02a31dc19",
"channel": "sms",
"locale": "en-us",
"text": "Text content of the template. May contain 4 reserved variables: `${code}`, `${brand}`, `${time-limit}` and `${time-limit-unit}`",
"date_updated": "2023-08-30T15:20:15.17865735Z",
"date_created": "2021-08-30T20:12:15.17865735Z",
"_links": {
"self": {
"href": "http://example.com"
},
"template": {
"href": "http://example.com"
}
}
}
]
},
"_links": {
"self": {
"href": "https://api.nexmo.com/v2/verify/templates?page=2"
},
"next": {
"href": "https://api.nexmo.com/v2/verify/templates?page=3"
},
"prev": {
"href": "https://api.nexmo.com/v2/verify/templates?page=1"
},
"last": {
"href": "https://api.nexmo.com/v2/verify/templates?page=5"
}
}
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
smsThe channel name
smsvoiceen-usThe locale code, in lowercase
The authentication code for your ${brand} is: ${code}The template text. There are 4 reserved variables available to use: ${code}, ${brand}, ${time-limit} and ${time-limit-unit}
Example Request
{
"channel": "sms",
"locale": "en-us",
"text": "The authentication code for your ${brand} is: ${code}"
}{
"channel": "sms",
"locale": "en-us",
"text": "The authentication code for your ${brand} is: ${code}"
}c70f446e-997a-4313-a081-60a02a31dc19ID for this template fragment
smssmsvoiceen-usA Locale in IETF BCP 47 format
Text content of the template. May contain 4 reserved variables: `${code}`, `${brand}`, `${time-limit}` and `${time-limit-unit}`Text content of the template
2023-08-30T15:20:15.17865735Z2021-08-30T20:12:15.17865735ZTarget URL
Target URL
Example Response
{
"template_fragment_id": "c70f446e-997a-4313-a081-60a02a31dc19",
"channel": "sms",
"locale": "en-us",
"text": "Text content of the template. May contain 4 reserved variables: `${code}`, `${brand}`, `${time-limit}` and `${time-limit-unit}`",
"date_updated": "2023-08-30T15:20:15.17865735Z",
"date_created": "2021-08-30T20:12:15.17865735Z",
"_links": {
"self": {
"href": "http://example.com"
},
"template": {
"href": "http://example.com"
}
}
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
c70f446e-997a-4313-a081-60a02a31dc19ID for this template fragment
smssmsvoiceen-usA Locale in IETF BCP 47 format
Text content of the template. May contain 4 reserved variables: `${code}`, `${brand}`, `${time-limit}` and `${time-limit-unit}`Text content of the template
2023-08-30T15:20:15.17865735Z2021-08-30T20:12:15.17865735ZTarget URL
Target URL
Example Response
{
"template_fragment_id": "c70f446e-997a-4313-a081-60a02a31dc19",
"channel": "sms",
"locale": "en-us",
"text": "Text content of the template. May contain 4 reserved variables: `${code}`, `${brand}`, `${time-limit}` and `${time-limit-unit}`",
"date_updated": "2023-08-30T15:20:15.17865735Z",
"date_created": "2021-08-30T20:12:15.17865735Z",
"_links": {
"self": {
"href": "http://example.com"
},
"template": {
"href": "http://example.com"
}
}
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
The authentication code for your ${brand} is: ${code}The template text. There are 4 reserved variables available to use: ${code}, ${brand}, ${time-limit} and ${time-limit-unit}
Example Request
{
"text": "The authentication code for your ${brand} is: ${code}"
}{
"text": "The authentication code for your ${brand} is: ${code}"
}c70f446e-997a-4313-a081-60a02a31dc19ID for this template fragment
smssmsvoiceen-usA Locale in IETF BCP 47 format
Text content of the template. May contain 4 reserved variables: `${code}`, `${brand}`, `${time-limit}` and `${time-limit-unit}`Text content of the template
2023-08-30T15:20:15.17865735Z2021-08-30T20:12:15.17865735ZTarget URL
Target URL
Example Response
{
"template_fragment_id": "c70f446e-997a-4313-a081-60a02a31dc19",
"channel": "sms",
"locale": "en-us",
"text": "Text content of the template. May contain 4 reserved variables: `${code}`, `${brand}`, `${time-limit}` and `${time-limit-unit}`",
"date_updated": "2023-08-30T15:20:15.17865735Z",
"date_created": "2021-08-30T20:12:15.17865735Z",
"_links": {
"self": {
"href": "http://example.com"
},
"template": {
"href": "http://example.com"
}
}
}Authentication
This API supports both JWT and Basic authentication. Basic authentication is easier to get started with, but does not support advanced features such as ACLs.
You can use either JWT or Basic authentication, but not both at the same time.
| Key | Description | Where | Example |
|---|---|---|---|
| Authorization | Your JSON web token. | Headers | Bearer <JWT> |
| Authorization | Base64 encoded API key and secret joined by a colon. | Headers | Basic <base64> |
| HTTP auth can be used for synchronous calls, for asynchronous calls and call backs use JWT authentication |
Webhooks
Webhooks are an extension of an API, but instead of your code requesting data, the API sends data to you. The data arrives in a web request to your application.
To learn more about webhooks, see our webhooks documentation.
This API may send any of the webhooks documented below to the URL that you have configured. You must respond with a 200 or 204 HTTP response, or the requests will be retried.
Available Operations
c11236f4-00bf-4b89-84ba-88b25df97315The ID of the request
2020-01-01T14:00:00.000ZThe date and time the verification request was triggered, in ISO 8601 format.
eventType of response
smsThe channel
completedCurrent status of this request
completedfaileduser_rejectedrejected2020-01-01T14:00:00.000ZThe date and time the verification request was completed. This response parameter is in ISO 8601 format.
my-personal-refContains the client reference given in the original Verify request.
Example Payload
{
"request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
"triggered_at": "2020-01-01T14:00:00.000Z",
"type": "event",
"channel": "sms",
"status": "completed",
"finalized_at": "2020-01-01T14:00:00.000Z",
"client_ref": "my-personal-ref"
}c11236f4-00bf-4b89-84ba-88b25df97315The ID of the request
2020-01-01T14:00:00.000ZThe date and time the verification request was submitted, in ISO 8601 format.
completedCurrent status of this request
completedfailedexpiredsummaryType of response
300The number of seconds before the current step in the verification request times out.
The channel
smswhatsappvoicesilent_authThe date and time the current step in the verification request was initiated, in ISO 8601 format.
completedCurrent status of this request
unusedcompletedfailedexpireduser_rejectedmy-personal-refContains the client reference given in the original Verify request.
Example Payload
{
"request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
"submitted_at": "2020-01-01T14:00:00.000Z",
"status": "completed",
"type": "summary",
"channel_timeout": 300,
"workflow": [
{
"channel": "silent_auth",
"initiated_at": "2020-01-01T14:00:00.000Z",
"status": "expired"
},
{
"channel": "sms",
"initiated_at": "2020-01-01T14:02:00.000Z",
"status": "completed"
},
{
"channel": "voice",
"initiated_at": "2020-01-01T15:05:00.000Z",
"status": "unused"
}
],
"client_ref": "my-personal-ref"
}c11236f4-00bf-4b89-84ba-88b25df97315The ID of the request
2020-01-01T14:00:00.000ZThe date and time the verification request was triggered, in ISO 8601 format.
eventType of response
silent_authaction_pendingCurrent status of this request
completedfaileduser_rejectedexpiredaction_pendingDescription of workflow event
checkhttps://api.nexmo.com/v2/verify/{request_id}/silent-auth/redirectURL for Silent Auth Verify workflow completion
Example Payload
{
"request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
"triggered_at": "2020-01-01T14:00:00.000Z",
"type": "event",
"channel": "silent_auth",
"status": "action_pending",
"action": [
{
"type": "check",
"check_url": "https://api.nexmo.com/v2/verify/{request_id}/silent-auth/redirect"
}
]
}Errors
The following is a non-exhaustive list of error codes that may occur while using this API.
These codes are in addition to any of our generic error codes.
| Code | Information |
|---|---|
| fragment-exists | Description A template fragment for this channel and locale already exists Resolution Change either the locale or channel to a combination not being used |
| template-fragment-not-found | Description Template Fragment not found Resolution Check the ID of the template fragment you are trying to access |
| template-not-found | Description Template not found Resolution Check the ID of the template you are trying to access |
| template-exists | Description A template with this name already exists Resolution Choose a different template name in the request |
| not-empty-template | Description The template is not empty and cannot be deleted. Please delete its fragments first Resolution Delete the individual template fragments, then try again |
| forbidden | Description Templates management is not enabled for your account Resolution Contact Vonage support to enable custom template management |
| expired | Description An incorrect code has been provided too many times. Workflow terminated. Resolution Request a new Verification |
| no-code | Description The current Verify workflow step does not support a code. Resolution Change to a valid workflow to handle your request |
| max-templates | Description An account can only have a maximum of 10 custom templates Resolution Delete a template before retrying |
| concurrent | Description Concurrent verifications to the same number are not allowed. Resolution In flight verification needs to expire, fail or be completed |
| invalid-code | Description The code you provided does not match the expected value. Resolution Retry with the correct value or fail the request |
| no-events | Description The code you provided does not match the expected value. Resolution Retry with the correct value or fail the request |
| request-not-found | Description The request ID provided could not be found. Resolution Retry with a valid request ID |
| msisdn-error | Description The device MSISDN does not match. Resolution Silent Auth will not work with this device, try a different one. |
| precondition-failed | Description Conditions for the Silent Auth request to complete have not been met. Resolution Silent Auth will not work with this device, try a different one. |
| network-error | Description The Silent Auth request could not be completed due to formatting or the carrier is not supported. Resolution Check https://developer.vonage.com/en/verify/guides/silent-auth-territories?source=verify to see if the carrier(s) used are supported. |