> This page is for version v1.
> For other versions, use one of these documentation indexes:
> - v2 (default): https://docs.pinnacle.sh/v-2/llms.txt
> - v1: https://docs.pinnacle.sh/v1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.pinnacle.sh/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pinnacle.sh/_mcp/server.

# Receive message statuses

## Provide a status callback URL

When sending a message with the Pinnacle SDKs, you can provide an optional `statusCallback` URL. This URL will be called with the status of the message changes. See the [send docs](api-reference/send-a-message) for more information.

## Receive message statuses

When the status of a message changes, Pinnacle will send a POST request to the `statusCallback` URL you provided. The request will contain a JSON payload with the following fields:

* `messageId`: The ID of the message.
* `status`: The new status of the message. Possible values are:
  * `pending`: The message is pending.
  * `sent`: The message has been sent.
  * `send_failed`: The message failed to send.
  * `delivered`: The message has been delivered.
  * `delivery_failed`: The message failed to deliver.
  * `received`: The message has been received by the recipient.
  * `read`: The message has been read by the recipient. This status is only available for RCS messages.

Here is an example of the JSON payload:

```json
{
  "messageId": "123456",
  "status": "sent"
}
```