> 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.

# send_sms

> Send an outbound message to a PSTN phone number.

Send an outbound message to a PSTN phone number.

## **Properties**

**`send_sms`** `object` — required

An object that accepts the following properties. Supports both SMS and MMS messages. See [message types](#message-types) below for the properties specific to each type.

---

## **Message types**

The `send_sms` object accepts the following properties depending on the message type:

#### SMS

**`send_sms.to_number`** `string` — required

Phone number to send SMS message to in e.164 format

---

**`send_sms.from_number`** `string` — required

Phone number SMS message will be sent from

---

**`send_sms.body`** `string` — required

Body of the text message

---

**`send_sms.region`** `string` — default: Chosen based on account preferences or device location

Region of the world to originate the message from

---

**`send_sms.tags`** `string[]`

Array of tags to associate with the message to facilitate log searches

---

**`send_sms.status_callback`** `string`

URL to receive delivery status callbacks for the outbound message (e.g., `queued`, `sent`, `delivered`, `failed`). Default is not set. See [Status callbacks](#status-callbacks) below.

---

#### MMS

**`send_sms.to_number`** `string` — required

Phone number to send SMS message to in e.164 format

---

**`send_sms.from_number`** `string` — required

Phone number SMS message will be sent from

---

**`send_sms.media`** `string[]` — required

Array of media URLs to include in the message

---

**`send_sms.body`** `string`

Optional text to accompany the media

---

**`send_sms.region`** `string` — default: Chosen based on account preferences or device location

Region of the world to originate the message from

---

**`send_sms.tags`** `string[]`

Array of tags to associate with the message to facilitate log searches

---

**`send_sms.status_callback`** `string`

URL to receive delivery status callbacks for the outbound message (e.g., `queued`, `sent`, `delivered`, `failed`). Default is not set. See [Status callbacks](#status-callbacks) below.

---

## **Variables**

Set by the method:

* **send\_sms\_result:** (out) `success` | `failed`.

## **Status callbacks**

#### Status callbacks are advisory

Status callbacks are asynchronous, best-effort HTTP notifications: delivery can be delayed or fail silently — if your server is unreachable, the callback simply never arrives. Don't gate time-critical or business-critical actions solely on receiving one. Confirm state via the REST API before acting, or use a transport with visible failure modes — see [Status callback reliability](/docs/platform/webhooks#status-callback-reliability).

When `status_callback` is set, SignalWire sends an HTTP `POST` to that URL each time the outbound
message transitions to a new state. Callback delivery is independent of SWML execution: the document
continues as soon as the message is accepted, and delivery-state callbacks fire afterwards.

The callback uses the same payload as other outbound messages sent through SignalWire.

See the [Message status callback](/docs/apis/rest/webhooks/message-status-callback)
webhook page for the full field reference and the list of possible `status` values.

## **Examples**

#### SMS

Send a text-only message:

#### YAML

```yaml
version: 1.0.0
sections:
  main:
    - send_sms:
        from_number: "+155512312345"
        to_number: "+15555554321"
        body: "Hi, I hope you're well."
```

#### JSON

```json
{
  "version": "1.0.0",
  "sections": {
    "main": [
      {
        "send_sms": {
          "from_number": "+155512312345",
          "to_number": "+15555554321",
          "body": "Hi, I hope you're well."
        }
      }
    ]
  }
}
```

#### MMS

Send a message with media attachment:

#### YAML

```yaml
version: 1.0.0
sections:
  main:
    - send_sms:
        from_number: "+155512312345"
        to_number: "+15555554321"
        media: ["https://example.com/image.jpg"]
        body: "Check out this image!"
```

#### JSON

```json
{
  "version": "1.0.0",
  "sections": {
    "main": [
      {
        "send_sms": {
          "from_number": "+155512312345",
          "to_number": "+15555554321",
          "media": [
            "https://example.com/image.jpg"
          ],
          "body": "Check out this image!"
        }
      }
    ]
  }
}
```

#### Status callbacks

Send a message and receive delivery status updates at a callback URL:

#### YAML

```yaml
version: 1.0.0
sections:
  main:
    - send_sms:
        from_number: "+155512312345"
        to_number: "+15555554321"
        body: "Hi, I hope you're well."
        status_callback: "https://example.com/message_status"
```

#### JSON

```json
{
  "version": "1.0.0",
  "sections": {
    "main": [
      {
        "send_sms": {
          "from_number": "+155512312345",
          "to_number": "+15555554321",
          "body": "Hi, I hope you're well.",
          "status_callback": "https://example.com/message_status"
        }
      }
    ]
  }
}
```