Skip to main content
POST
/
x402
/
agent
/
transfer-ownership
Prepare ERC-8004 identity ownership transfer
curl --request POST \
  --url https://api.sandbox.brickken.com/x402/agent/transfer-ownership \
  --header 'Content-Type: application/json' \
  --header 'X-Payment: <api-key>' \
  --data '
{
  "chainId": "8453",
  "newOwner": "<string>",
  "executionMode": "client-signed",
  "signerAddress": "<string>",
  "gasLimit": "<string>",
  "nonce": 123,
  "privateRpcUrl": "<string>",
  "ownerEmail": "jsmith@example.com",
  "email": "jsmith@example.com",
  "agentUuid": "<string>",
  "agentId": "<string>"
}
'
{
  "transactions": {},
  "txId": "<string>",
  "info": {}
}
Prepares an unsigned ERC-721 safeTransferFrom that moves an ERC-8004 agent identity from Brickken custody to a wallet you control. This facade maps to agentTransferOwnership. By default Brickken is the on-chain owner of the agent identity in brickken-relayed mode. Call this method only when you explicitly want to take custody of the identity NFT yourself.

Authentication

Omit x-api-key. Prepare is free. On POST /send-transactions the API returns 402 Payment Required; sign the x402 payment locally and retry with X-PAYMENT. In brickken-relayed mode Brickken’s relayer (the current owner) signs and broadcasts the transfer once payment is verified.

Key Fields

ParameterRequiredDescription
chainIdYesTarget chain ID. Use 8453 for Base mainnet or 84532 for Base Sepolia. Decimal and hex values are accepted.
newOwnerYesWallet that will receive the ERC-8004 identity NFT. Must differ from the current owner.
agentUuid or agentIdUsuallyAgent identifier from registration or the on-chain agent ID. The agent must already be registered on-chain.
executionModeNobrickken-relayed (recommended) or client-signed.
signerAddressConditionalRequired in client-signed mode (must be the current owner). Omit in brickken-relayed mode.

Response

Returns a prepared unsigned transaction and txId. Submit it to POST /send-transactions and complete the x402 payment.
  • brickken-relayed: send { txId, transactions }; Brickken signs and broadcasts.
  • client-signed: sign the transaction locally as the current owner, then send { txId, signedTransactions }.
Ownership transfer is irreversible and is different from agentSetWallet, which only changes the operational wallet. After the identity leaves Brickken custody, Brickken’s relayer can no longer perform owner-only operations for that agent unless ownership is transferred back.

Authorizations

X-Payment
string
header
required

Base64-encoded x402 payment payload. Supported for x402-eligible agentic methods on /x402/... facades, /prepare-transactions, and eligible /send-transactions retries.

Body

application/json
chainId
string
default:8453
required

Target operation chain ID. Use 8453 on Base mainnet or 84532 on Base Sepolia.

Examples:

"8453"

"84532"

newOwner
string
required

Wallet that will receive the ERC-8004 identity NFT.

Pattern: ^0x[a-fA-F0-9]{40}$
executionMode
enum<string>
default:client-signed

Execution mode. Use brickken-relayed to let Brickken's relayer sign, pay gas, and broadcast (omit signerAddress). Use client-signed to sign the prepared transaction yourself.

Available options:
brickken-relayed,
client-signed
signerAddress
string

Wallet that signs the prepared blockchain transaction. Required only in client-signed mode; omit in brickken-relayed mode.

Pattern: ^0x[a-fA-F0-9]{40}$
gasLimit

Optional explicit gas limit.

nonce
number

Optional explicit nonce when managing nonces manually.

privateRpcUrl
string

Optional private RPC URL override.

ownerEmail
string<email>

Optional owner attribution email.

email
string<email>

Alias for ownerEmail where supported.

agentUuid
string

Stored tokenized agent UUID returned by agentRegister.

agentId
string

On-chain ERC-8004 agent ID.

Response

Prepared unsigned transaction payload.

transactions
object
txId
string
info
object