Skip to contentSkip to navigationSkip to topbar
Page toolsOn this page
Looking for more inspiration?Visit the

Manage unused resources


Learn to manage unused resources on your Twilio account. Regularly auditing your account for unused resources helps you optimize your Twilio usage, avoid unnecessary charges, and improve security.

You can use this guide to review and manage the most common sources of unnecessary costs on Twilio accounts, such as phone numbers, messaging services, call queues, and recordings. The guide also includes a list of less common resources that you should review to ensure you're not paying for features you don't use.

See Related reference documentation to learn more about the API resources used in this guide.


Most common resources to audit

most-common-resources-to-audit page anchor

Phone numbers

phone-numbers page anchor

Each active Twilio phone number on your account incurs a recurring monthly charge. You can reduce your costs by releasing inactive phone numbers.

Releasing a number removes it from your account and stops the recurring charge immediately. You can release a number by using the Console or the API.

Twilio ConsoleLegacy ConsoleAPI
  1. In Twilio Console, go to Products & Services > Numbers & Senders > Overview(link takes you to an external page).
    The Phone Numbers tab's My inventory section lists all the phone numbers on your account.
  2. Identify inactive phone numbers.
    • To identify phone numbers that aren't configured for voice or messaging, review the Active Configuration column.
    • To identify phone numbers that aren't receiving traffic, review the Traffic Status column.
  3. Check if any of the inactive numbers have an emergency address. If they do, remove the emergency address.
    1. Click a phone number.
    2. On the Configuration details tab, click Voice and emergency calling and scroll down to the Emergency address section.
    3. Click Remove emergency address and click Unlink address.
  4. On the Phone Numbers tab's My inventory section, for any inactive phone number you want to release, click (action menu) next to the number and select Release Number.
  5. Type in the phone number you want to release to confirm and click Release.

On the Release numbers(link takes you to an external page) page, you can check the list of released numbers.

If you change your mind, you can restore a recently released number in Twilio Console(link takes you to an external page) or in the legacy Console(link takes you to an external page) within 10 days.

Messaging Services that no longer route traffic still appear in your account and can add noise to your configuration. If you have services created for old projects, pilots, or testing, delete them once you confirm they aren't in use.

(warning)

Warning

You can't recover a Messaging Service after you delete it. Verify that no active phone numbers or applications depend on the service before you delete it.

You can delete Messaging Services by using the Console or the API.

Twilio ConsoleLegacy ConsoleAPI
  1. In Twilio Console, go to Products & Services > Messaging > Services(link takes you to an external page).
    The Messaging Services page lists all the messaging services on your account.
  2. Click each Messaging Service and review its configuration and traffic.
  3. On the Messaging Services page, for any service you want to delete, click the (action menu) next to the service and select Delete Service.
  4. Click Yes, delete permanently.

Call queues persist in your account indefinitely. Twilio recommends deleting inactive queues because idle queues increase the response time when retrieving queues using the API.

You can delete call queues by using the API.

  1. To retrieve all call queues on your account, make a GET request to the Queues resource.
    Retrieve a list of call queues for your accountLink to code sample: Retrieve a list of call queues for your account
    1
    // Download the helper library from https://www.twilio.com/docs/node/install
    2
    const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
    3
    4
    // Find your Account SID and Auth Token at twilio.com/console
    5
    // and set the environment variables. See http://twil.io/secure
    6
    const accountSid = process.env.TWILIO_ACCOUNT_SID;
    7
    const authToken = process.env.TWILIO_AUTH_TOKEN;
    8
    const client = twilio(accountSid, authToken);
    9
    10
    async function listQueue() {
    11
    const queues = await client.queues.list({ limit: 20 });
    12
    13
    queues.forEach((q) => console.log(q.end));
    14
    }
    15
    16
    listQueue();

    Response

    Note about this response
    1
    {
    2
    "end": 0,
    3
    "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Queues.json?PageSize=1&Page=0",
    4
    "next_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Queues.json?PageSize=1&Page=1&PageToken=PAQUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    5
    "page": 0,
    6
    "page_size": 1,
    7
    "previous_page_uri": null,
    8
    "queues": [
    9
    {
    10
    "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    11
    "average_wait_time": 0,
    12
    "current_size": 0,
    13
    "date_created": "Tue, 04 Aug 2015 18:39:09 +0000",
    14
    "date_updated": "Tue, 04 Aug 2015 18:39:09 +0000",
    15
    "friendly_name": "0.361280134646222",
    16
    "max_size": 100,
    17
    "sid": "QUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    18
    "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Queues/QUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
    19
    }
    20
    ],
    21
    "start": 0,
    22
    "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Queues.json?PageSize=1&Page=0"
    23
    }
  2. To delete a call queue, make a DELETE request to the Queue resource with the SID of the queue you want to delete.
    1
    // Download the helper library from https://www.twilio.com/docs/node/install
    2
    const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
    3
    4
    // Find your Account SID and Auth Token at twilio.com/console
    5
    // and set the environment variables. See http://twil.io/secure
    6
    const accountSid = process.env.TWILIO_ACCOUNT_SID;
    7
    const authToken = process.env.TWILIO_AUTH_TOKEN;
    8
    const client = twilio(accountSid, authToken);
    9
    10
    async function deleteQueue() {
    11
    await client.queues("QUXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").remove();
    12
    }
    13
    14
    deleteQueue();

Twilio bills you for the storage of recorded minutes. Twilio recommends deleting old or unused recordings that you no longer need for compliance, quality assurance, or other purposes to stop incurring storage charges.

If you must keep Voice recordings for compliance but want to reduce long-term costs, consider downloading them, storing them in a cheaper cold-storage solution (such as AWS S3 Glacier), and deleting them from Twilio.

(warning)

Warning

You can't recover a recording after you delete it. The metadata is preserved for 40 days, during which time it is still visible in the Console and API.

  • To delete a bulk set of recordings, use the bulk deletion tool in the Console.

    Twilio ConsoleLegacy Console
    1. In Twilio Console, go to Products & Services > Voice > Logs > Call recordings(link takes you to an external page).
    2. Use the filters to find recordings you want to delete. For example, you can filter by date or by the phone number that received the call.
    3. Select the recordings you want to delete and click Delete.
  • To delete an individual recording, use the Console or the API.

    Twilio ConsoleLegacy ConsoleAPI
    1. In Twilio Console, go to Products & Services > Voice > Logs > Call recordings(link takes you to an external page).
    2. Click the recording you want to delete.
    3. Click Delete recording.

Less common resources to audit

less-common-resources-to-audit page anchor

The following resource types are less common sources of unnecessary costs. If your account has been running for a while, review them periodically.

SIP trunks and SIP domains

sip-trunks-and-sip-domains page anchor

If you set up Elastic SIP trunking or Programmable Voice SIP domains for a past project or testing phase, they might still be costing you. While creating a SIP trunk is free, you are billed for any phone numbers associated with it and any termination or origination traffic. Leaving unused SIP endpoints open also poses a security risk that can lead to toll fraud.

Action:

If your organization uses Twilio Bring Your Own Carrier (BYOC) to route voice calls through your own telecom carrier, Twilio charges a small per-minute fee for each call. If a BYOC trunk is misconfigured or no longer used by your infrastructure, delete it to prevent accidental routing loops and stray connection fees.

Action:

TwiML Bins and Functions

twiml-bins-and-functions page anchor

TwiML Bins and Functions don't carry large direct storage fees, but any phone number still pointed at an unused Function will trigger execution charges each time it receives traffic.

Action:

Some add-ons charge a flat monthly fee or a per-lookup fee. If an add-on is enabled but your workflows no longer use it, uninstall it to stop incurring unnecessary charges.

Action:

Public Key Encrypted Recordings

public-key-encrypted-recordings page anchor

If you use Twilio's Public Key Encrypted Recordings, make sure you aren't paying a premium to store data you intended to delete. Delete any encrypted recordings you no longer need.

Action:

Twilio Voice Insights gives you deep data on call quality, carrier performance, and drop rates. While basic dashboards are often included, advanced feature sets and extended data retention for logs can increase your bill.

Action:


After following this guide, you have identified and removed unnecessary resources from your Twilio account, including inactive phone numbers, messaging services, call queues, and recordings. You can confirm this by reviewing your account inventory in Twilio Console or making a GET request to the relevant API resources to ensure the deleted SIDs are no longer returned.