curl --request POST \
--url https://api.sandbox.brickken.com/x402/agent/register \
--header 'Content-Type: application/json' \
--header 'X-Payment: <api-key>' \
--data '
{
"chainId": "8453",
"name": "<string>",
"description": "<string>",
"image": "<string>",
"services": [
{
"name": "<string>",
"endpoint": "<string>",
"version": "<string>"
}
],
"executionMode": "client-signed",
"signerAddress": "<string>",
"gasLimit": "<string>",
"nonce": 123,
"privateRpcUrl": "<string>",
"ownerEmail": "jsmith@example.com",
"email": "jsmith@example.com",
"metadata": {},
"aiModelName": "<string>",
"aiModelProvider": "<string>",
"tags": [
"<string>"
],
"version": "<string>",
"documentation": "<string>",
"sourceCode": "<string>",
"license": "<string>",
"agentType": "<string>",
"supportedTrust": [
"<string>"
],
"x402Support": true,
"active": true,
"registrations": [
{}
]
}
'import requests
url = "https://api.sandbox.brickken.com/x402/agent/register"
payload = {
"chainId": "8453",
"name": "<string>",
"description": "<string>",
"image": "<string>",
"services": [
{
"name": "<string>",
"endpoint": "<string>",
"version": "<string>"
}
],
"executionMode": "client-signed",
"signerAddress": "<string>",
"gasLimit": "<string>",
"nonce": 123,
"privateRpcUrl": "<string>",
"ownerEmail": "jsmith@example.com",
"email": "jsmith@example.com",
"metadata": {},
"aiModelName": "<string>",
"aiModelProvider": "<string>",
"tags": ["<string>"],
"version": "<string>",
"documentation": "<string>",
"sourceCode": "<string>",
"license": "<string>",
"agentType": "<string>",
"supportedTrust": ["<string>"],
"x402Support": True,
"active": True,
"registrations": [{}]
}
headers = {
"X-Payment": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Payment': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chainId: '8453',
name: '<string>',
description: '<string>',
image: '<string>',
services: [{name: '<string>', endpoint: '<string>', version: '<string>'}],
executionMode: 'client-signed',
signerAddress: '<string>',
gasLimit: '<string>',
nonce: 123,
privateRpcUrl: '<string>',
ownerEmail: 'jsmith@example.com',
email: 'jsmith@example.com',
metadata: {},
aiModelName: '<string>',
aiModelProvider: '<string>',
tags: ['<string>'],
version: '<string>',
documentation: '<string>',
sourceCode: '<string>',
license: '<string>',
agentType: '<string>',
supportedTrust: ['<string>'],
x402Support: true,
active: true,
registrations: [{}]
})
};
fetch('https://api.sandbox.brickken.com/x402/agent/register', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.brickken.com/x402/agent/register",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chainId' => '8453',
'name' => '<string>',
'description' => '<string>',
'image' => '<string>',
'services' => [
[
'name' => '<string>',
'endpoint' => '<string>',
'version' => '<string>'
]
],
'executionMode' => 'client-signed',
'signerAddress' => '<string>',
'gasLimit' => '<string>',
'nonce' => 123,
'privateRpcUrl' => '<string>',
'ownerEmail' => 'jsmith@example.com',
'email' => 'jsmith@example.com',
'metadata' => [
],
'aiModelName' => '<string>',
'aiModelProvider' => '<string>',
'tags' => [
'<string>'
],
'version' => '<string>',
'documentation' => '<string>',
'sourceCode' => '<string>',
'license' => '<string>',
'agentType' => '<string>',
'supportedTrust' => [
'<string>'
],
'x402Support' => true,
'active' => true,
'registrations' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Payment: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.brickken.com/x402/agent/register"
payload := strings.NewReader("{\n \"chainId\": \"8453\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"services\": [\n {\n \"name\": \"<string>\",\n \"endpoint\": \"<string>\",\n \"version\": \"<string>\"\n }\n ],\n \"executionMode\": \"client-signed\",\n \"signerAddress\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"nonce\": 123,\n \"privateRpcUrl\": \"<string>\",\n \"ownerEmail\": \"jsmith@example.com\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"aiModelName\": \"<string>\",\n \"aiModelProvider\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"documentation\": \"<string>\",\n \"sourceCode\": \"<string>\",\n \"license\": \"<string>\",\n \"agentType\": \"<string>\",\n \"supportedTrust\": [\n \"<string>\"\n ],\n \"x402Support\": true,\n \"active\": true,\n \"registrations\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Payment", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.brickken.com/x402/agent/register")
.header("X-Payment", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chainId\": \"8453\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"services\": [\n {\n \"name\": \"<string>\",\n \"endpoint\": \"<string>\",\n \"version\": \"<string>\"\n }\n ],\n \"executionMode\": \"client-signed\",\n \"signerAddress\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"nonce\": 123,\n \"privateRpcUrl\": \"<string>\",\n \"ownerEmail\": \"jsmith@example.com\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"aiModelName\": \"<string>\",\n \"aiModelProvider\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"documentation\": \"<string>\",\n \"sourceCode\": \"<string>\",\n \"license\": \"<string>\",\n \"agentType\": \"<string>\",\n \"supportedTrust\": [\n \"<string>\"\n ],\n \"x402Support\": true,\n \"active\": true,\n \"registrations\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.brickken.com/x402/agent/register")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Payment"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chainId\": \"8453\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"services\": [\n {\n \"name\": \"<string>\",\n \"endpoint\": \"<string>\",\n \"version\": \"<string>\"\n }\n ],\n \"executionMode\": \"client-signed\",\n \"signerAddress\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"nonce\": 123,\n \"privateRpcUrl\": \"<string>\",\n \"ownerEmail\": \"jsmith@example.com\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"aiModelName\": \"<string>\",\n \"aiModelProvider\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"documentation\": \"<string>\",\n \"sourceCode\": \"<string>\",\n \"license\": \"<string>\",\n \"agentType\": \"<string>\",\n \"supportedTrust\": [\n \"<string>\"\n ],\n \"x402Support\": true,\n \"active\": true,\n \"registrations\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"transactions": {},
"txId": "<string>",
"info": {}
}Register Agent
Prepare an ERC-8004 agent registration through x402.
curl --request POST \
--url https://api.sandbox.brickken.com/x402/agent/register \
--header 'Content-Type: application/json' \
--header 'X-Payment: <api-key>' \
--data '
{
"chainId": "8453",
"name": "<string>",
"description": "<string>",
"image": "<string>",
"services": [
{
"name": "<string>",
"endpoint": "<string>",
"version": "<string>"
}
],
"executionMode": "client-signed",
"signerAddress": "<string>",
"gasLimit": "<string>",
"nonce": 123,
"privateRpcUrl": "<string>",
"ownerEmail": "jsmith@example.com",
"email": "jsmith@example.com",
"metadata": {},
"aiModelName": "<string>",
"aiModelProvider": "<string>",
"tags": [
"<string>"
],
"version": "<string>",
"documentation": "<string>",
"sourceCode": "<string>",
"license": "<string>",
"agentType": "<string>",
"supportedTrust": [
"<string>"
],
"x402Support": true,
"active": true,
"registrations": [
{}
]
}
'import requests
url = "https://api.sandbox.brickken.com/x402/agent/register"
payload = {
"chainId": "8453",
"name": "<string>",
"description": "<string>",
"image": "<string>",
"services": [
{
"name": "<string>",
"endpoint": "<string>",
"version": "<string>"
}
],
"executionMode": "client-signed",
"signerAddress": "<string>",
"gasLimit": "<string>",
"nonce": 123,
"privateRpcUrl": "<string>",
"ownerEmail": "jsmith@example.com",
"email": "jsmith@example.com",
"metadata": {},
"aiModelName": "<string>",
"aiModelProvider": "<string>",
"tags": ["<string>"],
"version": "<string>",
"documentation": "<string>",
"sourceCode": "<string>",
"license": "<string>",
"agentType": "<string>",
"supportedTrust": ["<string>"],
"x402Support": True,
"active": True,
"registrations": [{}]
}
headers = {
"X-Payment": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Payment': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chainId: '8453',
name: '<string>',
description: '<string>',
image: '<string>',
services: [{name: '<string>', endpoint: '<string>', version: '<string>'}],
executionMode: 'client-signed',
signerAddress: '<string>',
gasLimit: '<string>',
nonce: 123,
privateRpcUrl: '<string>',
ownerEmail: 'jsmith@example.com',
email: 'jsmith@example.com',
metadata: {},
aiModelName: '<string>',
aiModelProvider: '<string>',
tags: ['<string>'],
version: '<string>',
documentation: '<string>',
sourceCode: '<string>',
license: '<string>',
agentType: '<string>',
supportedTrust: ['<string>'],
x402Support: true,
active: true,
registrations: [{}]
})
};
fetch('https://api.sandbox.brickken.com/x402/agent/register', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.brickken.com/x402/agent/register",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chainId' => '8453',
'name' => '<string>',
'description' => '<string>',
'image' => '<string>',
'services' => [
[
'name' => '<string>',
'endpoint' => '<string>',
'version' => '<string>'
]
],
'executionMode' => 'client-signed',
'signerAddress' => '<string>',
'gasLimit' => '<string>',
'nonce' => 123,
'privateRpcUrl' => '<string>',
'ownerEmail' => 'jsmith@example.com',
'email' => 'jsmith@example.com',
'metadata' => [
],
'aiModelName' => '<string>',
'aiModelProvider' => '<string>',
'tags' => [
'<string>'
],
'version' => '<string>',
'documentation' => '<string>',
'sourceCode' => '<string>',
'license' => '<string>',
'agentType' => '<string>',
'supportedTrust' => [
'<string>'
],
'x402Support' => true,
'active' => true,
'registrations' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Payment: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.brickken.com/x402/agent/register"
payload := strings.NewReader("{\n \"chainId\": \"8453\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"services\": [\n {\n \"name\": \"<string>\",\n \"endpoint\": \"<string>\",\n \"version\": \"<string>\"\n }\n ],\n \"executionMode\": \"client-signed\",\n \"signerAddress\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"nonce\": 123,\n \"privateRpcUrl\": \"<string>\",\n \"ownerEmail\": \"jsmith@example.com\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"aiModelName\": \"<string>\",\n \"aiModelProvider\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"documentation\": \"<string>\",\n \"sourceCode\": \"<string>\",\n \"license\": \"<string>\",\n \"agentType\": \"<string>\",\n \"supportedTrust\": [\n \"<string>\"\n ],\n \"x402Support\": true,\n \"active\": true,\n \"registrations\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Payment", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.brickken.com/x402/agent/register")
.header("X-Payment", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chainId\": \"8453\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"services\": [\n {\n \"name\": \"<string>\",\n \"endpoint\": \"<string>\",\n \"version\": \"<string>\"\n }\n ],\n \"executionMode\": \"client-signed\",\n \"signerAddress\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"nonce\": 123,\n \"privateRpcUrl\": \"<string>\",\n \"ownerEmail\": \"jsmith@example.com\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"aiModelName\": \"<string>\",\n \"aiModelProvider\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"documentation\": \"<string>\",\n \"sourceCode\": \"<string>\",\n \"license\": \"<string>\",\n \"agentType\": \"<string>\",\n \"supportedTrust\": [\n \"<string>\"\n ],\n \"x402Support\": true,\n \"active\": true,\n \"registrations\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.brickken.com/x402/agent/register")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Payment"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chainId\": \"8453\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"services\": [\n {\n \"name\": \"<string>\",\n \"endpoint\": \"<string>\",\n \"version\": \"<string>\"\n }\n ],\n \"executionMode\": \"client-signed\",\n \"signerAddress\": \"<string>\",\n \"gasLimit\": \"<string>\",\n \"nonce\": 123,\n \"privateRpcUrl\": \"<string>\",\n \"ownerEmail\": \"jsmith@example.com\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"aiModelName\": \"<string>\",\n \"aiModelProvider\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"documentation\": \"<string>\",\n \"sourceCode\": \"<string>\",\n \"license\": \"<string>\",\n \"agentType\": \"<string>\",\n \"supportedTrust\": [\n \"<string>\"\n ],\n \"x402Support\": true,\n \"active\": true,\n \"registrations\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"transactions": {},
"txId": "<string>",
"info": {}
}agentRegister.
Authentication
Omitx-api-key. Prepare is free; the x402 payment is charged on POST /send-transactions, where the API returns 402 Payment Required. Sign the x402 payment locally and retry with X-PAYMENT. In brickken-relayed mode (recommended) Brickken’s relayer signs and broadcasts; in client-signed mode you sign the prepared transaction first.
Key Fields
| Parameter | Required | Description |
|---|---|---|
chainId | Yes | Target chain ID. Use 8453 for Base mainnet or 84532 for Base Sepolia tests. Decimal and hex values are accepted. |
executionMode | No | brickken-relayed (recommended) or client-signed. |
signerAddress | Conditional | Required in client-signed mode. Omit in brickken-relayed mode (Brickken signs). |
name | Yes | Human-readable agent name. |
description | Yes | Agent description. |
image | Yes | Publicly reachable HTTPS URL for the agent logo. Local paths and omitted values are rejected. |
services | Yes | Service descriptors such as A2A endpoints. |
aiModelName, aiModelProvider | No | AI model metadata published with the agent profile. |
x402Support, active | No | Agent capability and status flags. |
image is mandatory. Provide the final public logo URL, or an explicitly authorized test fixture; requests without it fail with image is required.Response
Returns prepared unsigned transactions andtxId. Save info.agentUuid from the response for future URI, metadata, wallet, and ownership-transfer updates.
Submit it to POST /send-transactions: in brickken-relayed mode send { txId, transactions } and pay via x402 (Brickken signs and broadcasts); in client-signed mode sign the transaction locally and send { txId, signedTransactions }.Authorizations
Base64-encoded x402 payment payload. Supported for x402-eligible agentic methods on /x402/... facades, /prepare-transactions, and eligible /send-transactions retries.
Body
Target operation chain ID. Use 8453 on Base mainnet or 84532 on Base Sepolia.
"8453"
"84532"
Show child attributes
Show child attributes
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.
brickken-relayed, client-signed Wallet that signs the prepared blockchain transaction. Required only in client-signed mode; omit in brickken-relayed mode.
^0x[a-fA-F0-9]{40}$Optional explicit gas limit.
Optional explicit nonce when managing nonces manually.
Optional private RPC URL override.
Optional owner attribution email.
Alias for ownerEmail where supported.