Skip to main content

Decentralized Identity

CrowdProof uses the did:ethr method to create portable, self-sovereign identities linked to Ethereum wallet addresses.

Register a DID

Registration is a public endpoint — no API key required:

POST /api/v1/identity/register
Content-Type: application/json

{"walletAddress": "0x1234...", "chainId": 1}

Returns:

{
"id": "uuid",
"did": "did:ethr:0x1234...",
"createdAt": "2026-02-28T00:00:00Z"
}

Resolve a DID

GET /api/v1/identity/did:ethr:0x1234...

Update a DID Document

Requires JWT auth (Sign-In with Ethereum):

PUT /api/v1/identity/did:ethr:0x1234...
Authorization: Bearer <JWT>
Content-Type: application/json

"{ ... DID Document JSON ... }"
note

DID documents are capped at 50KB to prevent abuse.

Verifiable Credentials

List credentials

GET /api/v1/identity/did:ethr:0x1234.../credentials
Authorization: Bearer <JWT>

Issue a credential

POST /api/v1/identity/did:ethr:0x1234.../credentials
Authorization: Bearer <JWT>
Content-Type: application/json

{
"credentialType": "ReputationAttestation",
"subject": "{\"score\": 742, \"category\": \"DEFI_LENDING\"}"
}

DID Format

CrowdProof DIDs follow the pattern:

did:ethr:[chainId:]0x[40 hex characters]

Examples:

  • did:ethr:0x1234567890abcdef1234567890abcdef12345678
  • did:ethr:137:0x1234567890abcdef1234567890abcdef12345678 (Polygon)