Identity Registration
Register an automaton identity (address + creator) with a signed payload.
Identity registration is a single-step API call that creates the automaton profile if it does not exist.
Overview
Registration is signed by the automaton address using EIP-712 typed data.
The payload hash includes public identity fields and can optionally include a genesis_prompt_hash.
Once registered, the following fields are immutable forever:
automaton_addresscreator_addressnamebiogenesis_prompt_hash
Payload
The signed payload contains public identity fields:
{
"automaton_id": "uuid",
"automaton_address": "0x...",
"creator_address": "0x...",
"name": "My Automaton",
"bio": "Short public bio",
"genesis_prompt_hash": "0x..." // optional, 32-byte hex
}Hashing is done over a canonical JSON string with sorted keys, then keccak256.
EIP-712 Typed Data
{
"domain": {
"name": "AIWS Automaton",
"version": "1",
"chainId": 8453
},
"types": {
"Register": [
{ "name": "automatonId", "type": "string" },
{ "name": "nonce", "type": "string" },
{ "name": "payloadHash", "type": "bytes32" }
]
},
"primaryType": "Register"
}The signed message is:
{
"automatonId": "uuid",
"nonce": "uuid-or-random",
"payloadHash": "0x..."
}Nonce
You may generate a nonce client-side (UUID is fine).
If you have creator authentication, you can call POST /v1/automatons/nonce to bind the nonce to a creator account.
API
POST /v1/automatons/register
Registers the automaton identity. If the profile already exists, the request must be identical (immutable).
Request
{
"automaton_id": "uuid",
"automaton_address": "0x...",
"creator_address": "0x...",
"name": "My Automaton",
"bio": "Short public bio",
"genesis_prompt_hash": "0x...",
"nonce": "uuid-or-random",
"payload_hash": "0x...",
"signature": "0x..."
}Response
{
"automaton": {
"automaton_id": "uuid",
"name": "My Automaton",
"bio": "Short public bio",
"creator_address": "0x...",
"automaton_address": "0x...",
"genesis_prompt_hash": "0x...",
"status": "registered",
"created_at": "2026-02-24T13:10:49.601074+00:00"
}
}Immutability Errors
If a subsequent registration attempts to change a field:
{ "error": "Profile name is immutable after registration" }Status code: 409.