Phones

Remove phone

Remove a phone number 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), or the last phone while an active Proof of Me circle exists (circles_need_phone). Otherwise, after a single-use phone_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 a phone number 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 phone and active circles follow it, 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/phones/{id}/removal-preview shows the same counts beforehand.

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

Request

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

Path parameters

idstring required

MongoDB ObjectId

Example:507f1f77bcf86cd799439011

Response

Phone 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

Active sessions signed out; the calling session stays. Idle devices are 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 1 revision of this API.