# Get a WhatsApp template message's status

`GET https://api.chat-data.com/api/v2/whatsapp-message-status`

Canonical: https://www.chat-data.com/api-reference/get-whatsapp-message-status

## Authentication

Send an API key as a Bearer token: `Authorization: Bearer $CHAT_DATA_API_KEY`. Workspace keys reach every chatbot in the workspace; chatbot-scoped keys reach only their chatbot. Keep keys on the server.

## Description

Returns the delivery status of a template message sent through Chat Data, by WhatsApp message id. Status moves forward only: `accepted` → `sent` → `delivered` → `read` → `replied` → `form_completed`, or `failed` with WhatsApp's error code and title. Each step's time is in `statusAt`.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| chatbotId | query | string | yes |  |
| messageId | query | string | yes | The `messageId` returned when the template was sent. |

## Example request

```bash
curl 'https://api.chat-data.com/api/v2/whatsapp-message-status?chatbotId=6650f1c2a9e4b83d2c7a1f05&messageId=6650f1c2a9e4b83d2c7a1f3c' \
  -H "Authorization: Bearer $CHAT_DATA_API_KEY"
```

## Example response (200)

```json
{
  "status": "success",
  "message": {
    "messageId": "6650f1c2a9e4b83d2c7a1f3c",
    "to": "sample to",
    "recipientName": "Jane Doe",
    "template": {
      "name": "Jane Doe",
      "language": "sample language",
      "category": "sample category"
    },
    "content": "What are your opening hours?",
    "source": "live_chat",
    "campaignId": "6650f1c2a9e4b83d2c7a1f3c",
    "conversationId": "3f2b8c1e-9a4d-4e7b-8c2a-5d1e6f7a8b9c",
    "status": "queued",
    "statusAt": {
      "key": "2026-10-14T09:30:00.000Z"
    },
    "error": {
      "code": 131049,
      "title": "sample title"
    },
    "pricing": {
      "billable": true,
      "category": "sample category"
    },
    "flowResponse": {},
    "isTest": true,
    "createdAt": "2026-10-14T09:30:00.000Z"
  }
}
```

## Responses

| Status | Description |
| --- | --- |
| 200 | The message's status. |
| 400 | `chatbotId` or `messageId` is missing. |
| 401 | Authentication failed. |
| 403 | The API key cannot access the requested chatbot. A chatbot-scoped key used with another chatbot's ID gets `Access denied to this chatbot`. A workspace key, or a chatbot-scoped key used with its own chatbot's ID, gets `Chatbot <id> was not found in this API key's workspace. It may have been deleted or moved to another workspace.` when the chatbot does not exist or belongs to another workspace. |
| 404 | No message with this id was sent from this chatbot. |
