This resource is meant to be used when implementing Verify Push. It lets developers request that Verify Push retry sending a push notification for the same Challenge. Previously, there was a 1:1 mapping between a Challenge and push notification, so developers had to create a new, duplicate Challenge to resend a push notification for the same verification action (e.g. two-factor auth for a user login). They then had to deduplicate the Challenges on the client side. This implementation complexity is removed with this resource.
The Notifications resource is currently in the Pilot maturity stage, please check with Twilio before using it in production.
APNs/FCM behavior: Please be aware that APNs and FCM already have built-in queuing and retry logic for the scenario where the device was offline when the push notification was requested. When the device becomes online again, all non-expired push notifications (based on the push's time-to-live / ttl) will be sent again. We recommend that developers limit the number of retries a user can request, so that the user doesn't accidentally "over-request" and end up getting a flood of push notifications. We have also made ttl
a configurable resource parameter, so developers can expire past push notifications more quickly if this becomes a problem.
Challenge expiration: Please note that the Challenge itself can still expire. Requesting a retry push notification on an expired Challenge will result in an error response, and developers will need to create a new Challenge. This won't create a deduplication problem for the client-side though, because the client can just request pending, not expired, Challenges.
A 34 character string that uniquely identifies this Notification.
^NT[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The unique SID identifier of the Account.
^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The unique SID identifier of the Service.
^VA[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The unique SID identifier of the Entity.
^YE[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
Customer unique identity for the Entity owner of the Challenge. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.
The unique SID identifier of the Challenge.
^YC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The priority of the notification. For push
Challenges it's always high
which sends the notification immediately, and can wake up a sleeping device.
POST https://verify.twilio.com/v2/Services/{ServiceSid}/Entities/{Identity}/Challenges/{ChallengeSid}/Notifications
Only 3 Push Notifications can be created per Challenge
The unique SID identifier of the Service.
^VA[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
Customer unique identity for the Entity owner of the Challenge. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.
The unique SID identifier of the Challenge.
^YC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
application/x-www-form-urlencoded
How long, in seconds, the notification is valid. Can be an integer between 0 and 300. Default is 300. Delivery is attempted until the TTL elapses, even if the device is offline. 0 means that the notification delivery is attempted immediately, only once, and is not stored for future delivery.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function createNotification() {11const notification = await client.verify.v212.services("VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")13.entities("Identity")14.challenges("YCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")15.notifications.create();1617console.log(notification.sid);18}1920createNotification();
1{2"sid": "NTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",3"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"service_sid": "VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",5"entity_sid": "YEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",6"identity": "Identity",7"challenge_sid": "YCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",8"date_created": "2015-07-30T20:00:00Z",9"priority": "high",10"ttl": 15011}