---
title: "List business-scoped SMS messages, including definitive failed send attempts."
method: GET
path: "/v1/sms/messages"
---

# List business-scoped SMS messages, including definitive failed send attempts.

`GET /v1/sms/messages`

## Request

- Base URL: `https://www.kaicalls.com/api`
- URL: `https://www.kaicalls.com/api/v1/sms/messages`
- Auth: HTTP bearer

Requires sms:read. Successful messages and provider-rejected outbound attempts share one evidence stream. Every row includes status, to, and timestamp; failed rows have status "failed" and a provider code. A null code means no definitive provider failure was recorded. Compliance-blocked requests are not provider send attempts and therefore do not create failed message rows.

## Query parameters

- `conversation_id` string
- `direction` 'inbound' | 'outbound'
- `after` string, date-time
- `limit` integer

## Response `200`

SMS message evidence, including successful and failed attempts.

- object
  - `messages` object[], required
    - `status` string, required
    - `code` string, nullable, required: Provider error code for a definitive failed send; null otherwise.
    - `to` string, nullable, required: Destination number.
    - `timestamp` string, date-time, nullable, required: Failure time, send time, or creation time, in that precedence order.
    - `error_message` string, nullable
  - `has_more` boolean, required

---

[API](https://skmtc.dev/kaicalls/apis/kaicalls-public-api.md) · [All operations](https://skmtc.dev/kaicalls/apis/kaicalls-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaicalls/apis/kaicalls-public-api/revisions/e607fc6cf36e?raw)
