Set cities (street channels)
Chooses the cities for a hand-to-hand or door-to-door campaign, with an optional volume per city.
Available cities are at GET /client/cities.
For EDDM, use Set EDDM routes instead — EDDM targets USPS carrier routes, not cities.
Needs an OAuth access token carrying the campaigns:create scope — a plain client key is refused. The campaign must be one of yours; anything else returns 404.
Authorization
campaignBuilderOAuth campaigns:createOAuth access token carrying the campaigns:create scope, obtained through the Oppizi consent screen (the same sign-in used by the MCP connector). A plain client key carries no scopes and is refused on these endpoints.
In: header
Scope: campaigns:create
Path Parameters
Your campaign id.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/client/campaigns/string/cities" \ -H "Content-Type: application/json" \ -d '{ "cities": null }'{ "success": true, "data": { "campaignId": 9700, "cities": 2 }}Create a campaign draft POST
Opens a draft campaign — the first step of the build flow. Nothing is scheduled, charged or printed by this call. For USPS Every Door Direct Mail, pass `channel: "ADM"` with `subtype: "EDDM"`. The campaign is created on your own account; there is no client id to pass. Needs an OAuth access token carrying the `campaigns:create` scope — a plain client key is refused.
Set EDDM routes and zones POST
Chooses where a direct-mail campaign is delivered: USPS carrier routes, plus the map zones they sit in. Find routes first — [around a point](/docs/api-reference/targeting/searchcarrierroutes), [by best fit](/docs/api-reference/targeting/suggestcarrierroutes) or [by city](/docs/api-reference/targeting/listcitycarrierroutes) — and pass each route's `raw` object straight through. The EDDM minimum-volume rule is checked here rather than at submit, so a selection that is too small is rejected while you can still add routes. Needs an OAuth access token carrying the `campaigns:create` scope — a plain client key is refused. The campaign must be one of yours; anything else returns 404.