The short version
A Twilio number that only receives calls into a phone menu needs very little: buy it, point its voice webhook at your application, done. Every further thing you do with the number adds an obligation. Placing calls from it raises caller ID, emergency calling and call-labelling questions. Sending texts from it puts you into one of two carrier registration schemes, depending on whether it is a local or a toll-free number. Bringing an existing number in means a porting process whose paperwork differs between the two countries.
So the useful way to read this page is by what you intend the number to do. The checklist at the end is organised that way, with a "when it matters" column for each item.
Our view on order: if the number will ever text or place calls, create the Trust Hub business profile before anything else. Twilio says approval of a Primary Customer Profile "may take 72 hours or more", and the same profile is reused for A2P 10DLC, SHAKEN/STIR, Branded Calls and CNAM.17 It is the longest-lead item that blocks everything else, and it costs nothing to start early.
Two things on this page are easy to get wrong because the internet is full of older advice. Unregistered texting from US local numbers is not "filtered more": it has been fully blocked since 1 September 2023.19 And texting from an unverified toll-free number is not "rate-limited": it has been blocked since 31 January 2024.22 If a tutorial tells you to buy a number and send a test SMS, it was written before those dates or it assumes a trial account.
Searching for a number
Provisioning is a two-step process: Twilio's own description is "Find an available phone number to provision by making a GET request to the subresources of the AvailablePhoneNumbers resource", then "Make a POST request to the IncomingPhoneNumbers resource."3 Searching is free and holds nothing; the number is yours only after the POST succeeds.
Local numbers are searched at /2010-04-01/Accounts/{AccountSid}/AvailablePhoneNumbers/{CountryCode}/Local.json1 and toll-free numbers at the same path ending /TollFree.json.2 The country code is US or CA. The filters that matter for North America:
AreaCode, which Twilio documents as applying "to only phone numbers in the US and Canada".1Contains, a 2 to 16 character pattern that accepts digits and Latin letters plus the meta-characters*,%,+(anchor at the start) and$(anchor at the end).1 Letters make vanity searches possible.- Geography:
InRegion(state or province),InPostalCode,InRateCenter(which requiresInLata), andNearNumberorNearLatLongwith aDistancethat defaults to 25 miles and can be up to 500. All of these are US and Canada only.1 - Capabilities:
VoiceEnabled,SmsEnabled,MmsEnabled,FaxEnabled.1 - Address filters:
ExcludeAllAddressRequired,ExcludeLocalAddressRequiredandExcludeForeignAddressRequired, each defaulting to false.1 Beta, which defaults to true and includes numbers "new to the Twilio platform".1
Each result carries its own address_requirements (none, any, local or foreign) and a capabilities object.1 Read both on the result rather than assuming them from the country: they are the authoritative statement for that specific number.
Searching with the Node.js helper library, for voice-capable Toronto numbers that need no address on file:
const twilio = require("twilio");
const client = twilio(process.env.TWILIO_API_KEY, process.env.TWILIO_API_SECRET, {
accountSid: process.env.TWILIO_ACCOUNT_SID,
});
async function findNumbers() {
const local = await client.availablePhoneNumbers("CA").local.list({
areaCode: 416,
voiceEnabled: true,
excludeAllAddressRequired: true,
limit: 10,
});
for (const n of local) {
console.log(n.phoneNumber, n.locality, n.region, n.rateCenter,
n.addressRequirements, JSON.stringify(n.capabilities));
}
// Toll-free in the US, anchored to the 833 code
const tollFree = await client.availablePhoneNumbers("US").tollFree.list({
contains: "+1833",
limit: 10,
});
tollFree.forEach((n) => console.log(n.phoneNumber, n.addressRequirements));
}
findNumbers();
The same searches with curl:
curl -G "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/AvailablePhoneNumbers/CA/Local.json" \
--data-urlencode "AreaCode=416" \
--data-urlencode "VoiceEnabled=true" \
--data-urlencode "ExcludeAllAddressRequired=true" \
--data-urlencode "PageSize=10" \
-u "$TWILIO_API_KEY:$TWILIO_API_SECRET"
curl -G "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/AvailablePhoneNumbers/US/TollFree.json" \
--data-urlencode "Contains=+1833" \
--data-urlencode "PageSize=10" \
-u "$TWILIO_API_KEY:$TWILIO_API_SECRET"
PageSize defaults to 50 and can go to 1,000.1 An empty result for a specific area code is common in exhausted or overlay-heavy areas; widen with InRegion or NearNumber rather than retrying. For toll-free, Twilio warns that it "often" does not have 1-800 numbers in stock "due to low availability".29 If you want a particular toll-free code, search for it before you design a brand around it.
Choosing the area code itself is a business question rather than an API one; our area code reference covers overlays and the regions each code serves.
Buying (provisioning) the number
Purchase is a POST to /2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers.json. You must pass either PhoneNumber in E.164 form or AreaCode, which "Can be any three-digit, US or Canada area code" and lets Twilio pick any available number in it.3 We prefer always searching first and buying an exact PhoneNumber: you see the rate centre and capabilities before you pay, and your code is deterministic.
Set the routing at purchase time so the number never exists unconfigured. VoiceUrl is "The URL that we should call to answer a call to the new phone number", and it is ignored if a VoiceApplicationSid or TrunkSid is set; setting either of those two deletes the other.3 SmsUrl does the same for incoming texts.3 The compliance links can also be set here: AddressSid, BundleSid and EmergencyAddressSid.3
async function buy(phoneNumber, addressSid) {
const params = {
phoneNumber, // exact E.164 number from the search
friendlyName: "Main line (menu)",
voiceUrl: "https://example.com/voice/incoming",
voiceMethod: "POST",
smsUrl: "https://example.com/sms/incoming",
};
if (addressSid) params.addressSid = addressSid; // only when address_requirements != "none"
const pn = await client.incomingPhoneNumbers.create(params);
console.log(pn.sid, pn.phoneNumber, pn.addressRequirements, pn.emergencyStatus);
return pn;
}
curl -X POST "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/IncomingPhoneNumbers.json" \
--data-urlencode "PhoneNumber=+14165550123" \
--data-urlencode "FriendlyName=Main line (menu)" \
--data-urlencode "VoiceUrl=https://example.com/voice/incoming" \
-u "$TWILIO_API_KEY:$TWILIO_API_SECRET"
Store the returned PN SID, not just the phone number: the SID is what every later update, registration and release call uses. Twilio's help centre notes that the full monthly price is charged when the number is provisioned.29
Address requirements and Regulatory Bundles in the US and Canada
Twilio's regulatory machinery exists because, in its words, "a phone number is a national resource" and "governments want to identify the end-user of the phone number".8 It has two layers: an Address resource that some number types require, and a Regulatory Bundle (end-user identity plus supporting documents) that some countries require.
Bundles: not required for US or Canadian numbers today
Twilio publishes a country-by-country "Phone Number Regulations" index. On 26 October 2026 it listed 89 countries, and neither the United States nor Canada was one of them; the per-country URLs that would hold US and Canadian regulatory pages returned "not found".7 The BundleSid parameter is documented only as needed where "Some regions require a Bundle".3 In practice that means you can buy US and Canadian local numbers without assembling an identity bundle. The identity checks for these two countries live elsewhere: in the Trust Hub profiles that A2P 10DLC, toll-free verification and CNAM require (below).
Addresses: check the flag on the number
Twilio defines three address requirements. "Any" requires an address anywhere in the world; "Local" requires one that "corresponds to the phone number's prefix"; "Foreign" requires one outside the number's country.5 The address "must be the residence or place of business of the individual or entity using the phone number", which for a reseller means the end customer's, not yours, and Twilio "strongly" recommends subaccounts to keep customers' numbers and addresses separate.5 System validation is enforced only for Local requirements; for Any, an address that is not system-validated is accepted, though it must still be a real address.6
Which North American types carry a requirement? Twilio's downloadable number price list has an "Address Required" column. On the day we read it, it showed Yes for US toll-free and No for US local, Canadian local and Canadian toll-free.9 Twilio's own toll-free purchase example passes an AddressSid, consistent with that.29 Treat the price-list column as a guide and the address_requirements field on the specific number as the rule.1
Creating an address is a POST to /Addresses.json with CustomerName, Street, City, Region, PostalCode and IsoCountry required.4 If the address is close to a valid one, Twilio silently corrects it unless you send AutoCorrectAddress=false, in which case you get the suggestion back as error 21629; an address that fails validation outright is error 21628.4
const addr = await client.addresses.create({
customerName: "Example Dental Ltd",
street: "100 Example St",
city: "Springfield",
region: "IL",
postalCode: "62701",
isoCountry: "US",
friendlyName: "HQ",
autoCorrectAddress: false, // see the suggestion instead of a silent rewrite
});
console.log(addr.sid, addr.validated, addr.verified);
One Address can satisfy the requirement for many numbers on the same account.4 An address cannot be deleted while numbers depend on it (Twilio returns error 21625), which is a useful guard rather than a nuisance.4
CNAM: the name shown on your outbound calls
United States CNAM (caller name) only matters for calls your number places. A number that only answers callers into a menu does not need it. If your application calls customers back, sends voice notifications, or forwards calls with your number as the caller ID, it does.
On Twilio, CNAM is a Trust Hub registration that Twilio describes as "a free way to help boost your call pickup rates".14 The sequence is: create and get approval for a Business Profile, assign your numbers to it, create a CNAM Trust Product with a display name, submit it for vetting, and once it is "Twilio-Approved", Twilio registers the name "with the CNAM authoritative databases in the United States".13 It can be done in the Console or through the Trust Hub REST API.13
The limits, all from Twilio's CNAM guide, which labels the feature Public Beta:13
- The display name is a maximum of 15 characters, must begin with a letter, may contain only letters, numbers, periods, commas and spaces, and "cannot be a generic value such as a City/State".
- Without a registered name, the default display is the city and state of the number.
- Only US standard long-code numbers already assigned to your Business Profile are eligible. "CA numbers cannot be assigned to CNAM profiles", and US and Canadian toll-free numbers cannot either; toll-free CNAM goes through Twilio support.
- After approval, the name "may take 48-72 hours to propagate to all carriers in the United States".
- Display depends on the called party: "For mobile phones, most US carriers offer CNAM as an opt-in feature", and "not all carriers subscribe to every CNAM database".
Our view: register CNAM because it is free and removes the "city, state" default, but do not expect it to fix answer rates on mobiles, where display is opt-in and spam labelling is decided by other signals. Twilio's US voice guidelines recommend SHAKEN/STIR signing for outbound calls,15 and Twilio sells a separate Branded Calling product, priced on the US voice page at $0.12 per call.10 If your outbound calls are being labelled as spam, our article on diagnosing a Spam Likely label covers the carrier-side redress routes. In Canada, Twilio's tooling offers no CNAM registration for local numbers at all,13 so plan the caller experience without it.
Toll-free verification, if the toll-free number will text
US and Canada Toll-free verification is required "for sending messages over Toll-Free phone numbers to the US and Canada".22 Since 31 January 2024, messages from unverified (Restricted or Pending) toll-free numbers are blocked with error 30032, and Twilio notes such blocked messages "are subject to messaging fees".22 A toll-free number used purely for voice needs no verification; this item only becomes relevant on the day you decide to text from it.
What Twilio states about the process:
- Submission is through the Console or the Messaging Compliance API; Twilio asks you to "allow approximately 3-5 business days".22
- A business registration number and its issuing authority are required "for all business types except SOLE_PROPRIETOR"; the accepted authorities include
EIN,CBNandPROVINCIAL_NUMBER, so US and Canadian businesses can both use their own registration numbers.23 - Verified numbers get "3 SMS segments per second by default, but can be increased".22
- Rejections for content or policy violations cannot be resubmitted; other rejections can be corrected and resubmitted.22
- Verification does not travel. Twilio lists both cases: a number moved to another account or subaccount ("verification records cannot transfer between accounts") and a number verified with a different provider before porting it to Twilio ("verification records cannot transfer between providers").22
That last point is the one that bites. If you port a toll-free number that texts today, budget for re-verification and a gap in outbound texting, and submit the verification as soon as the number lands on your account.
A2P 10DLC, if a local number will text
United States A2P 10DLC is "the standard that United States telecom carriers have put in place to ensure that SMS traffic to US end users through long code phone numbers is verified and consensual".16 Twilio is explicit that the carriers treat everything from a Twilio number as application-to-person: "Anyone using a 10DLC number with Twilio to send SMS messages to the US will need to register. This includes individuals and hobbyists".16
The scope is by destination. US-bound traffic means outbound messages to the US, Puerto Rico, the US Virgin Islands, Guam and American Samoa; outbound traffic to Canada, and inbound messages received on your number, are "not impacted".19 A Canadian business texting US customers from a Canadian local number is therefore inside the scheme, and Twilio accepts a Canadian Business Number as the tax ID for Standard and Low-Volume Standard brands.16 An unregistered number sending to the US gets error 30034, and Twilio's messaging rates still apply.19
What you register
Two things: a Brand (who is sending) and a Campaign (what you send, how people opt in, opt out and get help).16 The Campaign is attached to a Messaging Service, which "can only be linked with one Campaign at a time" and must hold your 10DLC numbers in its sender pool; Twilio says to add every number you plan to use before submitting, because on approval "all of the 10DLC phone numbers within the Campaign's Messaging Service are registered".17 A Brand can hold up to five Campaigns.17
Brand type sets your ceiling. Twilio's overview gives Sole Proprietor brands 1,000 segments a day to T-Mobile (about 3,000 across US carriers), Low-Volume Standard up to 2,000 a day to T-Mobile (about 6,000 across carriers), and Standard from 2,000 upward depending on Trust Score.16 Sole Proprietor is for those without a tax ID; Standard and Low-Volume Standard need one.16
Fees, as Twilio passes them through
| Fee | Amount | When charged |
|---|---|---|
| Brand registration, Sole Proprietor or Low-Volume Standard | $4.50 one-time | On registration with The Campaign Registry (TCR) |
| Brand registration, Standard (includes secondary vetting) | $46 one-time | On registration with TCR |
| Campaign vetting | $15 | At vetting |
| Campaign, Standard use case | $10 a month | On approval, then monthly until deactivated |
| Campaign, Low-volume mixed | $1.50 a month | As above |
| Campaign, Sole Proprietor | $2 a month | As above |
| Campaign, charity or 501(c)(3); emergency services | $3; $5 a month | As above |
| Authentication Plus retry (public for-profit brands) | $12.50 per retry | Each time the step is retried |
Scroll the table sideways to see every column.
All figures are from Twilio's A2P 10DLC fee article as updated on 26 September 2026, which also notes that TCR raised several fees on 1 August 2025 and that the brand fee is charged at creation "and your Brand may still be in an unverified state".18 On top of these, each US carrier charges a per-segment fee. On Twilio's US SMS price page, long-code outbound SMS carries $0.0035 for AT&T, $0.0045 for T-Mobile and $0.005 for Verizon, on top of the base $0.0083 per segment.12 Twilio's US SMS guidelines add penalties that are easy to miss: T-Mobile passes through a $1,000 fee for "10DLC Long Code Messaging Program Evasion" such as snowshoeing, and, after prior warning, "a $10,000 pass-through fee" for each unique content violation of its Code of Conduct.20
Plan for time as well as money. Twilio's registration guide says manual brand reviews "take seven business days or more" and, on the day we read it, that campaign reviews "are currently taking 10–15 days"; elsewhere in the same guide it says vetting "can take between two to three weeks".17 We would plan on three weeks and be pleased with less.
Canada
Canada There is no Canadian equivalent of 10DLC registration in Twilio's guidance. What Twilio does say is that "Canadian mobile carriers enforce strict filtering on A2P messages" and it recommends short codes or verified toll-free numbers "for optimal delivery results".21 Canadian short codes list a provisioning time of 12 to 16 weeks.21 Our view: for a business texting mostly Canadian customers, a verified toll-free number is the realistic route; for a mixed US and Canadian audience, the same verified toll-free number covers both countries under one process.22
Before any of this, ask whether you need to send texts at all. If the only plan is a missed-call text-back, our article on automatic text-back covers the consent rules alongside the registration work.
Porting an existing number into Twilio
The rules that govern porting between carriers are covered on our porting guide. This section is about Twilio's own process, which differs between the two countries more than most people expect.
United States
Twilio lists local numbers (mobile, VoIP, landline) and toll-free numbers as portable, with the caveat that "In rare cases, Twilio may not have geographic coverage for that number".24 Required: a Letter of Authorization (LOA), the name and address that match the losing carrier's Customer Service Record (CSR), a phone bill dated within the last 30 days, the current account number, and a PIN if the carrier uses one.24 Twilio's stated timeframe is "5 to 15 days for standard ports" and "up to 4 weeks or longer barring rejections", with 4 to 6 weeks for bulk ports of more than 50 numbers, and a maximum of 1,000 numbers per port.24
The single most useful line on that page: "The most common reason for a rejected port is incorrect name and/or address information", and the fix is to ask the current provider for the name and address on your CSR.24 The address on your bill is not always the one on the CSR.
For US local and mobile numbers there is also a Porting API, in Public Beta at the time of writing.27 It accepts up to 1,000 US non-toll-free numbers per request, requires a utility bill uploaded through the Documents API first, and does not support toll-free numbers.28 Twilio generates an electronic LOA and emails it to the authorised representative, who "has 30 days to sign this document or the port-in request will be canceled automatically".27 The target_port_in_date "must be at least 7 days in the future for US ports", and Twilio cannot guarantee it will be honoured by the losing carrier.28 Use the portability check first; it is cheap insurance against a request that dies on a number Twilio cannot serve.27
US toll-free numbers move by changing the RespOrg. Twilio's toll-free article notes that some providers offer a faster "Transfer to RespOrg" option and gives Twilio's RespOrg ID as TWI01.29 Our toll-free guide explains what a RespOrg is.
Canada
Canada Twilio ports Canadian local, mobile and toll-free numbers,25 but the mechanics are different:
- Where to submit. Canadian toll-free ports go through the Twilio Console; local and mobile ports go through a separate porting form, not the Console or the Porting API.25
- Paperwork. Twilio's Canadian LOA template, a copy of the most recent bill, the account number and a PIN if required. The guideline page says the LOA must be dated within the last 30 days;25 the help article tightens that to 15 days for toll-free.26 The service address must be a physical address, not a PO box.26
- The address quirk. For Canadian toll-free, Twilio's tool "only accepts American service addresses", so its help article tells you to enter a US address in the tool while the LOA itself "must show your actual Canadian service address", because that is what the losing provider checks.26
- The 90-minute text. "You will need to approve the port within a 90-minute timeframe from receiving the port approval SMS text from the losing provider", or the port is rejected.2526 Make sure whoever holds the line knows the text is coming and what it means.
- Timelines disagree. The guideline page says 5 to 7 working days after complete documentation;25 the help article gives "up to 4 weeks" for each number type.26 We would quote the longer figure to anyone depending on the date.
- Common rejections include an LOA signed by someone who is not the authorised user, a site address that does not match the losing provider's records, and a number that is part of a larger range that must be ported together or split first.26
Both countries: before and after the port date
Twilio's Canadian process says "do not close your account with your service provider and keep your numbers active" while the port is in progress, and that "It is critical to configure your number prior to the porting date".26 Both apply equally in the US. A ported number arrives with none of the registrations it had at the old provider: Twilio's port-in guide says to "fulfill all messaging and voice compliance requirements" before you use it,27 and toll-free verification records explicitly do not transfer between providers.22 Put the 10DLC campaign assignment, toll-free verification, CNAM and emergency address on the port's project plan, not after it.
Emergency addresses, if the number places calls
An emergency address matters when the number is used to place calls: a SIP desk phone, a softphone, a browser dialler. A number that only receives calls into a menu never originates a 911 call. Our emergency calling guide covers the legal side (Kari's Law, RAY BAUM'S Act and the CRTC's 9-1-1 rules); this section is the Twilio mechanics.
Twilio supports emergency address registration in only three countries: "Currently only US, Canada and UK are enabled for emergency address registration".30 In the US and Canada it supports both E911, where "The call automatically includes the caller's Twilio phone number and corresponding address information", and Basic 911, where the dispatcher has neither unless the caller says them.30 Calls from a number with no registered address are routed to "a national emergency location center", and Twilio charges for that.30
Twilio's figures: $75 per 911 call placed from a US or Canadian number without a registered emergency address, and $0.75 per number per month to associate one.31 The same $0.75 line appears on both the US and Canadian voice price pages.1011
The address must be one the 911 system recognises: "In the US and CA, the address must be recognized by the Master Street Address Guide (MSAG) database", and Twilio warns that the MSAG version "often differs from the equivalent US Postal Service address".30 Twilio's help article adds practical rules that save a support ticket: no ZIP+4 (five digits only), standard abbreviations without punctuation, two-letter state codes, no symbols such as & or # in name and address fields, a 32-character limit on company and friendly names, and never a PO box.31 The FriendlyName limit for emergency addresses is likewise 32 characters.4
With the API, create an Address with EmergencyEnabled set,4 attach it to the number as EmergencyAddressSid, then poll emergency_address_status until it reads registered (other values include pending-registration and registration-failure).3
const e = await client.addresses.create({
customerName: "Example Dental Ltd",
street: "100 Example St",
city: "Springfield",
region: "IL",
postalCode: "62701", // 5 digits, not ZIP+4
isoCountry: "US",
friendlyName: "HQ floor 2", // 32 characters max for emergency addresses
emergencyEnabled: true,
});
await client.incomingPhoneNumbers("PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
.update({ emergencyAddressSid: e.sid });
const pn = await client.incomingPhoneNumbers("PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").fetch();
console.log(pn.emergencyAddressStatus, pn.emergencyStatus);
Two operational details. To change an address you disassociate the old one, confirm the status reads unregistered, then associate the new one; Twilio says to "Allow 30 minutes between disassociation and re-association" in the US and Canada.30 And a registered emergency address must be removed before the number can be released.32 Twilio also requires that emergency calls are placed to a valid emergency number "from the same country as the From phone number", and that the number's webhook is configured "in case the emergency responder needs to call you back".30
What the numbers cost (US and Canada)
Twilio's list prices, dated as the pages themselves date them. Volume discounts and committed-use pricing exist and are not shown. Taxes and any regulatory surcharges on your invoice are outside the scope of this page.
| Item | United States | Canada | Source |
|---|---|---|---|
| Local number, per month | $1.15 | $1.15 | 10119 |
| Toll-free number, per month | $2.15 | $2.15 | 10119 |
| Receive a call on a local number, per minute | $0.0085 | $0.0085 | 1011 |
| Receive a call on a toll-free number, per minute | $0.0220 | $0.0220 | 1011 |
| Make a call to the US and Canada, per minute | $0.0140 | $0.0140 | 1011 |
| Emergency address, per number per month | $0.75 | $0.75 | 1011 |
| 911 call from a number with no registered address | $75 per call | $75 per call | 31 |
| Send or receive an SMS segment (US), before carrier fees | $0.0083 | Not checked | 12 |
| Bring-your-own number for messaging, per month (US) | $0.50 | Not checked | 12 |
Scroll the table sideways to see every column.
The US and Canadian voice pages both state "Pricing current as of August 2026"; the US SMS page states October 2026.101112 We did not check Canadian SMS pricing for this page, so it is marked as such rather than assumed equal. A few exceptions sit inside the "US and Canada" outbound rate on Twilio's tables: calls to Alaska list at $0.0945 a minute and to the Yukon at $0.1525.1011
A worked example for a menu that only answers calls: one local number taking 600 minutes of inbound calls in a month is $1.15 + 600 × $0.0085 = $6.25. The same traffic on a toll-free number is $2.15 + 600 × $0.0220 = $15.35. Forwarding those calls to staff mobiles adds outbound minutes at $0.0140 for each forwarded leg. None of this includes the registration fees above, which only apply once you text or brand outbound calls.
Releasing a number without regretting it
Releasing is a DELETE on the IncomingPhoneNumber. Twilio's API reference says it "releases it from your account. Twilio will no longer answer calls to this number and will stop charging the monthly fee", and warns: "Twilio might reclaim and assign the number to another customer, so delete numbers with caution."3
// Node.js
await client.incomingPhoneNumbers("PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").remove();
# curl
curl -X DELETE "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/IncomingPhoneNumbers/PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json" \
-u "$TWILIO_API_KEY:$TWILIO_API_SECRET"
What happens next, per Twilio's help centre: the number is reserved for your account for 10 days, after which it moves into testing and recycling before it is offered to anyone else.33 Within the 10 days you can repurchase it from the Released Numbers page, but billing restarts and "the restored phone number will be given a new Phone Number Sid", so anything keyed on the old SID breaks.33 After 10 days, the only route is a support request.33
A release checklist we would follow (our view, built from the points above):
- Search for the number everywhere it is published: website, signage, directory listings, invoices, email signatures. If it is printed anywhere you do not control, keep paying $1.15 a month for a forwarding period.
- If someone else will need the number, port it out rather than releasing it. A released number is gone once the 10 days pass.
- Unregister the emergency address first; Twilio will not release a number that still has one.32
- Remove it from any Messaging Service and campaign it belongs to, so that your registration records describe the numbers you actually use.
- Release by SID from code that logs what it released, and keep that log for at least the 10-day window.
The checklist: what to do, and when it matters
| To-do | Applies to | When it matters | Lead time and cost |
|---|---|---|---|
| Create and get approval for a Trust Hub business profile | US and Canadian businesses | Before any texting, CNAM or SHAKEN/STIR work; it gates all of them17 | 72 hours or more; no fee stated17 |
| Search, then buy by exact number with routing set | Every number | Always | Minutes; $1.15 or $2.15 a month1011 |
File an Address if address_requirements is not none | US toll-free per Twilio's price list; check every number9 | At purchase; the POST needs it | Minutes; free |
| Regulatory Bundle | Not required for US or Canadian numbers on the retrieval date7 | Re-check if Twilio adds either country to its regulations index | n/a |
| Register an emergency address | Numbers that place calls (SIP phones, softphones, diallers) | Before the first outbound call; $75 per unregistered 911 call31 | Minutes; $0.75 per number a month31 |
| CNAM display name | US local numbers only13 | When the number places calls to customers | 48-72 hours after approval; free1314 |
| A2P 10DLC brand and campaign | Local numbers texting US recipients, from either country19 | Before the first US-bound text; unregistered texts are blocked19 | Plan three weeks; from $4.50 + $15 and $1.50 to $10 a month1718 |
| Toll-free verification | Toll-free numbers texting US or Canadian recipients22 | Before the first text; unverified texts are blocked22 | About 3-5 business days22 |
| Get the CSR name and address before porting (US) | US ports | Before submitting; mismatches are the top rejection24 | One call to the old carrier |
| Canadian LOA, bill and the 90-minute approval text | Canadian ports | During the port; a missed text rejects it25 | 5-7 working days to 4 weeks2526 |
| Configure the number before the port date; keep the old service open | All ports | The days before the port26 | None |
| Redo verification, campaign, CNAM and 911 after a port | Ported numbers | Immediately on arrival; records do not transfer2227 | As for each item above |
| Unregister 911 address, then release by SID | Numbers you retire | At release; 10-day window to undo3233 | Repurchase restarts billing and changes the SID33 |
Scroll the table sideways to see every column.
None of these obligations is unique to Twilio. 10DLC and toll-free verification are carrier schemes, which Twilio's toll-free article places within "industry-wide, global moves to require registration for all A2P messaging traffic",22 and emergency-address rules come from the regulators, so a different CPaaS provider changes the API calls, not the list. What does differ by provider is tooling, prices and support for the Canadian cases, which is worth comparing before you commit a large number estate to one account. If you would rather not run this list at all, a hosted phone menu is the other path: ours is one, and the rest of the Twilio guides show what building it yourself involves.
Further reading
Longer research pieces on this topic, each with its own source list and a downloadable PDF.
Articles on this topic
Topics Auto attendant Call routing VoIP All topics
Sources
Every regulatory and pricing claim on this page links to the primary source it came from. Figures were checked on the date shown at the top of the page; rules and prices change, so verify before relying on one.
- Twilio Docs, "AvailablePhoneNumber Local resource" (endpoint, search filters, which filters are US/Canada only, PageSize, address_requirements and beta fields, code samples). Retrieved 26 Oct 2026
https://www.twilio.com/docs/phone-numbers/api/availablephonenumberlocal-resource - Twilio Docs, "AvailablePhoneNumber TollFree resource" (toll-free search endpoint and filters). Retrieved 26 Oct 2026
https://www.twilio.com/docs/phone-numbers/api/availablephonenumber-tollfree-resource - Twilio Docs, "IncomingPhoneNumber resource" (two-step provisioning, AreaCode, AddressSid, BundleSid, EmergencyAddressSid, emergency status fields, DELETE and its warning). Retrieved 26 Oct 2026
https://www.twilio.com/docs/phone-numbers/api/incomingphonenumber-resource - Twilio Docs, "Address resource" (required fields, EmergencyEnabled, AutoCorrectAddress, validation errors 21628 and 21629). Retrieved 26 Oct 2026
https://www.twilio.com/docs/usage/api/address - Twilio Help Center, "Understanding Address Requirements for Phone Numbers" (any, local and foreign requirements; whose address to file; resellers and subaccounts). Help Center article updated 30 Sep 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/223182868-Understanding-Address-Requirements-for-Phone-Numbers - Twilio Help Center, "Do all types of numbers require a validated address for Regulatory Compliance?" (system validation enforced only for Local requirements). Help Center article updated 21 Nov 2024; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/31156270403867-Do-all-types-of-numbers-require-a-validated-address-for-Regulatory-Compliance - Twilio, "Phone Number Regulations" country index (89 countries listed on the retrieval date; neither the United States nor Canada among them). Retrieved 26 Oct 2026. The per-country URLs /en-us/guidelines/us/regulatory and /ca/regulatory returned HTTP 404 on the same date
https://www.twilio.com/en-us/guidelines/regulatory - Twilio Docs, "Getting Started: Phone Number Regulatory Compliance" (why regulators require end-user identity; Bundles). Retrieved 26 Oct 2026
https://www.twilio.com/docs/phone-numbers/regulatory - Twilio, phone number price list (CSV): monthly price, inbound rates and an "Address Required" flag per country and number type. Downloaded 26 Oct 2026
https://assets.cdn.prod.twilio.com/pricing-csv/SiteNumbersPricing.csv - Twilio, Voice pricing: United States (call rates, number prices, emergency address fee, Branded Calling). Page states "Pricing current as of August 2026"; retrieved 26 oct 2026
https://www.twilio.com/en-us/voice/pricing/us - Twilio, Voice pricing: Canada. Page states "Pricing current as of August 2026"; retrieved 26 oct 2026
https://www.twilio.com/en-us/voice/pricing/ca - Twilio, SMS pricing: United States (per-segment rates, carrier pass-through fees, number prices). Page states "Pricing current as of October 2026"; retrieved 26 oct 2026
https://www.twilio.com/en-us/sms/pricing/us - Twilio Docs, "Brand your calls using CNAM" (Public Beta; US-only; display-name rules; propagation; toll-free and Canadian limits). Retrieved 26 Oct 2026
https://www.twilio.com/docs/voice/brand-your-calls-using-cnam - Twilio Docs, Trust Hub "CNAM" registration (free; outbound calls to US landlines; toll-free via support). Retrieved 26 Oct 2026
https://www.twilio.com/docs/trust-hub/registrations/cnam - Twilio, Voice Guidelines: United States (reachability, caller ID format, SHAKEN/STIR best practice, emergency calling). Retrieved 26 Oct 2026
https://www.twilio.com/en-us/guidelines/us/voice - Twilio Docs, "Programmable Messaging and A2P 10DLC" (who must register, Brand and Campaign, brand types and daily limits, tax ID rules). Retrieved 26 Oct 2026
https://www.twilio.com/docs/messaging/compliance/a2p-10dlc - Twilio Docs, "Direct Standard and Low-Volume Standard Registration Guide" (Customer Profile, Brand review, Campaign and Messaging Service, review times). Retrieved 26 Oct 2026
https://www.twilio.com/docs/messaging/compliance/a2p-10dlc/direct-standard-onboarding - Twilio Help Center, "Pricing and Fees for A2P 10DLC Service" (brand, vetting and monthly campaign fees; August 2025 TCR increases). Help Center article updated 26 Sep 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/1260803965530-Pricing-and-Fees-for-A2P-10DLC-Service - Twilio Help Center, "Shutdown of Unregistered 10DLC Messaging" (full block since 1 September 2023, error 30034, what counts as US-bound). Help Center article updated 18 May 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/14910496447771-Shutdown-of-Unregistered-10DLC-Messaging - Twilio, SMS Guidelines: United States (long code requires registration, toll-free requires verification, T-Mobile non-compliance fees). Retrieved 26 Oct 2026
https://www.twilio.com/en-us/guidelines/us/sms - Twilio, SMS Guidelines: Canada (carrier filtering of A2P on long codes; short code provisioning time). Retrieved 26 Oct 2026
https://www.twilio.com/en-us/guidelines/ca/sms - Twilio Help Center, "Toll-Free Message Verification for US/Canada" (who must verify, blocking dates, processing time, statuses, records do not transfer). Help Center article updated 1 Jun 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/5377174717595-Toll-Free-Message-Verification-for-US-Canada - Twilio Docs, Toll-free verification API onboarding (business registration number and authority fields). Retrieved 26 Oct 2026
https://www.twilio.com/docs/messaging/compliance/toll-free/api-onboarding - Twilio, Porting Guidelines: United States (required information, timeframes, most common rejection, 1,000 numbers per port). Retrieved 26 Oct 2026
https://www.twilio.com/en-us/guidelines/us/porting - Twilio, Porting Guidelines: Canada (LOA dated within 30 days, 5-7 working days, 90-minute SMS approval, how to submit). Retrieved 26 Oct 2026
https://www.twilio.com/en-us/guidelines/ca/porting - Twilio Help Center, "Canada Porting" (requirements per number type, process steps, timelines of up to 4 weeks, common rejections). Help Center article updated 17 Jul 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/226194747-Canada-Porting - Twilio Docs, "Port phone numbers using Twilio APIs" (Porting API in Public Beta; electronic LOA; 30 days to sign; statuses). Retrieved 26 Oct 2026
https://www.twilio.com/docs/phone-numbers/port-in - Twilio Docs, "PortIn resource" (US only, no toll-free, utility bill required, target date at least 7 days out). Retrieved 26 Oct 2026
https://www.twilio.com/docs/phone-numbers/port-in/port-in-request-api - Twilio Help Center, "Buying a toll free number with Twilio" (800-prefix scarcity, AddressSid in the purchase example, RespOrg TWI01, charge on purchase). Help Center article updated 22 May 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/223183168-Buying-a-toll-free-number-with-Twilio - Twilio Docs, "Emergency Calling for Programmable Voice" (countries with address registration, E911 and Basic 911, MSAG, the unregistered-call fee, change procedure). Retrieved 26 Oct 2026
https://www.twilio.com/docs/voice/tutorials/emergency-calling-for-programmable-voice - Twilio Help Center, "How to Associate an Emergency Address to Your Twilio Phone Numbers" ($75 per unregistered 911 call, $0.75 per number per month, address formatting rules). Help Center article updated 29 Sep 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/15337062865563-How-to-Associate-an-Emergency-Address-to-Your-Twilio-Phone-Numbers - Twilio Help Center, "How to Cancel or Release a Twilio Number" (unregister the emergency address first; Console and API release). Help Center article updated 21 May 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/223183028-How-to-Cancel-or-Release-a-Twilio-Number - Twilio Help Center, "Restoring a previously released phone number" (10-day hold, new PN SID, billing restarts). Help Center article updated 22 May 2026; read via the Help Center API, retrieved 26 oct 2026
https://support.twilio.com/hc/en-us/articles/223183108-Restoring-a-previously-released-phone-number
