# The Campaign object

> Attributes of a BloomText Campaign and the endpoints that return it.

Source: https://www.bloomtext.com/developers/api/reference/campaign-object/

One message sent to many patients from a clinic phone number, with per-patient delivery.

### Attributes

- `id` (UUID, required): Unique ID of the campaign.

- `name` (string, required): A name for staff, like "Flu shot reminders, October". Patients never see it.

- `status` (draft, running, paused, completed, stopped, required): `draft` until started; `completed` once every recipient is sent; `stopped` if someone stopped it early.

- `channel` (secure, sms, required): How recipients receive the message. Secure unless the campaign asks for SMS.

- `body` (string, required): The message every recipient gets.

- `phone_number` (PhoneNumberRef, required): The clinic phone number a patient conversation is on.

  Child attributes:
- `number` (string, required): The phone number.

- `team` (string, required): The team it belongs to.

- `sender` (CampaignSender, required): Who the campaign's messages come from.

  Child attributes:
- `id` (UUID, required): ID of the admin or API key.

- `name` (string, required): The admin's name, or the API key's name, like "Reminder service".

- `kind` (staff, api_key, required): Whether an org admin (through OAuth) or an API key created the campaign.

- `send_interval_seconds` (number, required): Seconds between messages.

- `counts` (CampaignCounts, required): Progress across the campaign's recipients.

  Child attributes:
- `recipients` (integer, required): Patients on the campaign.

- `pending` (integer, required): Waiting to be sent.

- `sent` (integer, required): Sent, including delivered.

- `delivered` (integer, required): Confirmed delivered or opened.

- `failed` (integer, required): Failed or undelivered.

- `skipped` (integer, required): Not sent: opted out, no contact method, or cancelled.

- `archived` (boolean, required): Whether the campaign is archived.

- `created_at` (timestamp, required): When the campaign was created.

- `started_at` (timestamp or null, required): When it first started. Null for a draft.

- `finished_at` (timestamp or null, required): When it completed or was stopped. Null otherwise.

### Endpoints

| Method | Path | Endpoint |
| --- | --- | --- |
| GET | `/campaigns` | [List campaigns](https://www.bloomtext.com/developers/api/reference/list-campaigns/) |
| POST | `/campaigns` | [Create a campaign](https://www.bloomtext.com/developers/api/reference/create-campaign/) |
| GET | `/campaigns/{campaignId}` | [Retrieve a campaign](https://www.bloomtext.com/developers/api/reference/get-campaign/) |
| PATCH | `/campaigns/{campaignId}` | [Update a campaign](https://www.bloomtext.com/developers/api/reference/update-campaign/) |
| DELETE | `/campaigns/{campaignId}` | [Delete a campaign](https://www.bloomtext.com/developers/api/reference/delete-campaign/) |
| GET | `/campaigns/{campaignId}/recipients` | [List campaign recipients](https://www.bloomtext.com/developers/api/reference/list-campaign-recipients/) |
| POST | `/campaigns/{campaignId}/recipients` | [Add campaign recipients](https://www.bloomtext.com/developers/api/reference/add-campaign-recipients/) |
| POST | `/campaigns/{campaignId}/recipients/remove` | [Remove campaign recipients](https://www.bloomtext.com/developers/api/reference/remove-campaign-recipients/) |
| POST | `/campaigns/{campaignId}/start` | [Start a campaign](https://www.bloomtext.com/developers/api/reference/start-campaign/) |
| POST | `/campaigns/{campaignId}/pause` | [Pause a campaign](https://www.bloomtext.com/developers/api/reference/pause-campaign/) |
| POST | `/campaigns/{campaignId}/stop` | [Stop a campaign](https://www.bloomtext.com/developers/api/reference/stop-campaign/) |

```json filename="The Campaign object"
{
  "id": "c4a7e2d1-9b3f-4e6a-8d2c-1f0e9b8a7c65",
  "name": "Flu shot reminders, October",
  "status": "draft",
  "channel": "secure",
  "body": "Flu shots are available at Example Clinic. Reply here to book a time.",
  "phone_number": {
    "number": "+15125550100",
    "team": "Front desk"
  },
  "sender": {
    "id": "b7e1c3a9-4d2f-4a8b-9c6e-0f1d2e3a4b5c",
    "name": "Reminder service",
    "kind": "api_key"
  },
  "send_interval_seconds": 1,
  "counts": {
    "recipients": 0,
    "pending": 0,
    "sent": 0,
    "delivered": 0,
    "failed": 0,
    "skipped": 0
  },
  "archived": false,
  "created_at": "2026-09-21T15:04:05Z",
  "started_at": null,
  "finished_at": null
}
```
