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

# Get Persona nonces

> Read replay-protection counters for Persona and Persona-policy updates

Read the finalized replay-protection counters before signing a Persona or Persona-policy update. If another update finalizes first, fetch the counters again and rebuild the authorization payload.

## Request

<ParamField path="persona" type="string" required>
  The registered Persona.
</ParamField>

<RequestExample>
  ```bash Request theme={null}
  curl --request GET \
    --url "https://directory.example.com/personas/example.com/nonces"
  ```
</RequestExample>

## Response

```json 200 Response theme={null}
{
  "persona": "example.com",
  "persona_nonce": "3",
  "operator_nonce": "5",
  "policy_nonce": "7"
}
```

Use `persona_nonce` for DNS challenge and attestation replay protection. Use `operator_nonce` for signed registration-state operations such as renewal, transfer, and revocation. That counter is shared by every Persona under the same operator DID, so another operation by that operator can make it stale. Use `policy_nonce` for this Persona's policy and delivery-constraint updates. Before initial registration, this endpoint returns `404`; use the counters returned by the registration challenge instead.

## Straight to the point

```http theme={null}
GET /personas/{persona}/nonces
```

* Authentication: none
* Values: unsigned integer strings
* State: finalized chain state


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