---
title: "Message delivery evidence"
method: GET
path: "/v1/conversations/{id}/messages/{messageId}/delivery"
tags: ["Conversations"]
---

# Message delivery evidence

`GET /v1/conversations/{id}/messages/{messageId}/delivery`

## Request

- Base URL: `https://api.cadencercs.com`
- URL: `https://api.cadencercs.com/v1/conversations/{id}/messages/{messageId}/delivery`
- Auth: HTTP bearer

Read delivery state without message content. receipt is attributable RBM webhook evidence or null; legacy deliveryState alone is not this evidence. observedAt is when Cadence recorded the receipt, not handset delivery time. Sandbox evidence does not prove real handset delivery.

## Path parameters

- `id` string, required
- `messageId` string, required

## Response `200`

Delivery evidence.

- object
  - `conversationId` string, required
  - `providerMsgId` string, required
  - `channel` string, required
  - `deliveryState` string, required
  - `environment` string, required
  - `receipt` object, nullable, required
    - `state` 'delivered' | 'read', required
    - `observedAt` string, required

## Other responses

- `401`: Missing, unknown or revoked API key.
- `403`: Key suspended, or scoped to a different brand than the one addressed.
- `404`: Conversation not owned, or outbound provider message not found in it.
- `500`: Unexpected server error. The body is always JSON.

---

[API](https://skmtc.dev/cadencercs/apis/cadence-api.md) · [All operations](https://skmtc.dev/cadencercs/apis/cadence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cadencercs/apis/cadence-api/revisions/9438443c2081?raw)
