# Create WhatsApp subscriber

Add a single pre-verified WhatsApp subscriber to a dashboard.

Source: https://statusdashboard.com/docs/api/subscriptions/whatsapp/subscribers/create

`POST /app/subscribers/whatsapp/subscribers`

Creates one pre-verified WhatsApp subscriber. Admin-trusted — no verification template is sent.

***

## Request
See [API Basics](/docs/api) for required headers.

### Body
| Field          | Type    | Required | Description                                                                               |
| -------------- | ------- | -------- | ----------------------------------------------------------------------------------------- |
| `phone`        | string  | Yes      | E.164 phone number (e.g. `+14155552671`). Digits only after `+`; no spaces or punctuation |
| `dashboardId`  | uuid    | Yes      | Target dashboard                                                                          |
| `componentIds` | uuid\[] | Yes      | At least one component on that dashboard                                                  |

National numbers (without a leading `+` and country calling code) are not accepted. On success, the response includes a human-readable `phone` (e.g. `+1 415 555 2671`) and the canonical E.164 value in `normalizedPhone` (used in path parameters for update and delete).

There is no admin-managed (`locked`) option for WhatsApp — that concept applies only to email.

***

## Sample request
```bash
curl -X POST https://api.statusdashboard.com/app/subscribers/whatsapp/subscribers \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+14155552671",
    "dashboardId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"]
  }'
```

## Sample response
**Status: `201 Created`**

```json
{
  "subscriber": {
    "phone": "+1 415 555 2671",
    "normalizedPhone": "+14155552671",
    "dashboardId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "dashboardName": "Acme Status",
    "verified": true,
    "verifiedAt": "2026-06-01T14:22:00.000Z",
    "createdAt": "2026-06-01T14:22:00.000Z",
    "updatedAt": "2026-06-01T14:22:00.000Z",
    "componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"],
    "paused": false
  }
}
```

***

## Error responses
| Status | When                                                                   |
| ------ | ---------------------------------------------------------------------- |
| `400`  | Invalid body, invalid phone, or component not on dashboard             |
| `403`  | Requires admin or subscriber role, feature disabled, or quota exceeded |
| `404`  | Dashboard not found                                                    |
| `409`  | Already subscribed on this dashboard, or a bulk import is in progress  |
