Emails

Remove email

Remove an email address from the account (h-implement-proper-deletion, PE-2). Refused with 409 while it is the identifier this session signed in with (login_identifier), the last sign-in method across phones and emails (last_login_method). Otherwise, after a single-use email_remove step-up grant bound to this id is consumed (403 2fa_required without one; reason: target_mismatch when the grant names other ids): every proof of an email address is revoked, approval consents naming it are revoked, approval setups left without an approver are marked and their pending requests declined, the primary flag moves deterministically to the oldest remaining email and Lookalike Watch alerts are re-pointed to it (or paused when none is left), the row is hard-deleted, the other sessions are signed out, and a notice goes to the contacts captured before the delete. The response names the new primary. Cannot be undone. GET /me/emails/{id}/removal-preview shows the same counts beforehand.

delete/api/v1/me/emails/{id}

Request

  • Base URL: https://api.proof.holdings
  • URL: https://api.proof.holdings/api/v1/me/emails/{id}
  • Auth: API key in cookie auth_token

Path parameters

idstring required

MongoDB ObjectId

Example:507f1f77bcf86cd799439011

Response

Email removed — the cascade, line by line

successtrue required
type'phone' | 'email' required
removed_idstring required
identifierstring required

Masked.

proofs_revokedinteger required
authorizations_revokedinteger required
circles_repointedinteger required

Phones only: circles that now reach the owner at new_primary; 0 for an email.

lookalike_watch'repointed' | 'canceled' | 'unchanged' required
sessions_invalidatedinteger required

Other listed devices signed out, idle ones included; the calling session stays. A device missing from the list — signed in before the list held idle devices, or one whose listing could not be recorded — is not counted, so read sessions_signed_out for whether every other device was signed out.

sessions_signed_outboolean required

Every other device was signed out, idle ones included; the calling session stays. False when that could not be done — the removal itself still happened.

Example response

{
  "removed_id": "507f1f77bcf86cd799439011",
  "identifier": "+1555***1001",
  "new_primary": {
    "id": "507f1f77bcf86cd799439011",
    "identifier": "+1555***2002"
  },
  "notice": [
    {
      "kind": "email",
      "address": "o***@example.com",
      "outcome": "sent"
    }
  ]
}

Changes

No recorded changes to this operation across all 2 revisions of this API.