Release Project Numbers based off CSV

The Python script example below will delete numbers from your SignalWire Space based on a CSV file of the intended numbers to be deleted.

To quickly run this code, check out our recipe below and replace the variables with your own!

Or, read our step by step walkthrough to learn more about this snippet!

Why do you need it?

At some point, you may need to release a large amount of numbers in order to purchase new ones. This can be tedious to delete one by one, so this example shows one way that you can release numbers in bulk with ease.

What does it do?

This code snippet will read a CSV of numbers that you want to delete, compare it with the full list of numbers within your project, and release all the ones that match the CSV. Please note: the CSV file containing the numbers to be deleted must be in the same folder as the below script

System/Technical specifications

For this code, the SignalWire Python SDK will need to be installed. It can be accessed here: SignalWire Python SDK Documentation.

What variables change?

ProjectID - Your project ID is an alphanumeric string that tells the SignalWire SDK where to find your project. You can find this in an easily copyable format by going to yourSignalWire Portal and clicking the API tab on the left hand side.

AuthToken - Your Auth Token is an alphanumeric string that helps to authenticate your HTTP requests to SignalWire. You can create this (if you haven’t already) or copy this in an easily copyable format by going to your SignalWire Portal and clicking the API tab. If you have not created an API token, press the blue new button. If you have, click show and copy the string.

SpaceURL - Your space URL is the domain of your space, i.e. example.signalwire.com. This can also be found in an easily copyable format within the API tab in your SignalWire space.

You will need to replace the name ‘Numbers.csv’ with the name of your CSV file.

Step by step guide with the code

from signalwire.rest import Client as signalwire_client
import csv

# Replace project ID, auth token, and space URL
client = signalwire_client("ProjectID", "AuthToken",

signalwire_space_url='YOURSPACE.signalwire.com')

# List and print all numbers on account
incoming_phone_numbers = client.incoming_phone_numbers.list()
print("Total Numbers -- " + str(len(incoming_phone_numbers)))

# create empty array to store numbers targeted for deletion
results = []

# Open CSV file with numbers to delete
with open("Numbers.csv", 'r', encoding='utf-8-sig') as csvfile:
    reader = csv.reader(csvfile)

    # Change to E164 format if it's not already in that format
    for row in reader:
        if "+" not in row[0]:
            results.append("+" + row[0])
        else:
            results.append(row[0])
print(results)

# Loop through all account numbers, if number exists in Results array, print to console and release it
for record in incoming_phone_numbers:
    if record.phone_number in results:
        print("deleting number -- " + record.phone_number)
        client.incoming_phone_numbers(record.sid).delete()

📘

Please Note

The CSV file containing the numbers to be deleted must be in the same folder as the script. Otherwise, you will need to specify the proper path to your CSV when opening the file.

Getting Started

If you are looking for more information about using SignalWire, refer to our Getting Started guide.

Please feel free to reach out to us on our Community Slack or create a Support ticket if you need guidance!

Start a free trial
If you would like to test this example out, you can create a SignalWire account and space here.


Did this page help you?