# SMS status callback POST Payload sent by SignalWire to your SMS Status Callback URL when the status of an SMS/MMS message changes. Configure this callback using the `StatusCallback` parameter when [sending an outgoing message](/docs/compatibility-api/rest/messages/create-message). There are 8 possible message statuses: | Status | Description | |--------|-------------| | `queued` | The API request was processed and the message is waiting to be sent. | | `sending` | The message is being transmitted to the nearest upstream carrier. | | `sent` | The nearest upstream carrier has accepted the message. | | `delivered` | The nearest upstream carrier confirmed receipt of the message. | | `undelivered` | SignalWire received notice from the upstream carrier that the message was not delivered. | | `failed` | SignalWire could not send the message. There is no charge for failed messages. | | `receiving` | SignalWire has received and is currently processing an inbound message. | | `received` | The inbound message has been received by a number in your account. | SignalWire only marks a message as `delivered` when it receives a Delivery Receipt (DLR) from the receiving carrier confirming entry into the end carrier's network. `sent` means the message left SignalWire and reached the downstream peer. Some carriers send delayed DLRs; others send none at all. MMS messages never receive DLRs, so they will only ever reach `sent` status. Reference: https://signalwire.com/docs/compatibility-api/rest/messages/webhooks/sms-status-callback ## OpenAPI 3.1 Webhook Specification ```yaml openapi: 3.1.0 info: title: compatibility version: 1.0.0 paths: {} webhooks: sms-status-callback: post: operationId: sms-status-callback summary: SMS status callback description: >- Payload sent by SignalWire to your SMS Status Callback URL when the status of an SMS/MMS message changes. Configure this callback using the `StatusCallback` parameter when [sending an outgoing message](/docs/compatibility-api/rest/messages/create-message). There are 8 possible message statuses: | Status | Description | |--------|-------------| | `queued` | The API request was processed and the message is waiting to be sent. | | `sending` | The message is being transmitted to the nearest upstream carrier. | | `sent` | The nearest upstream carrier has accepted the message. | | `delivered` | The nearest upstream carrier confirmed receipt of the message. | | `undelivered` | SignalWire received notice from the upstream carrier that the message was not delivered. | | `failed` | SignalWire could not send the message. There is no charge for failed messages. | | `receiving` | SignalWire has received and is currently processing an inbound message. | | `received` | The inbound message has been received by a number in your account. | SignalWire only marks a message as `delivered` when it receives a Delivery Receipt (DLR) from the receiving carrier confirming entry into the end carrier's network. `sent` means the message left SignalWire and reached the downstream peer. Some carriers send delayed DLRs; others send none at all. MMS messages never receive DLRs, so they will only ever reach `sent` status. responses: '200': description: Webhook received successfully requestBody: content: application/json: schema: type: object properties: MessageStatus: $ref: >- #/components/schemas/WebhooksSmsStatusCallbackPayloadContentApplicationJsonSchemaMessageStatus description: >- The current status of the message at the time of the callback. One of: `queued`, `sending`, `sent`, `delivered`, `undelivered`, `failed`, `receiving`, `received`. ErrorCode: type: string description: >- If the message has failed or is undelivered, the error code may provide more information about what went wrong. MessageSid: type: string description: The unique ID of this message. AccountSid: type: string description: >- The unique ID of the project this message is associated with. From: type: string description: The From number of the message. To: type: string description: The To number of the message. Body: type: string description: The body of the message. NumMedia: type: integer description: >- The number of media files that were included with the message. NumSegments: type: integer description: >- The number of segments that make up the entire message. If the body exceeds 160 GSM-7 characters or 70 UCS-2 characters, it is automatically split into smaller segments that are annotated for reconstruction on the recipient handset. required: - MessageStatus - MessageSid - AccountSid - From - To - Body - NumMedia - NumSegments components: schemas: WebhooksSmsStatusCallbackPayloadContentApplicationJsonSchemaMessageStatus: type: string enum: - queued - sending - sent - delivered - undelivered - failed - receiving - received description: >- The current status of the message at the time of the callback. One of: `queued`, `sending`, `sent`, `delivered`, `undelivered`, `failed`, `receiving`, `received`. title: >- WebhooksSmsStatusCallbackPayloadContentApplicationJsonSchemaMessageStatus ```