Delete contactsMenu

Delete contacts

POST/v1/contacts/delete

Requires an API key with the contacts:delete scope. About keys and scopes

Works with integration and partner keys, not agent keys.

Safe to retry: a repeat sets the same values again. About idempotency

Deletes up to 100 contacts, each named by contactId, externalId or email, and reports an outcome per contact. For each one deleted, its events, list memberships, consent changes and journey enrollments go with it. Journey messages go with the enrollments; campaign and transactional messages are kept for campaign totals but anonymised: the address, content and provider ids are removed and nothing links them to the person. Address suppressions are kept, so a deleted address that is imported again is still not mailed. send_in_progress means a message was being handed to the provider; retry that one shortly. Requires contacts:delete; agent keys are refused.

Header parameters

Kirora-Workspacestringoptional

Partner keys only: the child workspace to act in, by the external id the partner gave it. Without it, a partner key acts in its own workspace. Any other key that sends it is refused with 403, and an unknown workspace is 404.

pattern ^[A-Za-z0-9._:-]{1,128}$

Idempotency-Keystringoptional

Makes a retry safe: a repeat with the same key and body within 24 hours gets the first response again, with Idempotency-Replay: true. The same key with another request is 409 IDEMPOTENCY_KEY_REUSED; while the first is still running, 409 IDEMPOTENCY_KEY_IN_USE; after an unsafe first request failed or never returned, 409 IDEMPOTENCY_KEY_OUTCOME_UNKNOWN. Use a new key, such as a UUID, for each new request.

8–255 characters

Request body

contactsobject[]required

at least 1 item · at most 100 items

Any of 3 shapes
By contact id
1 child attribute
contactIdstringrequired

Kirora's id for the contact.

uuid

By external id
1 child attribute
externalIdstringrequired

Your own id for the contact, as set with identify.

1–255 characters

By email
1 child attribute
emailstringrequired

The contact's email address, matched trimmed and without case.

Returns

Returns 200 OK with a DeleteContactsResult in data. It can also return 409 Conflict, 413 Payload Too Large or 415 Unsupported Media Type; see the statuses below. Otherwise returns an error; Errors lists every code and which to retry.

  • 200 OKOne result per contact named, in request order.
  • 409 ConflictThe request conflicts with current state — a duplicate unique value, or a resource whose status does not allow this operation.
  • 413 Payload Too LargeThe body is larger than this operation accepts (PAYLOAD_TOO_LARGE).
  • 415 Unsupported Media TypeThe body is not JSON, or not the upload the operation takes (UNSUPPORTED_MEDIA_TYPE).
resultsobject[]required
2 child attributes
contactobjectrequired

The contact as named in the request.

Any of 3 shapes
By contact id
1 child attribute
contactIdstringrequired

Kirora's id for the contact.

uuid

By external id
1 child attribute
externalIdstringrequired

Your own id for the contact, as set with identify.

1–255 characters

By email
1 child attribute
emailstringrequired

The contact's email address, matched trimmed and without case.

email · up to 320 characters

outcomestringrequired

send_in_progress: a message is being handed to the provider; retry shortly.

one of deleted, not_found, send_in_progress

Headers on 200 OK

Idempotency-Replaystringoptional

true when this is the stored response to an earlier request with the same key.

one of true