Create a Subject DID

Create a 'Holder' or 'Subject' Decentralized Identifier (DID), of method did:key using cheqd Studio.

In decentralized identity systems, Holders (also referred to as Subjects) are the recipients of Verifiable Credentials—typically representing individuals, organisations, objects or devices.

To enable credential interactions such as receiving, presenting, and proving control over an identity, each Holder needs a unique cryptographic key pair. This key pair is used to create a Decentralized Identifier (DID) that represents their identity.


Use Cases for Holder Identity Keys

After generating a key pair using the API below, you can use it to:

  • Generate a did:key identifier, an off-ledger, self-contained DID that is ideal for lightweight identity use cases


Why Use did:key for Holders?

The did:key method is a simple, deterministic DID method that embeds the Holder’s public key directly into the DID itself. It doesn’t require blockchain anchoring, making it:

  • Fast and lightweight – no on-ledger operations required

  • 🔐 Privacy-preserving – good for ephemeral or throwaway identifiers

  • 🧪 Useful for testing and interoperability – widely supported by wallets and agent frameworks

  • 🧍 Ideal for Holder/Subject identities – where the main role is to receive and present credentials rather than issue them

Many ecosystems choose did:key for wallet-based identities, while keeping issuer DIDs on-ledger (e.g. did:cheqd) to ensure resolvability and public trust.

Take a deeper look into the did:key specification here:


Get Started

To create a did:key DID, you can generate an identity key pair using the API below on cheqd Studio.

Create an identity key pair.

post

This endpoint creates an identity key pair associated with the user's account for custodian-mode clients.

Authorizations
Query parameters
typestring · enumOptional

Key type of the identity key pair to create.

Possible values:
Responses
200
The request was successful.
application/json
post
POST /key/create HTTP/1.1
Host: 
x-api-key: YOUR_API_KEY
Accept: */*
{
  "kid": "text",
  "type": "Ed25519",
  "publicKeyHex": "text"
}

Last updated

Was this helpful?