> ## 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 a single-label Persona

> Prepare a DID-signed Persona registration without DNS proof

Use this route for a unique single-label Persona such as `compliance`. A name containing a dot uses the [DNS challenge flow](/api-reference/directory/personas/create-dns-challenge). The operator DID must be active, and every controller key must be one of its published signing keys.

## Request

<ParamField path="persona" type="string" required>
  Single-label Persona name.
</ParamField>

<ParamField body="action" type="string" required>
  `register_named_persona`.
</ParamField>

<ParamField body="operator_did" type="string" required>
  Active DID that will operate the Persona.
</ParamField>

<ParamField body="controller_keys" type="string[]" required>
  One through eight distinct signing-key IDs under the operator DID.
</ParamField>

<ParamField body="controller_threshold" type="integer" required>
  Must equal `1`.
</ParamField>

<ParamField body="nonce" type="string" required>
  Current Persona operator nonce from chain state. If the same operator already owns a Persona, its [nonce response](/api-reference/directory/personas/get-nonces) includes this shared counter. That endpoint returns `404` for a name that is not registered.
</ParamField>

<ParamField body="valid_until" type="string" required>
  Future authorization expiration.
</ParamField>

<ParamField body="signer_key_id" type="string" required>
  One of the controller keys.
</ParamField>

You may include `delivery_constraints` with requested limits. Do not include the read-only `effective_ttl_seconds`.

The `200` response returns `persona`, `operator_did`, `signer_key_id`, and `canonical_payload` as `0x`-prefixed hexadecimal. Decode and sign those bytes locally, then [submit the registration](/api-reference/directory/personas/register-named). Preparation checks that the Persona is not already registered; it does not reserve the name.

## Straight to the point

```text theme={null}
POST /personas/{persona}/named/prepare
Name: one label, no DNS challenge
Success: 200 with canonical_payload to sign
```


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