# Assign phone number to campaign

> Assign a US phone number to an approved 10DLC campaign. The campaign must be in approved status.

`POST https://api.zavu.dev/v1/10dlc/campaigns/{campaignId}/phone-numbers`

Assign a US phone number to an approved 10DLC campaign. The campaign must be in approved status.

## Parameters

- `campaignId` (path, string, required): 10DLC campaign ID.

## Body

- `phoneNumberId` (string, required): ID of the phone number to assign.

## Responses

### 201

Phone number assigned.

- `assignment` (object, required)
  - `id` (string, required)
  - `campaignId` (string, required)
  - `phoneNumberId` (string, required)
  - `status` (string, required): Assignment status. `pending`: sent to the carrier, not confirmed yet. `active`: the number is on the campaign and can send. `failed`: the carrier refused it; see `failureReason`. The number is free to be assigned again. One of: `pending`, `active`, `failed`.
  - `failureReason` (string, nullable)
  - `assignedAt` (string<date-time>, nullable)
  - `createdAt` (string<date-time>, required)
  - `updatedAt` (string<date-time>, required)

### 400

Campaign not approved or invalid request.

- `code` (string, required)
- `message` (string, required)
- `details` (object)

### 401

Unauthorized.

- `code` (string, required)
- `message` (string, required)
- `details` (object)

### 404

Campaign or phone number not found.

- `code` (string, required)
- `message` (string, required)
- `details` (object)

## Example

```bash
curl -X POST "https://api.zavu.dev/v1/10dlc/campaigns/campaign_abc123/phone-numbers" \
  -H "Authorization: Bearer $ZAVUDEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phoneNumberId": "pn_abc123"
}'
```

```typescript
import Zavudev from "@zavudev/sdk";

const zavu = new Zavudev({ apiKey: process.env.ZAVUDEV_API_KEY });

const result = await zavu.number10dlc.campaigns.phoneNumbers.assign("campaign_abc123", {
  phoneNumberId: "pn_abc123",
});

console.log(result);
```
