# Number Pools API

> Create Edesy Collect caller-ID pools, add and remove numbers, list numbers with health, and flag or reactivate a number through the REST API.

Source: https://edesy.in/docs/collect/api/pools

Pool endpoints manage the caller-ID numbers a reminder campaign rotates through. Create a pool with a rotation strategy, add numbers your workspace owns (up to 6 per pool), list them with their health and last-used time, and change a number's health to take it out of rotation or bring it back.

## Create a pool

```
POST /v1/collect/pools
```

| Field | Type | Required | Description |
|---|---|---|---|
| `name` | string | Yes | Pool name |
| `rotation` | string | No | `round_robin` (default), `least_recently_used` or `sticky_then_rotate` |

```json
{
  "data": {
    "id": "2b0c...",
    "tenant_id": "9f1e...",
    "name": "Collections pool",
    "rotation": "round_robin",
    "created_at": "2026-10-28T05:30:00Z",
    "updated_at": "2026-10-28T05:30:00Z"
  }
}
```

An empty name or unknown rotation returns `400`.

## List and delete pools

```
GET    /v1/collect/pools
DELETE /v1/collect/pools/:id
```

Delete returns `204`.

## Add a number

```
POST /v1/collect/pools/:id/numbers
```

| Field | Type | Required | Description |
|---|---|---|---|
| `phone_number_id` | uuid | Yes | ID of a number on your account |
| `from_number` | string | Yes | The same number in E.164 |

Returns `201` with the pool member (`id`, `pool_id`, `phone_number_id`, `from_number`, `health: "active"`). A full pool returns `400 pool is at the 6-number limit`.

## List numbers

```
GET /v1/collect/pools/:id/numbers
```

Each member has `id`, `from_number`, `health` and `last_used_at`.

## Remove a number

```
DELETE /v1/collect/pools/:id/numbers/:memberId
```

Returns `204`. The number stays on your account; only its pool membership is removed.

## Set health

```
PATCH /v1/collect/pools/:id/numbers/:memberId/health
```

```json
{ "health": "flagged" }
```

`health` is `active`, `flagged` or `retired`. Only `active` numbers are used for calls. Returns `{"status": "ok"}`. See [Spam Flag and Health](https://edesy.in/docs/collect/numbers/spam-flag-and-health).
