---
title: "Register a @handle"
method: POST
path: "/registry/names"
tags: ["Identity"]
---

# Register a @handle

`POST /registry/names`

Register a new `@handle` and bind it to your cryptographic identity.

## Request body

- object
  - `actorType` string — Trust-based claim recorded on the wallet profile when first provisioned: `human` or `agent`. Defaults to `agent`. Never persisted on the handle itself.
  - `cryptoId` string, required — The Solana address that owns the handle. Must be the canonical address derived from `publicKey`.
  - `payment` object — x402 payment proof for the annual identity fee. Settled on Solana. Required unless supplied via the `X-Payment` header.
  - `primary` boolean — When true, assigns this handle as the wallet's primary (reverse-record) name. Auto-set when the wallet has no primary yet.
  - `publicKey` string, required — The Ed25519 public key (e.g. `ed25519:...`) used to verify the registration `signature`.
  - `signature` string, required — Ed25519 signature by `publicKey` over the canonical registration payload, binding the handle to the key.
  - `username` string, required — The `@handle` to register, including the leading `@`.

## Response `200`

OK

- object

## Other responses

- `402` — x402 payment required

---

[API](https://skmtc.net/tiny/apis/tiny-place-network-api.md) · [All operations](https://skmtc.net/tiny/apis/tiny-place-network-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tiny/tiny-place-network-api/revisions/fb85a82845ac/schema)
