Skip to main content

Bulk upsert campaign subscribers

PUT 

/v1/campaigns/:campaign_id/subscribers/bulk-upsert

Permissions - campaign.write. API keys - manage.

Add new subscribers or update existing ones. If replace=true query parameter is provided, removes all existing subscribers before adding new ones.

replace=true is rejected with 400 for an agentic campaign that is already in_progress when the request carries subscribers: the removed audience would return as new rows and be contacted a second time. Stop or cancel the campaign first, or add subscribers without replace. An empty subscribers array with replace=true is a pure delete and is still allowed.

A campaign may hold debts in only one currency. Each upload compares the campaign's existing debt currencies against the batch and rejects the whole request with 400 subscriber.campaignCurrencyConflict if more than one distinct currency would result, and the message names the currencies involved. Blank currency values are exempt, and the comparison is case-insensitive and trimmed. A replace=true call unlinks the campaign's existing debts first, so it can move the campaign to a new currency.

Request​

Responses​

Subscribers upserted successfully