# Add contacts to a campaign

`POST https://www.getrevox.com/api/campaigns/{id}/rows`

Append contacts to an existing campaign. Each new contact is materialized as a call in the `not_launched` status — nothing is dialed until POST /campaigns/:id/launch-calls sends it. Contacts whose phone number is already in the campaign are skipped.

## Path parameters

- `id` (string, required)

## Request body (JSON)

- `contacts` (array of object, required)
  - `to_phone_number` (string, required)
  - `prompt_variables` (any, required): Default: `{}`.

## Example request

```bash
curl -X POST https://www.getrevox.com/api/campaigns/3c90c3cc-0d44-4b50-8888-8dd25736052a/rows \
  -H "Authorization: Bearer $REVOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contacts": [
      {
        "to_phone_number": "+33612345678",
        "prompt_variables": {}
      }
    ]
  }'
```

## Responses

### 200: Success

- `campaign` ([Campaign](https://www.getrevox.com/docs/api/objects/campaign.md), required)
- `added` (number, required)

### 400: Invalid request: the body or a parameter failed validation

- `message` (string, optional)
- `error` (string, optional)
- `bodyErrors` (object, optional): The validation errors returned from the API.
  - `issues` (array of object, required)
    - `path` (array of one of, required)
      - One of, **string** (string)
      - One of, **number** (number)
    - `message` (string, required)
    - `code` (string, optional)

### 404: Not found in your organization

- `error` (string, required)