Skip to main content
Resolving a DID means asking a Directory for the identity’s current public record. This is usually the first call a compatible client makes before it encrypts a message, verifies a signature, selects a service endpoint, or displays identity information. An OpenPayload DID has three parts:
The canonical form is did:<platform>:<Base58Address>. The platform is 1–32 lowercase ASCII letters or digits. The Base58 address is 16–96 characters. openpayload is the default platform name rather than a hard-coded requirement. Send the complete identifier. The response can contain public cryptographic keys and network endpoints, but never a private key.
This is a safe, read-only request. You do not need an account, signature, nonce, or OpenPayload SDK.

When to use this endpoint

Resolve a DID when your application needs to:
  • Find a recipient’s key-agreement key before encrypting a message
  • Find a Relay, Cache, or Archive service declared by the identity
  • Verify a signature using a public verification method
  • Check whether a device has been tombstoned
  • Display a public alias
  • Detect a deactivated identity or a newer record version

Request

string
required
The complete canonical DID. URL-encode it in the path.

Example in plain JavaScript

Response

string | null
The public chain account that owns the record, when one exists. DIDs registered through a Directory are ownerless; records created directly on chain may have an account owner.
string[] | null
Public aliases assigned to the DID. Do not assume there is only one.
object[] | null
Registered devices. Each item contains deviceId, addedAt, and tombstoned.
number
required
The public record version.
object | null
The public DID document, including verification, key-agreement, authentication, and service entries.
number
required
The update time as Unix milliseconds.
string | null
A label indicating where the Directory obtained the result, when available.
string
required
The public registration state.
string
The 32-byte public root key encoded as 0x-prefixed hexadecimal, when available.
boolean
required
true when the identity has been permanently deactivated.
string
The registration transaction identifier, when available.
string
The current DID-document authorization nonce when document mutation state is available.
string
The nonce reserved by a pending DID-document mutation.
boolean
true when a DID-document mutation is awaiting confirmation.
string
The operation name for a pending DID-document mutation.
string
The transaction hash for a pending DID-document mutation.
string
The submission time for a pending DID-document mutation.
200 returns the record. 404 means the DID was not found. 425 means registration is awaiting confirmation.
Account-owned DID operations remain available directly on chain. The Directory registers ownerless DIDs and submits later changes using authorized DID-key proofs.

How to interpret the result safely

  • Treat null as “not available,” not as an empty public key or service.
  • Reject or warn before messaging when deactivated is true.
  • Ignore devices whose tombstoned value is true.
  • Select keys by their full DID URL, purpose, and type. Do not blindly use the first array item.
  • Expect new optional public fields in future versions.

Straight to the point

  • Authentication: none
  • Request body: none
  • Success: 200 OK
  • Not found: 404
  • Registration pending: 425
  • Primary result: the current public document, aliases, devices, and lifecycle status

New to DIDs?

Read the complete beginner’s explanation of DID structure, keys, services, and common uses.

Complete messaging DID document

See how verification and encryption keys work with Relay, Cache, Archive, and Cache-authorization service entries.