> ## 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.

# Register a single-label Persona

> Submit a prepared, signed Persona registration without DNS proof

First [prepare the single-label registration](/api-reference/directory/personas/prepare-named). Sign the decoded `canonical_payload` with the declared operator DID controller key. Submit the same intent fields with that payload and signature.

## Request

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

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

<ParamField body="operator_did" type="string" required>
  Active operator DID.
</ParamField>

<ParamField body="controller_keys" type="string[]" required>
  Same one through eight controller keys used during preparation.
</ParamField>

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

<ParamField body="nonce" type="string" required>
  Same current operator nonce used during preparation.
</ParamField>

<ParamField body="valid_until" type="string" required>
  Same future expiration used during preparation.
</ParamField>

<ParamField body="signer_key_id" type="string" required>
  Controller key used to sign the payload.
</ParamField>

<ParamField body="canonical_payload" type="string" required>
  Exact payload returned by preparation, in `0x`-prefixed hexadecimal.
</ParamField>

<ParamField body="signature" type="string" required>
  64-byte Ed25519 signature over the decoded payload, encoded as Base64 or hexadecimal.
</ParamField>

Repeat any `delivery_constraints` from preparation. The Directory reconstructs the intent and rejects a changed payload with `403 canonical_payload_mismatch`.

`202 Accepted` returns `status`, `persona`, `extrinsic`, and `tx_hash`. It confirms chain submission, not finalization. Poll [Get a Persona](/api-reference/directory/personas/get) until the record is active. A single-label Persona does not claim control of a DNS domain and cannot supply DNS proof for an Application `Call`.

## Straight to the point

```text theme={null}
PUT /personas/{persona}/named
Sign: decoded canonical_payload bytes
Accepted submission: 202; verify finalized Persona state
```


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