POST /api/v1/import/jobs stages a batch of past jobs (or customers) for a reactivation campaign. Mailr
geocodes every address and stages the batch — nothing is mailed and no campaign is created. The campaign
wizard reads the staged batch later, in the exact shape a CSV upload produces.
Required scope: import:write · Limits: 500 rows / request, 1 MB body, 10 batches / org / UTC day
Geocoding runs before any write, so a geocoder outage never leaves a half-written batch and never burns one
of your 10 daily slots. One request is one batch; there is no cross-batch dedup, and duplicate addresses within
a batch are geocoded independently (the wizard’s selection step is where an operator prunes).
Retry-safe imports. Pass an optional
Idempotency-Key request header (any string ≤255 chars — a UUID or
hash) to make retries safe. A retry carrying a key Mailr has already seen returns the existing batch and its
stored counts with 200 (not 201) — nothing is re-geocoded and no extra daily slot is spent. A retry that
lands while the original request is still processing (geocoding can run for minutes) gets a
409 import_in_progress with a Retry-After header — keep retrying with the same key until you get the
finished batch. A key longer than 255 chars is a 422. Keyless imports never dedup: each request stages a
fresh batch. (This is replay-safety only — addresses are still never deduplicated, within a batch or across
batches.)Request
string
Optional replay key (≤255 chars). A repeat with the same key returns the existing batch (
200) instead of
staging a new one, or 409 while the original request is still processing; keyless requests never dedup.string
required
jobs or customers.array
required
1–500 rows.
string
Full mailing address (≤500 chars). A row with no address is skipped (not an error). A non-string address
is an error.
string
Your id for this job/customer (≤128 chars). Optional.
string
Optional (≤200 chars).
string (ISO-8601 date)
YYYY-MM-DD (a datetime’s time part is dropped). Garbage is rejected with the offending row named. Optional.Response
201 Created
integer
Rows geocoded and staged.
integer
Rows with no address.
integer
Rows whose address couldn’t be geocoded.
import_id into the campaign wizard to build a reactivation campaign from the staged rows.