Rate this page:

Verify Silent Network Auth Testing Guide

Test SNA Today

Get Started

Skip the 2-4 week wait for carrier approvals and get directly to testing SNA with your own mobile number using the new Live Test Number feature.

Verify Silent Network Auth (SNA) allows you to confirm user possession of a mobile phone number without explicit user intervention by communicating directly with mobile carriers. Learn more about how it works with SNA Overview, SNA API Reference, and What is Silent Network Authentication? blog post.

In this guide, we will walk you through testing the entire SNA process step-by-step on your own mobile device without having to make any modifications to your mobile app.

Set up

You also have the option to test SNA without carrier approval or a valid Live Test Number. In this testing flow, use Twilio Region US1 for your requests to Start a New SNA Verification for any mobile number and Invoke the SNA URL as described in this guide. Note that requests made to regions outside US1 in this testing flow will fail. When you reach the Check the Verification Attempt result step, you will receive an expected error code.

Step 1: Start a New SNA Verification

To begin, use the Start New Verification endpoint with the parameter channel=sna to create a new SNA Verification.

Loading Code Sample...

        Start a Verification With Silent Network Auth

        Check your response from the Start New Verification endpoint for the sna.url property. The SNA URL is unique for every Verification Attempt, has a default time-to-live of 10 minutes, and can only be processed once. Once it has been called, it will not be valid anymore.

        Note its value for use in the next step:

        "sna": {
             "url": ""

        Step 2: Invoke the SNA URL

        You can invoke the URL by sending it to yourself through either email or Slack following the *special instructions* below.

        How to send the SNA URL via email

        Copy and paste the SNA URL and send it to yourself via email.

        SNA External Testing Email

        Note: Some email clients have security features, such as Microsoft's Safe Links, that scan and open any embedded URLs in the email. The SNA URL is a one-time URL and can be made invalid during such security processes. To workaround this in testing, you can use an email client that does not have this kind of security feature or modify the SNA URL from https://... to hxxps://... so the URL is non-clickable and change it back to https://... when you're ready to invoke it on your device. Other mobile email clients do not display the URL, even though the email is received. However, if you forward the email, the URL will be displayed.

        How to send the SNA URL via Slack

        To send the SNA URL in Slack, paste it into a preexisting code block. You must create a code block first because pasting the SNA URL directly into the message composer will cause Slack to automatically invalidate the URL.

        slack sna url code block

        Create the empty code block using these keyboard shortcuts:

        • Mac: Shift + Option + Command + C
        • Windows: Ctrl + Alt + Shift + C

        Then paste the SNA URL into the code block and send the message.

        Select the SNA URL

        Before tapping the SNA URL, ensure that your mobile phone’s WiFi is turned off and that it is only using cellular data connection. Tap the SNA URL to continue the authentication process. It should open up in your default browser and after a processing time of four seconds or less, land on a screen that looks similar to this:

        Mobile phone web browser showing URL and page body ErrorCode=0&ErrorDescription=Success&Carrier=VZW

        You can now exit the browser, no further action is required with the response shown on this screen.

        In real implementations, invoke the SNA URL using a POST request.

        We recommend using a POST request for real implementations rather than a GET request as is happening in this example, although both HTTP methods will have the same end result. POST requests have increased security due to not being cached in HTTP caches or browser history.

        Step 3: Check the Verification Attempt result

        Verifications expire after a 10 minute window that begins after it's created.

        If you attempt to check a Verification that has expired then you will get a 404 Not Found error. If you encounter this during testing, restart the flow by starting a new Verification.

        Next, send a request to the Verification Check API to confirm that the SNA URL invocation and Verification Attempt were successful.

        Loading Code Sample...

              Check a Silent Network Auth Verification

              Check your response from the Verification Check API for the status property. approved means that SNA successfully confirmed user possession of the mobile number provided.

              "status": { "approved" }

              Check your response from the Verification Check API for the sna_attempts_error_codes property. If one or more errors occurred during the SNA process, you will see a list of error codes here. The attempt_sid property refers to the specific Verification Attempt that was created with the Start New Verification endpoint.

              You can check the Error and Warning Dictionary for more information on error codes including their possible causes and solutions.

              "sna_attempts_error_codes": [
                    "attempt_sid": "VLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
                    "code": 60001
              Rate this page:

              Need some help?

              We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.

              Loading Code Sample...

                    Thank you for your feedback!

                    Please select the reason(s) for your feedback. The additional information you provide helps us improve our documentation:

                    Sending your feedback...
                    🎉 Thank you for your feedback!
                    Something went wrong. Please try again.

                    Thanks for your feedback!