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

# Prepare Application registration

> Get the exact bytes and nonce to sign for a new Application

Register an Application under an active control DID. The Application ID must be 1–64 lowercase letters, digits, dots, underscores, or hyphens. The ID must not already be registered.

## Request

<ParamField path="applicationId" type="string" required>
  The proposed Application ID.
</ParamField>

<ParamField body="control_did" type="string" required>
  Active DID that will own the Application and its policy.
</ParamField>

<ParamField body="signer_key_id" type="string" required>
  Verification-method ID beginning with the control DID and `#`.
</ParamField>

```bash theme={null}
curl --request POST \
  --url "https://directory.example.com/applications/example/registration/prepare" \
  --header "Content-Type: application/json" \
  --data '{"control_did":"did:openpayload:1111111111111111111111","signer_key_id":"did:openpayload:1111111111111111111111#signing"}'
```

The `200` response contains `application_id`, `control_did`, `signer_key_id`, the current numeric `nonce`, and `canonical_payload` as `0x`-prefixed hexadecimal. Decode the payload and sign those exact bytes locally with the named Ed25519 key. The Directory never receives the private key.

Complete the flow with [Submit Application registration](/api-reference/directory/applications/register). Prepare again if the authorization nonce changes before submission.

## Straight to the point

```text theme={null}
POST /applications/{applicationId}/registration/prepare
Success: 200 with nonce and canonical_payload
Next: sign the decoded bytes and submit registration
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.