Create an ADM Campaign
Build an address-list Direct Mail (ADM) campaign end-to-end over REST — draft, audience, design, details, and submit for review.
An ADM (address-list Direct Mail) campaign mails postcards to an address list you've uploaded — your own customers or prospects. This guide walks the full flow, from an empty draft to a campaign sitting In Review.
The flow has five steps:
- Create a draft campaign.
- Link an audience — your uploaded address list.
- Select a design from your library.
- Set details — launch date and volume.
- Submit for review.
Campaign creation always stops at In Review. Nothing is printed, mailed, or charged until the Oppizi team confirms it. There is no API that triggers printing or fulfilment directly.
Prerequisites
Building a campaign is a write, so it needs an OAuth access token carrying
the campaigns:create scope — the same consent screen your AI assistant uses
(see Connect Claude or ChatGPT).
A plain client key (Authorization: Bearer <client-key>) carries no scopes.
It works for reads, but every endpoint on this page will answer 403.
Ask Oppizi to enable campaigns:create for your account, then authorise once
to get a token.
You also need at least one audience (uploaded address list) and one
design on your account — list them with GET /client/audiences and
GET /client/designs.
export OPPIZI_TOKEN="YOUR_OAUTH_ACCESS_TOKEN" # must carry campaigns:create
export API="https://developer-api.oppizi.com"Step 1 — Create a draft
channel: "ADM" is the default, and subtype defaults to ADM for an
address-list campaign.
curl -X POST "$API/client/campaigns" \
-H "Authorization: Bearer $OPPIZI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Spring winback — ADM",
"channel": "ADM",
"subtype": "ADM"
}'{
"success": true,
"data": { "id": 48207 }
}Campaign ids are integers. Keep the id — every following step references it.
Step 2 — Link an audience
Pick an audience and attach it to the draft. List your audiences first if you don't have the id handy:
curl "$API/client/audiences" \
-H "Authorization: Bearer $OPPIZI_TOKEN"
curl -X POST "$API/client/campaigns/48207/audience" \
-H "Authorization: Bearer $OPPIZI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "audienceId": 4410 }'For ADM, the audience is the targeting — the postcards go to the addresses on that list. (Saturating whole neighbourhoods with no list instead? That's EDDM.)
Step 3 — Select a design
curl "$API/client/designs" \
-H "Authorization: Bearer $OPPIZI_TOKEN"
curl -X POST "$API/client/campaigns/48207/design" \
-H "Authorization: Bearer $OPPIZI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "designId": 7781 }'Step 4 — Set details
Do not compute the launch date yourself. Ask the campaign what its earliest possible start is — it depends on the channel and print lead time:
curl "$API/client/campaigns/48207/creation-status" \
-H "Authorization: Bearer $OPPIZI_TOKEN"That response carries earliestStartDate, plus what the draft is still missing.
Then set the details (note: PATCH):
curl -X PATCH "$API/client/campaigns/48207/details" \
-H "Authorization: Bearer $OPPIZI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startDate": "2026-11-02",
"volume": 2500
}'Step 5 — Submit for review
curl -X POST "$API/client/campaigns/48207/submit" \
-H "Authorization: Bearer $OPPIZI_TOKEN"{
"success": true,
"data": { "id": 48207, "status": "IN_REVIEW" }
}If something is still missing, the call fails and names it — poll
GET /client/campaigns/48207/creation-status, fix it, and submit again.
From here an Oppizi reviewer approves, and the internal proof, print and mail
pipeline runs. Track it with
GET /client/campaigns/48207/status-tracking.
Changed your mind? POST /client/campaigns/48207/cancel abandons the draft, and
PATCH /client/campaigns/48207 renames it.
The same flow via MCP
| Step | MCP tool |
|---|---|
| Create draft | create_campaign |
| Link audience | link_campaign_audience |
| Design | select_campaign_design |
| Launch date & volume | set_campaign_details |
| What's still missing | get_campaign_readiness |
| Submit | submit_campaign |
Just describe it:
"Create a direct mail campaign to my winback list using the Spring postcard, launching the first week of November — then submit it for review."
See Connect Claude or ChatGPT.
Next steps
- Run an EDDM campaign — saturate carrier routes with no address list.
- Get a price quote before you submit.
- Read performance & ROI once it's live.