---
title: "Revoke a Nostr identity link"
method: DELETE
path: "/identity-links/v1/{identity_link_id}"
tags: ["Identity Links"]
---

# Revoke a Nostr identity link

`DELETE /identity-links/v1/{identity_link_id}`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/identity-links/v1/{identity_link_id}`
- Auth: API key in header `SIGN-IN-WITH-X`

Idempotent. Requires any current SIWX EOA of the linked principal acting as itself (never a grant key). Revocation is append-only lifecycle state and does not erase the public event/proof or alter project ownership/authorization. Limited to 10 revocations per hour per principal. Once any public proof exists, this recovery path cannot be disabled by the routine rollout flag.

## Path parameters

- `identity_link_id` string, required

## Headers

- `SIGN-IN-WITH-X` string, required

## Response `200`

Revoked proof, or the original result on retry

- IdentityLinkProof
  - `identity_link_id` string, required
  - `proof_protocol` 'run402.identity-link.nostr.v1' | 'run402.identity-link.nostr.human.v1', required
  - `status` 'active' | 'revoked', required
  - `effective_status` 'active' | 'revoked' | 'principal_inactive', required
  - `verified_at` string, date-time, required
  - `revoked_at` string, date-time, nullable, required
  - `public_subject` string, required
  - `display_subject` string, required
  - `proved_principal` IdentityLinkPrincipalAttribution, required
    - `principal_id` string, required
    - `principal_type` string, required
  - `effective_principal` IdentityLinkPrincipalAttribution, required
    - `principal_id` string, required
    - `principal_type` string, required
  - `public_payload` string, nullable, required
  - `wallet_signature` string, nullable, required
  - `nostr_event` NostrIdentityProofEvent, required
    - `id` string, required
    - `pubkey` string, required
    - `created_at` integer, required: Exact signed NIP-01 event time in Unix seconds. This protocol envelope field is the only identity-link exception to the ISO-8601 HTTP timestamp contract; converting it would invalidate the event id and signature.
    - `kind` 1 | 24243, required
    - `tags` array[], required
      - string[]: Protocol-discriminated public proof tags: optional NIP-OA for agent kind-1 proofs, or exact Run402 challenge-binding tags for human kind-24243 proofs.
    - `content` string, required: Exact RFC 8785 serialization of {public_payload,wallet_signature}.
    - `sig` string, required
  - `verification_statement` HumanIdentityLinkVerificationStatement, required
    - `schema_version` 1, required
    - `acceptance_context` 'standalone_human_link' | 'buzz_human_adoption', required
    - `adopting_principal` 'run402_verified', required
    - `target_session` 'run402_verified' | 'legacy_run402_verified', required
    - `fresh_passkey` 'run402_verified', required
    - `verified_at` string, date-time, required

## Other responses

- `403`: Current qualifying EOA required
- `404`: Not found or not linked to this principal
- `429`: IDENTITY_LINK_RATE_LIMITED. Retry-After and details.retry_after_seconds are present.
- `503`: Pre-launch revocation capability is disabled; unavailable only while no public proof exists

---

[API](https://skmtc.dev/run402/apis/run402-api.md) · [All operations](https://skmtc.dev/run402/apis/run402-api/llms.txt) · [OpenAPI document](https://skmtc.dev/run402/apis/run402-api/revisions/893607557f50?raw)
