dev.keytrace.reverseLookup

keytrace.dev

Documentation

Find the ATProto DIDs (and the at-uris of their keytrace claim records) that have verifiably claimed a given external identity, keyed by claim type and subject. Matching is exact (case-sensitive) on the subject. Only non-retracted claims whose attestation signatures validate against a known keytrace server key are returned.

main query

Find the ATProto DIDs (and the at-uris of their keytrace claim records) that have verifiably claimed a given external identity, keyed by claim type and subject. Matching is exact (case-sensitive) on the subject. Only non-retracted claims whose attestation signatures validate against a known keytrace server key are returned.

Parameters

subject string Required

The subject identifier being looked up. Matched exactly (case-sensitive). For types whose subject is a shared namespace rather than a personal account (e.g. 'npmorg', where the subject is the scope 'babel'), a single subject may legitimately match several DIDs — one per person who proved publish access.

type string Required

The claim type (e.g. 'github', 'dns', 'npm'). Mirrors dev.keytrace.claim#type; keep in sync when adding a new provider.

Output

Encodingapplication/json
matches array Required

No description available.

total integer Required

Total number of matching claims.

Errors

UnknownType The requested claim type is not supported by this server.
Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://api.bsky.social)
Parameters
The subject identifier being looked up. Matched exactly (case-sensitive). For types whose subject is a shared namespace rather than a personal account (e.g. 'npmorg', where the subject is the scope 'babel'), a single subject may legitimately match several DIDs — one per person who proved publish access.
The claim type (e.g. 'github', 'dns', 'npm'). Mirrors dev.keytrace.claim#type; keep in sync when adding a new provider.
View raw schema
{
  "type": "query",
  "errors": [
    {
      "name": "UnknownType",
      "description": "The requested claim type is not supported by this server."
    }
  ],
  "output": {
    "schema": {
      "type": "object",
      "required": [
        "total",
        "matches"
      ],
      "properties": {
        "total": {
          "type": "integer",
          "minimum": 0,
          "description": "Total number of matching claims."
        },
        "matches": {
          "type": "array",
          "items": {
            "ref": "#match",
            "type": "ref"
          }
        }
      }
    },
    "encoding": "application/json"
  },
  "parameters": {
    "type": "params",
    "required": [
      "type",
      "subject"
    ],
    "properties": {
      "type": {
        "type": "string",
        "description": "The claim type (e.g. 'github', 'dns', 'npm'). Mirrors dev.keytrace.claim#type; keep in sync when adding a new provider.",
        "knownValues": [
          "github",
          "dns",
          "activitypub",
          "bsky",
          "npm",
          "npmorg",
          "tangled",
          "pgp",
          "twitter",
          "linkedin",
          "instagram",
          "reddit",
          "hackernews",
          "orcid",
          "itchio",
          "discord",
          "steam"
        ]
      },
      "subject": {
        "type": "string",
        "description": "The subject identifier being looked up. Matched exactly (case-sensitive). For types whose subject is a shared namespace rather than a personal account (e.g. 'npmorg', where the subject is the scope 'babel'), a single subject may legitimately match several DIDs — one per person who proved publish access."
      }
    }
  },
  "description": "Find the ATProto DIDs (and the at-uris of their keytrace claim records) that have verifiably claimed a given external identity, keyed by claim type and subject. Matching is exact (case-sensitive) on the subject. Only non-retracted claims whose attestation signatures validate against a known keytrace server key are returned."
}
match object

No description available.

Properties

claim string at-uri Required

The at-uri of the dev.keytrace.claim record backing this match.

did string did Required

The DID of the ATProto account that made the claim.

recheckSuggested boolean Optional

Present (and true) only when the most recent re-verification attempt hit a transient failure (e.g. key-fetch network error). The match is still based on a prior successful verification, but callers who need strong freshness guarantees may wish to re-verify the claim themselves. Absent when the most recent check succeeded.

verifiedAt string datetime Required

Timestamp the claim was most recently verified (lastVerifiedAt if present, otherwise createdAt).

View raw schema
{
  "type": "object",
  "required": [
    "did",
    "claim",
    "verifiedAt"
  ],
  "properties": {
    "did": {
      "type": "string",
      "format": "did",
      "description": "The DID of the ATProto account that made the claim."
    },
    "claim": {
      "type": "string",
      "format": "at-uri",
      "description": "The at-uri of the dev.keytrace.claim record backing this match."
    },
    "verifiedAt": {
      "type": "string",
      "format": "datetime",
      "description": "Timestamp the claim was most recently verified (lastVerifiedAt if present, otherwise createdAt)."
    },
    "recheckSuggested": {
      "type": "boolean",
      "description": "Present (and true) only when the most recent re-verification attempt hit a transient failure (e.g. key-fetch network error). The match is still based on a prior successful verification, but callers who need strong freshness guarantees may wish to re-verify the claim themselves. Absent when the most recent check succeeded."
    }
  }
}

Lexicon Garden

@