Skip to content

Quickstart

The public API needs no account and no API key. Base URL: https://did.is/api.

  1. Resolve an identifier

    Terminal window
    curl https://did.is/api/v1/resolve/did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK
  2. Read the verdict

    The response starts with a verdict:

    "verdict": {
    "outcome": "RESOLVED",
    "headline": "Cryptographically controlled via Ed25519.",
    "statements": ["Self-certifying: not bound to any origin.", "Organization not established."]
    }

    outcome is RESOLVED, RESOLVED_WITH_WARNINGS or DEACTIVATED.

  3. Read the evidence dimensions

    dimensions is an array of seven entries in a fixed order. Each one has id, label, state, statement, proves and doesNotProve:

    {
    "id": "integrity",
    "label": "Document integrity",
    "state": "SELF_CERTIFYING",
    "statement": "The document is derived deterministically from the identifier itself.",
    "proves": "The document is exactly what the identifier encodes.",
    "doesNotProve": "Who holds the private key."
    }

    Next, try a did:web identifier such as did:web:did.is, where origin binding and TLS are checked. See Core concepts for every state.

  4. Handle errors

    Errors are RFC 9457 problem objects with a stable code:

    Terminal window
    curl -i https://did.is/api/v1/resolve/did:example:123
    HTTP/2 501
    content-type: application/problem+json
    {"type":"https://www.w3.org/ns/did#METHOD_NOT_SUPPORTED","title":"DID method not supported",
    "status":501,"code":"METHOD_NOT_SUPPORTED",
    "detail":"did:example is not supported (supported: did:key, did:jwk, did:web, did:webvh)", "trace":[…]}

    The SDKs raise DidisError with status and problem. On 429 the SDKs (0.2.4 or later) wait for Retry-After and retry up to twice on their own; with curl, wait that many seconds yourself. See Errors and rate limits.