# Duplicate Email Campaign

POST /api/v2/projects/{projectId}/email-campaigns/{campaignId}/duplicate

Copies a campaign (its messages, audience, and settings) into a new DRAFT. The copy is named `"<original> (Copy)"`, incrementing to `(Copy 2)` and beyond if that name is taken. Send counts, sent timestamps, and any A/B winner are reset, so the duplicate behaves like a fresh campaign rather than inheriting the original's results.

## Request

- projectId: string, path, required — ID of the project that owns the campaign.
- campaignId: string, path, required — ID of the campaign to copy.

## Response

- 200: Successful response
  - contactsFilterGroups: object[], required
    - filters: object[], required — Attribute filters combined with groupType.
    - groupType: AND | OR | NOT, required — How filters in this group are combined.
    - oneDayEventFilters: object[] — Event filters evaluated over the last 24 hours only.
    - requireSubscribed: boolean — When true, the group is ANDed with `$subscribed == true`. Set by email sending, not the filter UI.
  - createdAt: string, required
  - id: string, required
  - messages: object[], required
    - bodyHTML: string, required
    - bodyJSON: object, required
    - createdAt: string, required
    - emailCampaignId: string, required
    - fromDomain: string, required
    - fromEmailUsername: string, required
    - fromName: string, required
    - id: string, required
    - label: string, required
    - previewTextHTML: string, required
    - previewTextJSON: object, required
    - projectId: string, required
    - sendCount: integer, required, default 0
    - subjectHTML: string, required
    - subjectJSON: object, required
    - text: string, required
    - theme: object, required
    - updatedAt: string, required
    - bcc: string
    - cc: string
    - lastSuccessContactCreatedAt: string
    - lastSuccessContactId: string
    - replyTo: string
    - scheduledAt: string
    - …
  - name: string, required
  - projectId: string, required
  - sendCount: integer, required, default 0
  - sendPaginationCount: integer, required, default 0
  - status: DRAFT | SCHEDULED | SENDING | SENT | PAUSED | CANCELLED, required
  - type: STANDA
…
