> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # List all Messages GET https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/Messages Lists the account's messages. Each message has a SID used for delivery inspection, redaction, deletion, or media access. The SignalWire REST [Messages API](/docs/apis/rest/messages/create-message) sends and redacts JSON requests, while [Message logs](/docs/apis/rest/message-logs/list-message-logs) provide a read-only history. #### Permissions The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Messaging_. [Learn more about API scopes](/docs/platform/your-signalwire-api-space). Reference: https://signalwire.com/docs/compatibility-api/rest/messages/list-messages ## Authentication - `Authorization` header (basic auth, required) — SignalWire Basic Authentication using Project ID and API Token. The client sends HTTP requests with the Authorization header containing the word Basic followed by a space and a base64-encoded string of project_id:token. The project ID will be used as the username and the API token as the password. Example: ``` Authorization: Basic base64(project_id:token) ``` ## Request ### Path parameters - `AccountSid` (string, required) — The unique identifier of the project that sent or received this message. ### Query parameters - `DateSent` (string, optional) — Only return messages sent on this particular date, formatted as YYYY-MM-DD in UTC. - `DateSent<` (string, optional) — Only return messages sent before this date, formatted as YYYY-MM-DD in UTC. - `DateSent>` (string, optional) — Only return messages sent after this date, formatted as YYYY-MM-DD in UTC. - `From` (string, optional) — The phone number in E.164 format. For inbound messages, this will be the remote phone number who sent the message. For outbound messages, this will be one of your SignalWire phone numbers. - `To` (string, optional) — The phone number in E.164 format that received the message. For inbound messages, this is one of your SignalWire phone numbers; for outbound messages, this is the remote phone number that received the message. - `Status` (enum, optional) — Current status of the message. - Allowed values: `queued`, `initiated`, `sent`, `failed`, `delivered`, `undelivered`, `received` - `Page` (integer, optional, default: 0) — The page number to retrieve. Default is 0. - `PageSize` (integer, optional, default: 50) — The number of items per page. Default is 50, maximum is 1000. - `PageToken` (string, optional) — The token for cursor-based pagination. Must start with 'PA' or 'PB'. ## Response ### 200 The request has succeeded. - `uri` (string, required) — The URI of the current page. - `first_page_uri` (string, required) — The URI of the first page. - `next_page_uri` (string, required, nullable) — The URI of the next page, or null if there are no more pages. - `previous_page_uri` (string, required, nullable) — The URI of the previous page, or null if this is the first page. - `page` (integer, required) — The current page number. - `page_size` (integer, required) — The number of items per page. - `messages` (list of Message, required) — List of messages. ## Errors ### 400 Bad Request Error The request was invalid or cannot be processed. Check the error details for more information. - `code` (integer, required) — Error code. - `message` (string, required) — Error message. - `more_info` (string, required) — URL for more information about the error. - `status` (integer, required) — HTTP status code. ### 401 Unauthorized Error Authentication failed. Please verify your credentials and try again. - `code` (integer, required) — Error code. - `message` (string, required) — Error message. - `more_info` (string, required) — URL for more information about the error. - `status` (integer, required) — HTTP status code. ### 422 Unprocessable Entity Error The request could not be processed due to validation errors. Check the error details for more information. - `code` (integer, required) — Error code. - `message` (string, required) — Error message. - `more_info` (string, required) — URL for more information about the error. - `status` (integer, required) — HTTP status code. ## Types ### Message Message model. - `account_sid` (string, required) — The unique identifier of the project that sent or received this message. - `api_version` (string, required) — The version number of the SignalWire cXML REST API used to handle this message. - `body` (string, required, nullable) — The text of the message. Up to 1600 characters long. May be null if filtered for spam. - `num_segments` (integer, required) — The number of segments that make up the entire message. - `num_media` (integer, required) — The number of media files that were included with the message. - `date_created` (string, required) — The date and time the message was created in RFC 2822 format. - `date_sent` (string, required, nullable) — The date and time the message was sent in RFC 2822 format, or null if not yet sent. - `date_updated` (string, required) — The date and time the message was last updated in RFC 2822 format. - `direction` (enum, required) — The direction of the message. - Allowed values: `inbound`, `outbound-api`, `outbound-call`, `outbound-reply` - `error_code` (string, required, nullable) — If an error has occurred on the message, the error code will give you a specific code, or null if no error. - `error_message` (string, required, nullable) — A human readable description of the error that occurred, or null if no error. - `from` (string, required) — The phone number in E.164 format that sent the message. - `price` (float, required, nullable) — The cost of the individual message billed to your project, or null if not yet calculated. - `price_unit` (string, required) — The currency in which `price` is charged as. - `sid` (string, required) — A unique ID that identifies this specific message. - `status` (enum, required) — Current status of the message. - Allowed values: `queued`, `initiated`, `sent`, `failed`, `delivered`, `undelivered`, `received` - `to` (string, required) — The phone number in E.164 format that received the message. - `messaging_service_sid` (string, required, nullable) — If a number group was used when sending an outbound message, the number group's ID will be present, or null otherwise. - `uri` (string, required) — The URI of this particular message. - `subresource_uris` (MessageSubresourceUris, required) — The URIs for any subresources associated with this message. ### MessageSubresourceUris Message subresource URIs. - `media` (string, required) — The URI for media. ## Examples **Response** ```json { "uri": "/api/laml/2010-04-01/Accounts/ea108133-d6b3-407c-9536-9fad8a929a6a/Messages?Page=0&PageSize=50", "first_page_uri": "/api/laml/2010-04-01/Accounts/ea108133-d6b3-407c-9536-9fad8a929a6a/Messages?Page=0&PageSize=50", "next_page_uri": "/api/laml/2010-04-01/Accounts/ea108133-d6b3-407c-9536-9fad8a929a6a/Messages?Page=1&PageSize=50&PageToken=PA0a059168ead041af", "previous_page_uri": null, "page": 0, "page_size": 50, "messages": [ { "account_sid": "ea108133-d6b3-407c-9536-9fad8a929a6a", "api_version": "2010-04-01", "body": "Hello World!", "num_segments": 1, "num_media": 1, "date_created": "Mon, 13 Aug 2018 21:38:46 +0000", "date_sent": "Mon, 13 Aug 2018 21:38:46 +0000", "date_updated": "Mon, 13 Aug 2018 21:38:46 +0000", "direction": "inbound", "error_code": "30001", "error_message": "Queue overflow", "from": "+15551234567", "price": 0.005, "price_unit": "USD", "sid": "0a059168-ead0-41af-9d1f-343dae832527", "status": "queued", "to": "+15557654321", "messaging_service_sid": "b3877c40-da60-4998-90ad-b792e98472ms", "uri": "/api/laml/2010-04-01/Accounts/ea108133-d6b3-407c-9536-9fad8a929a6a/Messages/0a059168-ead0-41af-9d1f-343dae832527.json", "subresource_uris": { "media": "/api/laml/2010-04-01/Accounts/ea108133-d6b3-407c-9536-9fad8a929a6a/Messages/0a059168-ead0-41af-9d1f-343dae832527/Media.json" } } ] } ``` **SDK Code** ```python import requests url = "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages" response = requests.get(url, auth=("", "")) print(response.json()) ``` ```javascript const url = 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages'; const credentials = btoa(":"); const options = {method: 'GET', headers: {Authorization: `Basic ${credentials}`}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages" req, _ := http.NewRequest("GET", url, nil) req.SetBasicAuth("", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request.basic_auth("", "") response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages") .basicAuth("", "") .asString(); ``` ```php request('GET', 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages', [ 'headers' => [ ], 'auth' => ['', ''], ]); echo $response->getBody(); ``` ```csharp using RestSharp; using RestSharp.Authenticators; var client = new RestClient("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages"); client.Authenticator = new HttpBasicAuthenticator("", ""); var request = new RestRequest(Method.GET); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let credentials = Data(":".utf8).base64EncodedString() let headers = ["Authorization": "Basic \(credentials)"] let request = NSMutableURLRequest(url: NSURL(string: "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```