# Get an SMS

Returns the details and current status of an SMS you sent through the [send endpoint](/docs/api/send-sms/) or any other route.

```text
GET https://api.diarybook.com/{authKey}/v2/sms/{reference}
```

## Request

### Path parameters

| Parameter | Description |
|-----------|-------------|
| `authKey` | Your API key. See [Authentication](/docs/api/http-api/#authentication). |
| `reference` | Our reference for the message (beginning `msg_sms_`), or the `senderRef` you supplied when sending it. |
{.table}

There is no request body.

### Example request

```bash
curl "https://api.diarybook.com/YOUR_API_KEY/v2/sms/msg_sms_Xk3pR9bTq2LmZa7vN4wY"
```

Or by your own reference:

```bash
curl "https://api.diarybook.com/YOUR_API_KEY/v2/sms/ORDER-10482"
```

The simplest approach is to call the `self` link returned by [Send an SMS](/docs/api/send-sms/#200-ok).

## Response

### 200 OK

```json
{
  "reference": "msg_sms_Xk3pR9bTq2LmZa7vN4wY",
  "to": "+353871234567",
  "from": "MYCOMPANY",
  "text": "Your order 10482 has been dispatched and will arrive tomorrow.",
  "status": "Delivered",
  "size": 62,
  "parts": 1,
  "isUnicode": false,
  "priceExTax": 0.0650,
  "priceIncTax": 0.0800,
  "currency": "EUR",
  "country": "Ireland",
  "senderRef": "ORDER-10482",
  "sendDate": "2026-10-14T09:30:12Z",
  "links": [
    {
      "href": "https://api.diarybook.com/YOUR_API_KEY/v2/sms/msg_sms_Xk3pR9bTq2LmZa7vN4wY",
      "rel": "self"
    }
  ]
}
```

Prices in the example are illustrative. Your own prices are on the [pricing page](/pricing/).

| Field | Type | Description |
|-------|------|-------------|
| `reference` | string | Our unique reference for the message. |
| `to` | string | The recipient's mobile number. |
| `from` | string | The sender ID or number the message was sent from. |
| `text` | string | The message text. |
| `status` | string | The message's current status, such as `Sent` or `Delivered`, or an error code if it wasn't sent. See [Status and error codes](/docs/reference/sms-status-codes/). |
| `size` | integer | The number of characters in `text`. |
| `parts` | integer | The number of SMS parts the message was split into. See [SMS message parts](/docs/reference/sms-message-parts/). |
| `isUnicode` | boolean | `true` if the message was sent as Unicode because it contains characters outside the GSM 7-bit alphabet. |
| `priceExTax` | number | The price of the message, excluding tax. |
| `priceIncTax` | number | The price of the message, including tax. |
| `currency` | string | The currency of the prices, for example `EUR`. |
| `country` | string | The destination country, taken from the mobile number. |
| `senderRef` | string | The `senderRef` you supplied when sending, or `null`. |
| `sendDate` | string | UTC, ISO 8601. When the message was sent; if it hasn't been sent yet, when it is due to be sent. |
| `links` | array | A `self` link for this message. |
{.table}

### 204 No Content

No message matches `reference`. The body is empty. Check the reference for typing errors; a `senderRef` must match exactly.

### Errors

| Status | Body | Cause |
|--------|------|-------|
| `400` | Plain-text message | The request couldn't be processed. |
| `401` | *(empty)* | The API key is missing or not recognised. |
| `429` | *(empty)* | Rate limit exceeded. See [Rate limits](/docs/api/http-api/#rate-limits). |
| `500` | `A server error occurred` | A problem on our side. Retry later. |
{.table}

## Checking delivery

**Sent** means the message has been passed to the mobile network; **Delivered** means the network has confirmed it reached the phone. A phone that's switched off or out of coverage can leave a message at **Sent** until the network delivers it or gives up. See [Delivery reports](/docs/replies-and-reports/delivery-reports/).

If you poll for status:

- Wait at least a minute before the first check, and lengthen the gap between later checks.
- Stop once the status is **Delivered** or an error code.
- Respect `429` responses; polling counts against your [rate limits](/docs/api/http-api/#rate-limits).

## Related

- [Send an SMS](/docs/api/send-sms/)
- [DiaryBook API overview](/docs/api/http-api/)
- [Delivery reports](/docs/replies-and-reports/delivery-reports/)
- [Status and error codes](/docs/reference/sms-status-codes/)

---
Source: https://iflow.net/docs/api/get-sms/
