---
title: "Get a CRM email campaign's full definition"
method: GET
path: "/api/campaigns/{campaign_id}"
tags: ["crm-email"]
---

# Get a CRM email campaign's full definition

`GET /api/campaigns/{campaign_id}`

Admin-only endpoint returning a single campaign's full definition

## Path parameters

- `campaign_id` string, uuid, required — Campaign UUID

## Response `200`

Successful Response

- CRMEmailCampaignDetail — Full definition of a single campaign, used to prefill the edit form.
  - `id` string, required — Campaign UUID.
  - `status` string, required — scheduled | sending | sent | failed | cancelled.
  - `scheduled_at` string, date-time, nullable — When the campaign is/was scheduled to send.
  - `subject` string, required — Email subject.
  - `notes` string, nullable — Internal note on why the campaign was sent; CRM-only.
  - `email_html` string, nullable — Composed HTML body (placeholders already replaced by URLs).
  - `template_path` string, nullable — Storage path of the uploaded template, if any.
  - `placeholder_images` object — Map of placeholder name -> image public URL used to compose email_html.
  - `audience_type` string, required — 'filters' or 'csv'.
  - `patient_states` string[] — Stato paziente filters (empty for a csv audience).
  - `registration_reasons` string[] — Motivo iscrizione filters (empty for a csv audience).
  - `filter_match` 'any' | 'all' — How stato/motivo filters combine ('any' or 'all').
  - `recipient_emails` string[] — Explicit recipient emails (only for a csv audience).
  - `created_at` string, date-time, required — When the campaign was created.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/corabea/apis/corabea-api.md) · [All operations](https://skmtc.dev/corabea/apis/corabea-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/corabea/corabea-api/revisions/d6ed0fec5d4f/schema)
