---
title: "Create a DID URL and associated resource"
method: POST
path: "/createResource"
tags: ["Universal Registrar"]
---

# Create a DID URL and associated resource

`POST /createResource`

This endpoint creates a DID URL and associated resource. As input it takes an existing DID, a relative DID URL, a resource, plus optional DID registration [options](https://identity.foundation/did-registration/#options) and [secrets](https://identity.foundation/did-registration/#secret) needed to create the DID URL. The output is a state object that represents the current state of the DID URL creation process.

See the [DID Registration](https://identity.foundation/did-registration/#createResource) specification for additional details.

## Request body

- CreateResourceRequest — Input fields for a DID operation.
  - `jobId` union — This input field is used to keep track of an ongoing DID operation process. See <a href="https://identity.foundation/did-registration/#jobid">https://identity.foundation/did-registration/#jobid</a>.
    - unknown
    - string
    - object
  - `options` RequestOptions — This input field contains an object with various options for the DID operation, such as the network where the DID operation should be executed. See <a href="https://identity.foundation/did-registration/#options">https://identity.foundation/did-registration/#options</a>.
    - `clientSecretMode` boolean
    - `storeSecrets` boolean
    - `returnSecrets` boolean
    - `requestVerificationMethod` VerificationMethodTemplate[]
      - `id` string
      - `type` string
      - `controller` string
      - `purpose` string[]
      - `publicKeyJwk` union
        - object
        - unknown
  - `secret` RequestSecret — This input field contains an object with DID controller keys and other secrets needed for performing the DID operation. See https://identity.foundation/did-registration/#secret.
    - `verificationMethod` union[]
      - union
        - VerificationMethodPublicData — A verification method public data object, see https://identity.foundation/did-registration/#verification-method-public-data
          - `id` string
          - `type` string, required
          - `controller` string
          - `purpose` string[]
          - `publicKeyJwk` object
          - `publicKeyMultibase` string
        - VerificationMethodPrivateData — A verification method private data object, see https://identity.foundation/did-registration/#verification-method-private-data
          - `id` string
          - `type` string, required
          - `controller` string
          - `purpose` string[]
          - `privateKeyJwk` object
          - `privateKeyMultibase` string
    - `signingResponse` union
      - object
      - unknown
    - `decryptionResponse` union
      - object
      - unknown
  - `did` string, required — This input field indicates the DID that is the target of the DID URL create operation.
  - `relativeDidUrl` string, required — This input field indicates a relative DID URL that is the target of the DID URL create operation.
  - `content` string — This input field contains Base64-encoded data that is the content of the resource associated with the DID URL.

## Response `200`

The request was successful, but the DID URL may not be fully created yet, as indicated by the "didState.state" and "jobId" output fields. Additional state information plus metadata are available in the response body.

- CreateResourceState — The state after a DID URL operation.
  - `jobId` union
    - unknown
    - string
    - object
  - `didUrlState` DidUrlState, required — The current state of a DID URL and associated resource.
    - `state` string, required
    - `didUrl` string
    - `secret` DidStateSecret — This output field contains an object with DID controller keys and other secrets. See https://identity.foundation/did-registration/#didstatesecret.
      - `verificationMethod` union[]
        - union
          - VerificationMethodPublicData — A verification method public data object, see https://identity.foundation/did-registration/#verification-method-public-data
            - `id` string
            - `type` string, required
            - `controller` string
            - `purpose` string[]
            - `publicKeyJwk` object
            - `publicKeyMultibase` string
          - VerificationMethodPrivateData — A verification method private data object, see https://identity.foundation/did-registration/#verification-method-private-data
            - `id` string
            - `type` string, required
            - `controller` string
            - `purpose` string[]
            - `privateKeyJwk` object
            - `privateKeyMultibase` string
          - VerificationMethodTemplate[]
            - `id` string
            - `type` string
            - `controller` string
            - `purpose` string[]
            - `publicKeyJwk` union
              - …
    - `content` string
  - `didRegistrationMetadata` object
  - `contentMetadata` object

## Other responses

- `201` — The DID URL has been successfully created, as indicated by the "didState.state" output field. Additional state information (including the created DID URL) plus metadata are available in the response body.
- `400` — A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.
- `500` — An internal error has occurred. Additional state information plus metadata may be available in the response body.

---

[API](https://skmtc.net/decentralized-identity/apis/universal-registrar.md) · [All operations](https://skmtc.net/decentralized-identity/apis/universal-registrar/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/decentralized-identity/universal-registrar/versions/bf85477559de/schema)
