Rate this page:

Authy Push Authentications

For new development, we encourage you to use the Verify API instead of the Authy API. The Verify API is an evolution of the Authy API with continued support for SMS, voice, and email one-time passcodes, an improved developer experience and new features including:

  • Twilio helper libraries in JavaScript, Java, C#, Python, Ruby, PHP, and Golang
  • Access via the Twilio CLI
  • Improved Visibility and Insights
  • Push authentication SDK embeddable in your own application

You are currently viewing the Authy API. New features and development will be on the Verify API. Check out the FAQ for more information and the migrating to Verify guide to get started.

Before sending a One-Time Password:

  1. Create an Authy Application (see Applications documentation)
  2. Create a User (see Users documentation)

Push authentication offers seamless user experience for second-factor and passwordless authentication and offers the highest level of cryptographic security. All requests are fully encrypted, end to end and allow for non-repudiated transactions.

For users with the ability to install an app on their mobile device or computer, these ApprovalRequests can be sent and verified through our REST API. For information on other channels such as SMS or soft tokens, see the Authy API One-time Passwords documentation.

Create an Approval Request

This will create a new approval request for the given Authy ID and send it to the end user along with a push notification to the Authy Mobile app(s), Desktop app(s), and any SDK-driven apps. Only the subject of the transaction is sent through Google or Apple push channels. If push notifications fail or delay, the user can still retrieve pending transactions by opening the Authy app or an SDK app manually.



Name Type Description
FORMAT String The format to expect back from the REST API call. json, or xml.
AUTHY_ID Integer The Authy ID of the user to send a Push Authentication. Create an Authy ID by registering a user.


Name Description
Shown to the user when the push notification arrives. (📇 PII )
Hash (optional) (Max 20 characters for the Key in the key value pair)
Dictionary containing any ApprovalRequest details you'd like to present to the user to assist their decision to approve or deny a transaction. We automatically add a timestamp to transactions. See below for an example on how to use details. (📇 PII )
Hash (optional) (Max 20 characters for the Key in the key value pair)
Dictionary containing the approval request details hidden to user. This information will be preserved in transaction records but not presented to the user, so it may be useful for your business logic and routing. (📇 PII )
Hash (optional)
A dictionary containing override logos that will be shown to user in the push authentication transaction details. By default, we send the logos uploaded through the console. (🏢 not PII )
Integer (optional)
The number of seconds a transaction is valid without user response (pending) before expiring. Defaults to 86400 (one day); 0 will never expire. This should not be set too low as users need time to evaluate a request. (🏢 not PII )


Name Description
Hash containing the keys & values for the ApprovalRequest. (📇 PII )
Unique transaction ID of the ApprovalRequest. You'll need the uuid to query the request status or tie future callbacks to this ApprovalRequest. (🏢 not PII )
The date and time that we created the ApprovalRequest. (🏢 not PII )
Tracks the current state of the ApprovalRequest between pending a user response, approved, denied, or expired. (🏢 not PII )

        This request generates a push notification that looks like this:

        Authy push authentication request from Cap Trade bank

        Use a Custom Logo in an Approval Request

        By default, all the ApprovalRequests created will be shown to the user using the logo defined in your application in the console. However, you can provide a custom image at the time of the request.

        The logos parameter is expected to be an array of objects, each object with two fields: res (for resolution) and url (the location where you host your logo). If you include the logos parameter, we expect it to include a res with value default.

        Options for the res field are:

        default fallback logo if logo for device resolution is not provided
        low for devices with low resolution
        med for devices with medium resolution
        high for devices with high resolution

        All image URLs must be served over HTTPS and not HTTP. Due to mobile platform restrictions, image requests must be over a secure channel.

        Check Approval Request Status

        There are two ways for you to check on ApprovalRequest status. You can poll the endpoint below for the status of an ApprovalRequest or you can use a webhook callback. Polling is the quickest way to get started using and testing the endpoint.

        In order to implement polling, you can hit the following endpoint repeatedly until the status changes. We suggest polling once per second for the best user experience.



        Name Description
        The format to expect back from the REST API call. json or xml.
        The approval request ID. (Obtained from the response to an ApprovalRequest) (🏢 not PII )


        Name Description
        Hash containing the status of the approval request and other attributes as you can see in the example below. Possible values of nested status key are pending, expired, approved, or denied. "device" key only included in response when status is approved or denied. (📇 PII )

              Push Authentication Callbacks

              In your final application, we recommend exposing a URL to Twilio and using webhooks. With a webhook, we will call your URL immediately when a user reacts to an ApprovalRequest. Webhooks are a more scalable solution than polling. For redundancy you can implement both webhook callbacks and long-polling.

              Learn more about how to validate incoming Twilio Authy API requests and how to implement Authy Webhooks. You can set a callback URL in the Push Authentication tab of your Authy Application in the console.

              Authy push authentication callback in console settings

              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 Community Forums or browsing the Twilio tag on Stack Overflow.


                    Thank you for your feedback!

                    We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

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

                    Thanks for your feedback!

                    Refer us and get $10 in 3 simple steps!

                    Step 1

                    Get link

                    Get a free personal referral link here

                    Step 2

                    Give $10

                    Your user signs up and upgrade using link

                    Step 3

                    Get $10

                    1,250 free SMSes
                    OR 1,000 free voice mins
                    OR 12,000 chats
                    OR more