This guide will show you how you can use Python to search through, retrieve, and modify the messages you send with Programmable SMS.
These examples will use the Twilio Python SDK and some very powerful Twilio features. It's very easy - let's get started!
When you send an SMS or MMS message via the Twilio REST API, use the <Message> verb in TwiML, or receive a message on one of your Twilio numbers, Twilio creates a Message instance resource. The Messages list resource represents the set of messages sent from and received by an account.
Retrieving sent and received messages from history is done by querying the Messages list resource. Here you can see how to retrieve all messages from your account:
If you'd like to have Twilio narrow down this list of messages for you, you can do so by specifying a To number, From number, and a DateSent. The following example shows passing all three but you can pass any combination of parameters you need. This example filters messages for those sent from a specific number to another specific number on or after a certain date:
If you know the message SID (i.e. the message's unique identifier), then you can retrieve that specific message directly.
How might you know the SID?
When sending a message using the REST API, you will receive a Message instance resource as the response from Twilio. Using this, inspect and store the Sid property of the resource. Read more about sending messages in our guide on the topic.
When using the <Message> verb in TwiML, you will need to specify a webhook URL the action attribute to have Twilio call your webhook when the status of the message changes. Your webhook will be passed a MessageSid parameter identifying the incoming message. Read our guide on tracking message status for more on how to do this.
However you obtain the SID, you can immediately request the message using the above code, or, you can save the SID in a database for later recall.
If you want to delete a message from history, you can easily do so by deleting the Message instance resource.
Perhaps you want to redact the body of the message for security purposes, but you don't want to delete the message from history entirely. Redacting a message is done by posting an empty body to the message resource: