# Update SMS subscriber

Update component selections or admin-verify a pending SMS subscriber.

Source: https://statusdashboard.com/docs/api/subscriptions/sms/subscribers/update

`PUT /app/subscribers/sms/subscribers/{dashboardId}/{phone}`

Updates service selections for a **verified** SMS subscriber, or admin-verifies a **pending** subscriber when `verify` is `true`.

***

## Path parameters
| Parameter     | Type   | Description                                                 |
| ------------- | ------ | ----------------------------------------------------------- |
| `dashboardId` | uuid   | Dashboard the subscription belongs to                       |
| `phone`       | string | E.164 subscriber phone (URL-encoded, e.g. `%2B14155552671`) |

***

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

### Body
| Field          | Type    | Required | Description                                    |
| -------------- | ------- | -------- | ---------------------------------------------- |
| `componentIds` | uuid\[] | Yes      | Component IDs on the dashboard                 |
| `verify`       | boolean | No       | Set to `true` to activate a pending subscriber |

There is no admin-managed (`locked`) flag for SMS — that concept applies only to [email update](/docs/api/subscriptions/email/subscribers/update).

### Behavior
| Subscriber status | `verify`           | `componentIds`     | Result                                                              |
| ----------------- | ------------------ | ------------------ | ------------------------------------------------------------------- |
| Verified          | omitted or `false` | Any (may be empty) | Update selections; empty array stops notifications (`paused: true`) |
| Verified          | `true`             | —                  | `400` — already verified                                            |
| Pending           | `true`             | At least one       | Admin-verify; no verification text sent                             |
| Pending           | omitted or `false` | —                  | `400` — set `verify` to `true`                                      |

Pending subscribers already count toward quota while pending; verifying does not consume an additional slot.

***

## Sample request — update verified
```bash
curl -X PUT "https://api.statusdashboard.com/app/subscribers/sms/subscribers/a1b2c3d4-e5f6-7890-abcd-ef1234567890/%2B14155552671" \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901", "c3d4e5f6-a7b8-9012-cdef-123456789012"]
  }'
```

## Sample request — verify pending
```bash
curl -X PUT "https://api.statusdashboard.com/app/subscribers/sms/subscribers/a1b2c3d4-e5f6-7890-abcd-ef1234567890/%2B14155552671" \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"],
    "verify": true
  }'
```

## Sample response
**Status: `200 OK`**

```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-01T15:10:00.000Z",
    "componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901", "c3d4e5f6-a7b8-9012-cdef-123456789012"],
    "paused": false
  }
}
```

***

## Error responses
| Status | When                                                                              |
| ------ | --------------------------------------------------------------------------------- |
| `400`  | Invalid path or body, invalid component, or pending update without `verify: true` |
| `403`  | Requires admin or subscriber role, feature disabled, or quota exceeded            |
| `404`  | Subscriber or dashboard not found                                                 |
| `409`  | Phone already verified on this dashboard                                          |
