> ## Documentation Index
> Fetch the complete documentation index at: https://docs.talaria.chat/llms.txt
> Use this file to discover all available pages before exploring further.

# Register a DID

> Submit a new public DID record.

Submit a new public DID record.

## Request

<ParamField body="did" type="string" required>
  The DID to register. It must match `did_document.id`.
</ParamField>

<ParamField body="timestamp" type="string" required>
  The timestamp included in the signed request.
</ParamField>

<ParamField body="signature" type="string" required>
  The registration authorization signature.
</ParamField>

<ParamField body="did_document" type="object" required>
  The public DID document.
</ParamField>

<ParamField body="root_pubkey" type="string">
  The root Ed25519 public key. The first verification method supplies it when omitted.
</ParamField>

<RequestExample>
  ```bash Request theme={null}
  curl --request POST \
    --url "https://directory.example.com/register-did" \
    --header "Content-Type: application/json" \
    --data '{
    "did": "did:talaria:1111111111111111111111",
    "timestamp": "2026-07-16T12:00:00Z",
    "signature": "<signature>",
    "did_document": {
      "id": "did:talaria:1111111111111111111111",
      "verificationMethod": [
        {
          "id": "did:talaria:1111111111111111111111#root",
          "type": "Multikey",
          "controller": "did:talaria:1111111111111111111111",
          "publicKeyMultibase": "<public-key>"
        }
      ],
      "authentication": [
        "did:talaria:1111111111111111111111#root"
      ],
      "keyAgreement": [],
      "service": []
    }
  }'
  ```
</RequestExample>

## Response

<ResponseField name="status" type="string" required>
  A human-readable registration status.
</ResponseField>

<ResponseField name="registration_status" type="string" required>
  The public registration state.
</ResponseField>

<ResponseField name="tx_id" type="string" required>
  The submitted transaction identifier.
</ResponseField>

<ResponseField name="did" type="string" required>
  The submitted DID.
</ResponseField>

<ResponseField name="did_document" type="object" required>
  The submitted public DID document.
</ResponseField>

<ResponseExample>
  ```json 202 Response theme={null}
  {
    "status": "did registration pending",
    "registration_status": "pending",
    "tx_id": "<transaction-id>",
    "did": "did:talaria:1111111111111111111111",
    "did_document": {
      "id": "did:talaria:1111111111111111111111",
      "verificationMethod": [],
      "keyAgreement": [],
      "service": []
    }
  }
  ```
</ResponseExample>

<Note>
  `202` means the Directory accepted the registration for processing. It does not confirm final settlement.
</Note>
