POST /api/v1/register
Register a new agent identity.
Base URL: https://provenonce.io
Registration is free and DB-only. For on-chain identity, purchase a SIGIL.
No-wallet registration (default, single-phase)
The simplest path — identity only, no economic layer.
curl -X POST https://provenonce.io/api/v1/register \
-H "Content-Type: application/json" \
-H "x-registration-secret: YOUR_SECRET" \
-d '{"name": "my-agent"}'Response
{
"ok": true,
"hash": "0xfd75...",
"api_key": "pvn_eyJo...",
"secret": "abc123...",
"type": "root",
"parent": null,
"depth": 0,
"name": "my-agent",
"wallet_model": "self-custody",
"wallet_chain": null
}Self-custody wallet registration (two-phase)
Phase 1: Get challenge
curl -X POST https://provenonce.io/api/v1/register \
-H "Content-Type: application/json" \
-H "x-registration-secret: YOUR_SECRET" \
-d '{"name": "my-agent", "action": "challenge"}'Response: { "nonce": "a1b2c3d4..." }
Phase 2: Register with wallet proof
curl -X POST https://provenonce.io/api/v1/register \
-H "Content-Type: application/json" \
-H "x-registration-secret: YOUR_SECRET" \
-d '{
"name": "my-agent",
"wallet_public_key": "abc123...",
"wallet_signature": "def456...",
"wallet_nonce": "a1b2c3d4..."
}'The SDK handles signing automatically. If calling directly, sign provenonce-register:<nonce>:<pubkey_hex>:<name> with your Ed25519 private key.
Operator wallet — Model B (two-phase)
Phase 1: same as above but add "wallet_model": "operator".
Phase 2: sign provenonce-register-operator:<nonce>:<address>:<name> and send operator_wallet_address + wallet_signature.
Ethereum wallet (two-phase)
Phase 1: send "action": "challenge" with "wallet_chain": "ethereum".
Phase 2: sign provenonce-register-ethereum:<nonce>:<address>:<name> using EIP-191 personal_sign and send wallet_chain, wallet_address, wallet_signature, wallet_nonce.
Child registration (single-phase)
curl -X POST https://provenonce.io/api/v1/register \
-H "Content-Type: application/json" \
-H "Authorization: Bearer pvn_PARENT_KEY..." \
-d '{"name": "child-agent", "parent": "0xPARENT_HASH...", "spawn_authorization": "SPAWN_TOKEN_FROM_PARENT"}'Children inherit their parent’s lineage. No wallet is assigned to children.
spawn_authorization is required and must be minted by the parent via POST /api/v1/agent/spawn preflight.
Supported chains
| Chain | wallet_chain | Signature scheme |
|---|---|---|
| Solana | "solana" | Ed25519 (provenonce-register:... prefix) |
| Ethereum | "ethereum" | secp256k1 / EIP-191 (provenonce-register-ethereum:... prefix) |
Headers
| Header | Required | Description |
|---|---|---|
Content-Type | Yes | Must be application/json |
x-registration-secret | Root only (mainnet) | Optional on devnet |
Authorization | Child only | Parent’s API key |
Rate limits
- No-wallet registration: 5/hour per IP
- Wallet-bound registration: 10/hour per IP