Cancel a scheduled erasure for a contact
Calls off a scheduled erasure, so a contact who re-engaged inside the cooldown keeps their data. THE OTHER HALF IS NOT ON THIS API. Scheduling an erasure destroys a named person’s profile with no restore and no announcement, so there is no write_marketing_contacts:delete grant to ask for and no route that could use one; it stays in the merchant’s dashboard. Cancelling is the recovery operation and rides the plain write scope, because undoing destruction must not require the destructive grant. Read erasure_scheduled_for on the contact to know whether there is anything to cancel.
Authorizations
A secret API key. Publishable keys cannot reach this API. A key may carry an expiry, and an expired key is refused exactly like an unknown one, with a 401 that names no reason; check the key's expires_at in the dashboard rather than inferring it from a response. When a merchant rolls a key's secret they choose a grace window of up to 3 days, and for its duration BOTH the new secret and the one it replaced authenticate, so an integration moves over on its own deploy schedule instead of at the instant the button is pressed. Move before the window closes: after it, the old secret is refused. Nothing else about this contract moves with a roll. The key keeps its id and its scopes, so the only thing an integration updates is the credential itself.
Headers
A unique key per logical write. Replaying a request with the same key returns the first response byte for byte instead of applying the write twice.
Path Parameters
Body
Takes no parameters, and an empty body is expected. SCHEDULING an erasure is not part of this API and never will be: it destroys a named person's profile with no restore, so it stays in the merchant's dashboard where a human owns the decision. CALLING ONE OFF is the opposite of destruction, so it rides write_marketing_contacts unqualified. It is a POST rather than a DELETE for the same reason: a DELETE under a contact would read as "erase this contact". 200 WITH cancelled=false WHEN NOTHING WAS SCHEDULED, not a 404. The contact exists and the state you asked for is the state that holds; the flag is there so you can tell "called off" from "there never was one". An unknown contact id is still a 404. USE A FRESH Idempotency-Key. A replayed key returns the stored response without re-running anything, so a second cancel on the same key answers with the first call's result and calls nothing off.
Response
Success
