Identity API
Manage Decentralized Identifiers (DIDs) and Verifiable Credentials.
Register DID
POST /api/v1/identity/register
No authentication required.
{
"walletAddress": "0x1234...",
"chainId": 1
}
Response
{
"id": "a1b2c3d4-...",
"did": "did:ethr:0x1234...",
"createdAt": "2026-02-27T12:00:00Z"
}
Validation
| Field | Rules |
|---|---|
walletAddress | Required, valid Ethereum address (0x + 40 hex chars) |
chainId | Integer ≥ 1, defaults to 1 (Ethereum mainnet) |
Resolve DID
GET /api/v1/identity/{did}
Cached for 5 minutes per DID.
Response
{
"id": "a1b2c3d4-...",
"did": "did:ethr:0x1234...",
"walletAddress": "0x1234...",
"didDocument": "{...}",
"chainId": 1,
"createdAt": "2026-02-27T12:00:00Z",
"updatedAt": "2026-02-27T12:05:00Z",
"isActive": true
}
Update DID Document
PUT /api/v1/identity/{did}
Requires JWT (Authorization: Bearer <token>).
{
"didDocument": "{\"@context\":\"https://www.w3.org/ns/did/v1\",...}"
}
Validation
| Field | Rules |
|---|---|
didDocument | Required, max 50,000 characters |
Returns 204 No Content on success.
List Credentials
GET /api/v1/identity/{did}/credentials
Requires JWT.
Response
[
{
"id": "a1b2c3d4-...",
"credentialType": "KYCVerification",
"issuerDID": "did:ethr:0xABCD...",
"issuanceDate": "2026-02-27T12:00:00Z",
"expirationDate": "2027-02-27T12:00:00Z",
"revoked": false,
"ipfsHash": "QmXyz..."
}
]
Issue Credential
POST /api/v1/identity/{did}/credentials
Requires JWT.
{
"credentialType": "KYCVerification",
"subject": "{\"name\":\"Verified\",\"level\":\"enhanced\"}"
}
Validation
| Field | Rules |
|---|---|
credentialType | Required, max 100 characters |
subject | Required, max 5,000 characters |
Response
{
"id": "a1b2c3d4-...",
"credentialType": "KYCVerification",
"issuanceDate": "2026-02-27T12:00:00Z"
}