Gallery Platform API
Reference

Duplicate an offer

Copies an offer's composition (subject, intro, template, and its works) into a new draft, and returns the audience to carry forward: `template_only` (none), `recipients` (the full original audience), or `non_openers` (only those delivered who never opened). The copy is not sent — pair this with `POST …/send` using the returned `audience` to actually re-send.

POST
/gallery/offers/{id}/duplicate

Copies an offer's composition (subject, intro, template, and its works) into a new draft, and returns the audience to carry forward: template_only (none), recipients (the full original audience), or non_openers (only those delivered who never opened). The copy is not sent — pair this with POST …/send using the returned audience to actually re-send.

Authorization

bearerAuth offers:create
AuthorizationBearer <token>

A gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).

In: header

Scope: offers:create

Path Parameters

id*string

Header Parameters

Idempotency-Key?string

Optional. Send a unique key per logical operation to make retries safe: a retry with the same key replays the stored success for 14 days instead of re-running the write. Reusing a key with a different body returns 400.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Duplicate an offer into a new draft (choose which audience carries over).

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

{  "offer": {    "id": "string",    "title": "string",    "subject": "string",    "intro": "string",    "template_id": "string",    "status": "draft",    "track_engagement": true,    "scheduled_at": "string",    "sent_at": "string",    "cc_emails": [      "string"    ],    "bcc_emails": [      "string"    ],    "created_by": "string",    "metadata": {      "property1": "string",      "property2": "string"    },    "created_at": "string",    "updated_at": "string",    "items": [      {        "offer_id": "string",        "artwork_id": "string",        "position": -9007199254740991,        "caption_override": "string",        "price_shown_cents": -9007199254740991,        "currency": "string",        "price_visible": true,        "created_at": "string"      }    ],    "recipients": [      {        "id": "string",        "offer_id": "string",        "contact_id": "string",        "email": "string",        "expires_at": "string",        "delivery_status": "pending",        "sent_at": "string",        "first_opened_at": "string",        "last_activity_at": "string",        "open_count": -9007199254740991,        "click_count": -9007199254740991,        "created_at": "string"      }    ]  },  "audience": {    "contact_ids": [      "string"    ],    "emails": [      "string"    ]  }}