# Update a Message POST https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/Messages/{Sid} Content-Type: application/x-www-form-urlencoded Update a message body after it has been sent. Currently, the only supported update is redacting the message by setting the body to an empty string. Messages that are still in progress (queued or initiated status) cannot be updated. #### 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/update-message ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: compatibility version: 1.0.0 paths: /Accounts/{AccountSid}/Messages/{Sid}: post: operationId: update-message summary: Update a Message description: >- Update a message body after it has been sent. Currently, the only supported update is redacting the message by setting the body to an empty string. Messages that are still in progress (queued or initiated status) cannot be updated. #### 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). tags: - subpackage_messages parameters: - name: AccountSid in: path description: >- The unique identifier of the project that sent or received this message. required: true schema: type: string format: uuid - name: Sid in: path description: A unique ID that identifies this specific message. required: true schema: type: string format: uuid - name: Authorization in: header description: >- 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) ``` required: true schema: type: string responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/MessageResponse' '400': description: >- The request was invalid or cannot be processed. Check the error details for more information. content: application/json: schema: $ref: '#/components/schemas/CompatibilityErrorResponse' '401': description: Authentication failed. Please verify your credentials and try again. content: application/json: schema: $ref: '#/components/schemas/CompatibilityErrorResponse' '404': description: >- The requested resource was not found. Please verify the resource identifier. content: application/json: schema: $ref: '#/components/schemas/CompatibilityErrorResponse' '422': description: >- The request could not be processed due to validation errors. Check the error details for more information. content: application/json: schema: $ref: '#/components/schemas/CompatibilityErrorResponse' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateMessageRequest' servers: - url: https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01 components: schemas: UpdateMessageRequest: type: object properties: Body: type: string description: >- The new body of the message. Must be an empty string to redact the message content. required: - Body description: Request body for updating (redacting) a message. title: UpdateMessageRequest MessageDirection: type: string enum: - inbound - outbound-api - outbound-call - outbound-reply description: Message direction. title: MessageDirection MessageStatus: type: string enum: - queued - initiated - sent - failed - delivered - undelivered - received description: Message status. title: MessageStatus MessageSubresourceUris: type: object properties: media: type: string description: The URI for media. required: - media description: Message subresource URIs. title: MessageSubresourceUris MessageResponse: type: object properties: account_sid: type: string format: uuid description: >- The unique identifier of the project that sent or received this message. api_version: type: string description: >- The version number of the SignalWire cXML REST API used to handle this message. body: type: - string - 'null' description: >- The text of the message. Up to 1600 characters long. May be null if filtered for spam. num_segments: type: integer description: The number of segments that make up the entire message. num_media: type: integer description: The number of media files that were included with the message. date_created: type: string description: The date and time the message was created in RFC 2822 format. date_sent: type: - string - 'null' description: >- The date and time the message was sent in RFC 2822 format, or null if not yet sent. date_updated: type: string description: The date and time the message was last updated in RFC 2822 format. direction: $ref: '#/components/schemas/MessageDirection' description: The direction of the message. error_code: type: - string - 'null' description: >- If an error has occurred on the message, the error code will give you a specific code, or null if no error. error_message: type: - string - 'null' description: >- A human readable description of the error that occurred, or null if no error. from: type: string description: The phone number in E.164 format that sent the message. price: type: - number - 'null' format: double description: >- The cost of the individual message billed to your project, or null if not yet calculated. price_unit: type: string description: The currency in which `price` is charged as. sid: type: string format: uuid description: A unique ID that identifies this specific message. status: $ref: '#/components/schemas/MessageStatus' description: Current status of the message. to: type: string description: The phone number in E.164 format that received the message. messaging_service_sid: type: - string - 'null' format: uuid description: >- If a number group was used when sending an outbound message, the number group's ID will be present, or null otherwise. uri: type: string description: The URI of this particular message. subresource_uris: $ref: '#/components/schemas/MessageSubresourceUris' description: The URIs for any subresources associated with this message. required: - account_sid - api_version - body - num_segments - num_media - date_created - date_sent - date_updated - direction - error_code - error_message - from - price - price_unit - sid - status - to - messaging_service_sid - uri - subresource_uris description: Response containing a single message. title: MessageResponse CompatibilityErrorResponse: type: object properties: code: type: integer description: Error code. message: type: string description: Error message. more_info: type: string description: URL for more information about the error. status: type: integer description: HTTP status code. required: - code - message - more_info - status description: Error response model. title: CompatibilityErrorResponse securitySchemes: SignalWireBasicAuth: type: http scheme: basic description: >- 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) ``` ``` ## SDK Code Examples ```python import requests url = "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages/Sid" payload = "" headers = { "Authorization": "Basic :", "Content-Type": "application/x-www-form-urlencoded" } response = requests.post(url, data=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages/Sid'; const options = { method: 'POST', headers: { Authorization: 'Basic :', 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams('') }; 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/Sid" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("Authorization", "Basic :") req.Header.Add("Content-Type", "application/x-www-form-urlencoded") 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/Sid") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Basic :' request["Content-Type"] = 'application/x-www-form-urlencoded' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages/Sid") .header("Authorization", "Basic :") .header("Content-Type", "application/x-www-form-urlencoded") .asString(); ``` ```php request('POST', 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages/Sid', [ 'form_params' => null, 'headers' => [ 'Authorization' => 'Basic :', 'Content-Type' => 'application/x-www-form-urlencoded', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages/Sid"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Basic :"); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Basic :", "Content-Type": "application/x-www-form-urlencoded" ] let request = NSMutableURLRequest(url: NSURL(string: "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Messages/Sid")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" 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() ```