Duplicate Campaign
Duplicate a campaign into a new draft. The copy gets the name "{name} (Copy)" and includes the content, audience, attached promo codes, and linked survey. Works on campaigns in any status โ useful for re-running a sent campaign.
POST /v1/campaigns/{id}/duplicate
Authenticationโ
Requires a valid API key with campaigns:write scope.
Path Parametersโ
| Parameter | Type | Description |
|---|---|---|
id | integer | The campaign ID |
Request Exampleโ
curl -X POST "https://app.equipdash.com/api/v1/campaigns/42/duplicate" \
-H "Authorization: Bearer eqd_live_your_api_key"
Response (201 Created)โ
Returns the new campaign as a draft.
{
"data": {
"id": 43,
"name": "Summer Kayak Promo (Copy)",
"description": "Promote summer kayak rentals",
"kind": "one_off",
"channel": "email",
"status": "draft",
"audience_type": "filter",
"audience_filter": {
"v": 2,
"preset": "recent"
},
"email_subject": "Summer is here, {customer_name}!",
"email_body": "<p>Hi {customer_name}, book your kayak now.</p>",
"template_key": "promo_blast",
"cta_text": "Book now",
"cta_url": "https://example.com/book",
"scheduled_at": null,
"sent_at": null,
"total_recipients": 0,
"total_sent": 0,
"promo_codes": [
{
"id": 7,
"code": "SUMMER25",
"name": "Summer Sale"
}
],
"created_at": "2026-07-20T11:30:00+00:00",
"updated_at": "2026-07-20T11:30:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-07-20T11:30:00+00:00"
}
}
Error Responsesโ
| Status | Code | Description |
|---|---|---|
| 403 | insufficient_scope | API key lacks campaigns:write scope |
| 404 | resource_not_found | Campaign not found |