Skip to contentSkip to navigationSkip to topbar
Rate this page:
On this page

REST API: UsageTrigger


A UsageTrigger is a webhook that notifies your application of usage thresholds.

(information)

Info

Twilio can send your web application an HTTP request when certain events happen, such as an incoming text message to one of your Twilio phone numbers. These requests are called webhooks, or status callbacks. For more, check out our guide to Getting Started with Twilio Webhooks. Find other webhook pages, such as a security guide and an FAQ in the Webhooks section of the docs.

(warning)

Warning

It can take some amount of time for the data used by usage triggers to be reflected in the UsageTriggers evaluations.

Using this resource, you can make or update a new UsageTrigger, fetch information about an existing UsageTrigger or multiple UsageTriggers, or delete an existing UsageTrigger.

You can configure UsageTriggers to recur daily, monthly, or yearly. UsageTriggers are evaluated frequently — about once a minute — to provide timely information to your application.

You can also set UsageTriggers for any usage category. For example, you can create a single UsageTrigger to track daily usage. In this case, a UsageTrigger notifies your application when your cost exceeds a set daily amount. If used together with Subaccounts created for each end-user, then a UsageTrigger would notify your application that a specific user has exceeded an allocated monthly usage.

(information)

Info

For more information, see Usage categories in Usage Records as well as Subaccounts.


UsageTrigger Properties

A UsageTrigger is represented by the following properties:

Property nameTypePIIDescription
account_sidSID<AC>
Not PII

The SID of the Account that the trigger monitors.

Pattern: ^AC[0-9a-fA-F]{32}$Min length: 34Max length: 34

api_versionstring

The API version used to create the resource.


callback_methodenum<http-method>

The HTTP method we use to call callback_url. Can be: GET or POST.

Possible values:
GETPOST

callback_urlstring<uri>
PII MTL: 60 days

The URL we call using the callback_method when the trigger fires.


current_valuestring

The current value of the field the trigger is watching.


date_createdstring<date-time-rfc-2822>

date_firedstring<date-time-rfc-2822>

The date and time in GMT that the trigger was last fired specified in RFC 2822 format.


date_updatedstring<date-time-rfc-2822>

The date and time in GMT that the resource was last updated specified in RFC 2822 format.


friendly_namestring

The string that you assigned to describe the trigger.


recurringenum<string>

The frequency of a recurring UsageTrigger. Can be: daily, monthly, or yearly for recurring triggers or empty for non-recurring triggers. A trigger will only fire once during each period. Recurring times are in GMT.

Possible values:
dailymonthlyyearlyalltime

sidSID<UT>

The unique string that that we created to identify the UsageTrigger resource.

Pattern: ^UT[0-9a-fA-F]{32}$Min length: 34Max length: 34

trigger_byenum<string>

The field in the UsageRecord resource that fires the trigger. Can be: count, usage, or price, as described in the UsageRecords documentation.

Possible values:
countusageprice

trigger_valuestring

The value at which the trigger will fire. Must be a positive, numeric value.


uristring

The URI of the resource, relative to https://api.twilio.com.


usage_categoryenum<string>

The usage category the trigger watches. Must be one of the supported usage categories.

Possible values:
a2p-registration-feesagent-conferenceamazon-pollyanswering-machine-detectionauthy-authenticationsauthy-calls-outboundauthy-monthly-feesauthy-phone-intelligenceauthy-phone-verificationsauthy-sms-outbound

usage_record_uristring

The URI of the UsageRecord resource this trigger watches, relative to https://api.twilio.com.


CallbackUrl requests

When an account's usage category crosses a UsageTrigger's TriggerValue during the specified interval, then Twilio makes a request to the CallbackUrl using the HTTP method CallbackMethod with the CallbackUrl Request parameters.

Twilio guarantees that a UsageTrigger will fire once (at most) during its recurring interval and will quickly retry the callback URL three times after a 5xx error.

(information)

Info

For more information, see CallbackUrl Request Parameters below.


Create a UsageTrigger Resource

POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Usage/Triggers.json

Each account can create up to 1,000 UsageTriggers. If UsageTrigger creation is successful, Twilio will respond with a representation of the new trigger.

(warning)

Warning

Inactive UsageTriggers will not be deleted automatically.

You need to delete triggers you no longer need. For more information, see Delete a UsageTrigger resource below.

Path parameters

Property nameTypeRequiredPIIDescription
AccountSidSID<AC>required

The SID of the Account that will create the resource.

Pattern: ^AC[0-9a-fA-F]{32}$Min length: 34Max length: 34

Request body parameters

Property nameTypeRequiredPIIDescription
CallbackUrlstring<uri>required

The URL we should call using callback_method when the trigger fires.


TriggerValuestringrequired

The usage value at which the trigger should fire. For convenience, you can use an offset value such as +30 to specify a trigger_value that is 30 units more than the current usage value. Be sure to urlencode a + as %2B.


UsageCategoryenum<string>required

The usage category that the trigger should watch. Use one of the supported usage categories for this value.

Possible values:
a2p-registration-feesagent-conferenceamazon-pollyanswering-machine-detectionauthy-authenticationsauthy-calls-outboundauthy-monthly-feesauthy-phone-intelligenceauthy-phone-verificationsauthy-sms-outbound

CallbackMethodenum<http-method>Optional

The HTTP method we should use to call callback_url. Can be: GET or POST and the default is POST.

Possible values:
GETPOST

FriendlyNamestringOptional

A descriptive string that you create to describe the resource. It can be up to 64 characters long.


Recurringenum<string>Optional

The frequency of a recurring UsageTrigger. Can be: daily, monthly, or yearly for recurring triggers or empty for non-recurring triggers. A trigger will only fire once during each period. Recurring times are in GMT.

Possible values:
dailymonthlyyearlyalltime

TriggerByenum<string>Optional

The field in the UsageRecord resource that should fire the trigger. Can be: count, usage, or price as described in the UsageRecords documentation. The default is usage.

Possible values:
countusageprice

Create a new UsageTrigger with parameters

Node.js
Python
C#
Java
PHP
Ruby
curl

_14
// Download the Node helper library from twilio.com/docs/node/install
_14
// These consts are your accountSid and authToken from https://www.twilio.com/console
_14
// To set up environmental variables, see http://twil.io/secure
_14
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_14
const authToken = process.env.TWILIO_AUTH_TOKEN;
_14
const client = require('twilio')(accountSid, authToken);
_14
_14
client.usage.triggers
_14
.create({
_14
triggerValue: '1000',
_14
usageCategory: 'sms',
_14
callbackUrl: 'http://www.example.com/',
_14
})
_14
.then(trigger => process.stdout.write(trigger.sid));

Output

_17
{
_17
"usage_record_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Records.json?Category=sms",
_17
"date_updated": "Sat, 13 Oct 2012 21:32:30 +0000",
_17
"date_fired": null,
_17
"friendly_name": "Trigger for sms at usage of 1000",
_17
"uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Triggers/UTc142bed7b38c4f8186ef41a309814fd2.json",
_17
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_17
"callback_method": "POST",
_17
"trigger_by": "usage",
_17
"sid": "UTc142bed7b38c4f8186ef41a309814fd2",
_17
"current_value": "57",
_17
"date_created": "Sat, 13 Oct 2012 21:32:30 +0000",
_17
"callback_url": "http://www.example.com",
_17
"recurring": null,
_17
"usage_category": "sms",
_17
"trigger_value": "1000.000000"
_17
}

Create an UsageTrigger

Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_20
// Download the helper library from https://www.twilio.com/docs/node/install
_20
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_20
_20
// Find your Account SID and Auth Token at twilio.com/console
_20
// and set the environment variables. See http://twil.io/secure
_20
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_20
const authToken = process.env.TWILIO_AUTH_TOKEN;
_20
const client = twilio(accountSid, authToken);
_20
_20
async function createUsageTrigger() {
_20
const trigger = await client.usage.triggers.create({
_20
callbackUrl: "https://www.example.com",
_20
triggerValue: "TriggerValue",
_20
usageCategory: "wireless-usage-data-international-roaming-india",
_20
});
_20
_20
console.log(trigger.accountSid);
_20
}
_20
_20
createUsageTrigger();

Output

_18
{
_18
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"api_version": "2010-04-01",
_18
"callback_method": "GET",
_18
"callback_url": "https://www.example.com",
_18
"current_value": "0",
_18
"date_created": "Sun, 06 Sep 2015 12:58:45 +0000",
_18
"date_fired": null,
_18
"date_updated": "Sun, 06 Sep 2015 12:58:45 +0000",
_18
"friendly_name": "raphael-cluster-1441544325.86",
_18
"recurring": "yearly",
_18
"sid": "UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"trigger_by": "price",
_18
"trigger_value": "TriggerValue",
_18
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Triggers/UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"usage_category": "wireless-usage-data-international-roaming-india",
_18
"usage_record_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Records?Category=totalprice"
_18
}


Fetch a UsageTrigger resource

GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Usage/Triggers/{Sid}.json

Path parameters

Property nameTypeRequiredPIIDescription
AccountSidSID<AC>required

The SID of the Account that created the UsageTrigger resource to fetch.

Pattern: ^AC[0-9a-fA-F]{32}$Min length: 34Max length: 34

SidSID<UT>required

The Twilio-provided string that uniquely identifies the UsageTrigger resource to fetch.

Pattern: ^UT[0-9a-fA-F]{32}$Min length: 34Max length: 34

Fetch a UsageTrigger resource

Node.js
Python
C#
Java
PHP
Ruby
curl

_11
// Download the Node helper library from twilio.com/docs/node/install
_11
// These consts are your accountSid and authToken from https://www.twilio.com/console
_11
// To set up environmental variables, see http://twil.io/secure
_11
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_11
const authToken = process.env.TWILIO_AUTH_TOKEN;
_11
const client = require('twilio')(accountSid, authToken);
_11
_11
client.usage
_11
.triggers('UT33c6aeeba34e48f38d6899ea5b765ad4')
_11
.fetch()
_11
.then(trigger => trigger.currentValue);

Output

_17
{
_17
"usage_record_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Records.json?Category=calls",
_17
"date_updated": "Sat, 29 Sep 2012 19:47:54 +0000",
_17
"date_fired": null,
_17
"friendly_name": "Trigger for calls at usage of 500",
_17
"uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Triggers/UT33c6aeeba34e48f38d6899ea5b765ad4.json",
_17
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_17
"callback_method": "POST",
_17
"trigger_by": "usage",
_17
"sid": "UT33c6aeeba34e48f38d6899ea5b765ad4",
_17
"current_value": "21",
_17
"date_created": "Sat, 29 Sep 2012 19:45:43 +0000",
_17
"callback_url": "http://www.example.com/",
_17
"recurring": null,
_17
"usage_category": "calls",
_17
"trigger_value": "500.000000"
_17
}

Fetch an UsageTrigger

Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_18
// Download the helper library from https://www.twilio.com/docs/node/install
_18
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_18
_18
// Find your Account SID and Auth Token at twilio.com/console
_18
// and set the environment variables. See http://twil.io/secure
_18
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_18
const authToken = process.env.TWILIO_AUTH_TOKEN;
_18
const client = twilio(accountSid, authToken);
_18
_18
async function fetchUsageTrigger() {
_18
const trigger = await client.usage
_18
.triggers("UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_18
.fetch();
_18
_18
console.log(trigger.accountSid);
_18
}
_18
_18
fetchUsageTrigger();

Output

_18
{
_18
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"api_version": "2010-04-01",
_18
"callback_method": "GET",
_18
"callback_url": "http://cap.com/streetfight",
_18
"current_value": "0",
_18
"date_created": "Sun, 06 Sep 2015 12:58:45 +0000",
_18
"date_fired": null,
_18
"date_updated": "Sun, 06 Sep 2015 12:58:45 +0000",
_18
"friendly_name": "raphael-cluster-1441544325.86",
_18
"recurring": "yearly",
_18
"sid": "UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"trigger_by": "price",
_18
"trigger_value": "50",
_18
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Triggers/UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"usage_category": "totalprice",
_18
"usage_record_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Records?Category=totalprice"
_18
}


Read multiple UsageTrigger resources

GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Usage/Triggers.json

Path parameters

Property nameTypeRequiredPIIDescription
AccountSidSID<AC>required

The SID of the Account that created the UsageTrigger resources to read.

Pattern: ^AC[0-9a-fA-F]{32}$Min length: 34Max length: 34

Query parameters

Property nameTypeRequiredPIIDescription
Recurringenum<string>Optional

The frequency of recurring UsageTriggers to read. Can be: daily, monthly, or yearly to read recurring UsageTriggers. An empty value or a value of alltime reads non-recurring UsageTriggers.

Possible values:
dailymonthlyyearlyalltime

TriggerByenum<string>Optional

The trigger field of the UsageTriggers to read. Can be: count, usage, or price as described in the UsageRecords documentation.

Possible values:
countusageprice

UsageCategoryenum<string>Optional

The usage category of the UsageTriggers to read. Must be a supported usage categories.

Possible values:
a2p-registration-feesagent-conferenceamazon-pollyanswering-machine-detectionauthy-authenticationsauthy-calls-outboundauthy-monthly-feesauthy-phone-intelligenceauthy-phone-verificationsauthy-sms-outbound

PageSizeintegerOptional

How many resources to return in each list page. The default is 50, and the maximum is 1000.

Minimum: 1Maximum: 1000

PageintegerOptional

The page index. This value is simply for client state.

Minimum: 0

PageTokenstringOptional

The page token. This is provided by the API.

Read multiple UsageTrigger resources

Node.js
Python
C#
Java
PHP
Ruby
curl

_15
// Download the Node helper library from twilio.com/docs/node/install
_15
// These consts are your accountSid and authToken from https://www.twilio.com/console
_15
// To set up environmental variables, see http://twil.io/secure
_15
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_15
const authToken = process.env.TWILIO_AUTH_TOKEN;
_15
const client = require('twilio')(accountSid, authToken);
_15
_15
const filterOpts = {
_15
recurring: 'daily',
_15
usageCategory: 'calls',
_15
};
_15
_15
client.usage.triggers.each(filterOpts, trigger =>
_15
console.log(trigger.currentValue)
_15
);

Output

_27
{
_27
"first_page_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Triggers/.json?UsageCategory=calls&Recurring=daily&Page=0&PageSize=50",
_27
"previous_page_uri": null,
_27
"usage_triggers": [
_27
{
_27
"usage_record_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Records/Today.json?Category=calls",
_27
"date_updated": "Sat, 29 Sep 2012 19:42:57 +0000",
_27
"date_fired": null,
_27
"friendly_name": "a trigger",
_27
"uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Triggers//UTc2db285b0cbf4c60a2f1a8db237a5fba.json",
_27
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_27
"callback_method": "POST",
_27
"trigger_by": "count",
_27
"sid": "UTc2db285b0cbf4c60a2f1a8db237a5fba",
_27
"current_value": "0",
_27
"date_created": "Sun, 23 Sep 2012 23:07:29 +0000",
_27
"callback_url": "http://www.google.com",
_27
"recurring": "daily",
_27
"usage_category": "calls",
_27
"trigger_value": "0.000000"
_27
}
_27
],
_27
"uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Triggers.json?UsageCategory=calls&Recurring=daily",
_27
"page_size": 50,
_27
"next_page_uri": null,
_27
"page": 0
_27
}

List multiple UsageTriggers

Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_16
// Download the helper library from https://www.twilio.com/docs/node/install
_16
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_16
_16
// Find your Account SID and Auth Token at twilio.com/console
_16
// and set the environment variables. See http://twil.io/secure
_16
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_16
const authToken = process.env.TWILIO_AUTH_TOKEN;
_16
const client = twilio(accountSid, authToken);
_16
_16
async function listUsageTrigger() {
_16
const triggers = await client.usage.triggers.list({ limit: 20 });
_16
_16
triggers.forEach((t) => console.log(t.accountSid));
_16
}
_16
_16
listUsageTrigger();

Output

_33
{
_33
"end": 0,
_33
"first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Triggers?PageSize=1&Page=0",
_33
"last_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Triggers?PageSize=1&Page=626",
_33
"next_page_uri": null,
_33
"num_pages": 627,
_33
"page": 0,
_33
"page_size": 1,
_33
"previous_page_uri": null,
_33
"start": 0,
_33
"total": 627,
_33
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Triggers",
_33
"usage_triggers": [
_33
{
_33
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_33
"api_version": "2010-04-01",
_33
"callback_method": "GET",
_33
"callback_url": "http://cap.com/streetfight",
_33
"current_value": "0",
_33
"date_created": "Sun, 06 Sep 2015 12:58:45 +0000",
_33
"date_fired": null,
_33
"date_updated": "Sun, 06 Sep 2015 12:58:45 +0000",
_33
"friendly_name": "raphael-cluster-1441544325.86",
_33
"recurring": "yearly",
_33
"sid": "UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_33
"trigger_by": "price",
_33
"trigger_value": "50",
_33
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Triggers/UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_33
"usage_category": "totalprice",
_33
"usage_record_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Records?Category=totalprice"
_33
}
_33
]
_33
}


Update a UsageTrigger Resource

POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Usage/Triggers/{Sid}.json

Attempts a UsageTrigger's properties update and, if successful, returns the updated resource representation.

The returned response is identical to the returned response of a GET request.

Path parameters

Property nameTypeRequiredPIIDescription
AccountSidSID<AC>required

The SID of the Account that created the UsageTrigger resources to update.

Pattern: ^AC[0-9a-fA-F]{32}$Min length: 34Max length: 34

SidSID<UT>required

The Twilio-provided string that uniquely identifies the UsageTrigger resource to update.

Pattern: ^UT[0-9a-fA-F]{32}$Min length: 34Max length: 34

Request body parameters

Property nameTypeRequiredPIIDescription
CallbackMethodenum<http-method>Optional

The HTTP method we should use to call callback_url. Can be: GET or POST and the default is POST.

Possible values:
GETPOST

CallbackUrlstring<uri>Optional

The URL we should call using callback_method when the trigger fires.


FriendlyNamestringOptional

A descriptive string that you create to describe the resource. It can be up to 64 characters long.

Update a UsageTrigger Resource

Node.js
Python
C#
Java
PHP
Ruby
curl

_14
// Download the Node helper library from twilio.com/docs/node/install
_14
// These consts are your accountSid and authToken from https://www.twilio.com/console
_14
// To set up environmental variables, see http://twil.io/secure
_14
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_14
const authToken = process.env.TWILIO_AUTH_TOKEN;
_14
const client = require('twilio')(accountSid, authToken);
_14
_14
client.usage
_14
.triggers('UT33c6aeeba34e48f38d6899ea5b765ad4')
_14
.update({
_14
friendlyName: 'Monthly Maximum Call Usage',
_14
callbackUrl: 'https://www.example.com/monthly-usage-trigger',
_14
})
_14
.then(trigger => console.log(trigger.dateFired));

Output

_17
{
_17
"usage_record_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Records.json?Category=calls",
_17
"date_updated": "Sat, 13 Oct 2012 21:24:35 +0000",
_17
"date_fired": null,
_17
"friendly_name": "Monthly Maximum Call Usage",
_17
"uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Usage/Triggers/UT33c6aeeba34e48f38d6899ea5b765ad4.json",
_17
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_17
"callback_method": "POST",
_17
"trigger_by": "usage",
_17
"sid": "UT33c6aeeba34e48f38d6899ea5b765ad4",
_17
"current_value": "21",
_17
"date_created": "Sat, 29 Sep 2012 19:45:43 +0000",
_17
"callback_url": "https://www.example.com/monthly-usage-trigger",
_17
"recurring": null,
_17
"usage_category": "calls",
_17
"trigger_value": "500.000000"
_17
}

(warning)

Warning

Currently, you cannot update the category or value of an existing UsageTrigger. Instead, use POST to create a new UsageTrigger and use DELETE to remove an old UsageTrigger.

Update an UsageTrigger

Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_18
// Download the helper library from https://www.twilio.com/docs/node/install
_18
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_18
_18
// Find your Account SID and Auth Token at twilio.com/console
_18
// and set the environment variables. See http://twil.io/secure
_18
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_18
const authToken = process.env.TWILIO_AUTH_TOKEN;
_18
const client = twilio(accountSid, authToken);
_18
_18
async function updateUsageTrigger() {
_18
const trigger = await client.usage
_18
.triggers("UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
_18
.update({ callbackMethod: "POST" });
_18
_18
console.log(trigger.accountSid);
_18
}
_18
_18
updateUsageTrigger();

Output

_18
{
_18
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"api_version": "2010-04-01",
_18
"callback_method": "POST",
_18
"callback_url": "http://cap.com/streetfight",
_18
"current_value": "0",
_18
"date_created": "Sun, 06 Sep 2015 12:58:45 +0000",
_18
"date_fired": null,
_18
"date_updated": "Sun, 06 Sep 2015 12:58:45 +0000",
_18
"friendly_name": "raphael-cluster-1441544325.86",
_18
"recurring": "yearly",
_18
"sid": "UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"trigger_by": "price",
_18
"trigger_value": "50",
_18
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Triggers/UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_18
"usage_category": "totalprice",
_18
"usage_record_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Usage/Records?Category=totalprice"
_18
}


Delete a UsageTrigger resource

DELETE https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Usage/Triggers/{Sid}.json

Path parameters

Property nameTypeRequiredPIIDescription
AccountSidSID<AC>required

The SID of the Account that created the UsageTrigger resources to delete.

Pattern: ^AC[0-9a-fA-F]{32}$Min length: 34Max length: 34

SidSID<UT>required

The Twilio-provided string that uniquely identifies the UsageTrigger resource to delete.

Pattern: ^UT[0-9a-fA-F]{32}$Min length: 34Max length: 34

Delete an UsageTrigger

Node.js
Python
C#
Java
Go
PHP
Ruby
twilio-cli
curl

_14
// Download the helper library from https://www.twilio.com/docs/node/install
_14
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_14
_14
// Find your Account SID and Auth Token at twilio.com/console
_14
// and set the environment variables. See http://twil.io/secure
_14
const accountSid = process.env.TWILIO_ACCOUNT_SID;
_14
const authToken = process.env.TWILIO_AUTH_TOKEN;
_14
const client = twilio(accountSid, authToken);
_14
_14
async function deleteUsageTrigger() {
_14
await client.usage.triggers("UTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").remove();
_14
}
_14
_14
deleteUsageTrigger();

UsageTrigger Callbacks

As soon as the usage value of a UsageTrigger exceeds the TriggerValue, the trigger will fire and Twilio will make an asynchronous HTTP request to the UsageTrigger's CallbackUrl. This request will typically take place within a minute of exceeding the usage threshold.

CallbackUrl request parameters

Twilio will pass the following parameters to the UsageTrigger's CallbackUrl:

ParameterDescription
AccountSidYour Twilio account id. It is 34 characters long and always starts with the letters AC
UsageTriggerSidUnique identifier of the fired UsageTrigger.
DateFiredDate when the UsageTrigger fired, in GMT.
RecurringHow the fired UsageTrigger recurs. For non-recurring UsageTriggers: leave empty. For recurring UsageTriggers: choose daily, monthly, or yearly.
UsageCategoryUsage category watched by the UsageTrigger: choose from supported usage categories.
TriggerByUsageRecord field that fires the UsageTrigger: choose from count, usage, or price.
TriggerValueValue at which the UsageTrigger fired.
CurrentValueThe current value of the usage watched by the UsageTrigger.
UsageRecordUriURI of the UsageRecord that this UsageTrigger watched when it fired.
IdempotencyTokenA random token generated by Twilio and guaranteed to be unique for this particular firing of this UsageTrigger.

Best practices with UsageTrigger callbacks

When implementing a handler for UsageTrigger's CallbackUrl, your handler may receive HTTP requests more than once. Services that handle duplicate requests and return the same response are called Idempotence.

We give you an IdempotencyToken that is unique for each Usage Trigger callback.

(information)

Info

For more information about Idempotence, see this wiki page.

Example: daily recurring UsageTrigger's idempotency token


_10
ACed70abd024d3f57a4027b5dc2ca88d5b-FIRES-UTc142bed7b38c4f8186ef41a309814fd2-2012-10-04

You can keep track of your IdempotencyToken to properly handle requests to your service and prevent a request from performing the same operation twice.

For example, your callback service may send billing notifications via email. For the best possible customer experience, you would want your customers only to receive the billing notification email once.

You can follow the test-and-set (external link) pattern to implement idempotent services. In short, you would test for the existence of the IdempotencyToken before processing your application's logic. This allows your application to handle existing tokens and choose the next appropriate step.

In the email example, you would have already sent the email to your customer then you would skip sending the email, instead replying with an HTTP status code of 200.

(information)

Info

For more information on test-and-set, see this wiki page.


Rate this page: