Dry runs and confirmations
Check a change before making it; confirm the ones you cannot undo.
Dry runs
Add ?dry_run=true to any change. Every check runs — permissions, formats, limits — and you get a preview, but nothing changes and nothing is sent.
- Sends and imports give a full preview (which number it would send from, which rows are valid).
- Saving a contact filter (create or update) previews the saved filter exactly as it would be stored, and with
count=truehow many contacts it would match. - Other changes give the result of the checks.
- Test keys always run changes as dry runs.
- A dry run is charged to your key's read limit (300 a minute), never its change limit, and it does not use up an
Idempotency-Key: the real call can send the same key.
Confirming what cannot be undone
Deleting, rotating a secret and replaying events cannot be undone. These need a header with the operation's verb:
Api-Confirm: deleteWithout it you get 428 confirm_required. It is a simple guard: a bug in a loop cannot wipe data by accident.