Skip to main content
POST
Prepare RAMS execute
Maps to ramsExecute. signerAddress must be the mandate’s agent.
This operation is always client-signed. brickken-relayed is rejected because the AgentExecutor checks msg.sender against the mandated agent.

Input modes

Exactly one mode is accepted. The API reads the selector registration, derives any cap-gated amount, and simulates mandate authorization before returning the unsigned executor transaction.

Next step

Preparing does not touch the chain. The response gives you txId, the unsigned transactions, and an x402Requirements quote.
1

Choose who signs and who broadcasts

brickken-relayed — the relayer signs, broadcasts, and pays the native gas; you sign only the payment, and prepare is free. client-signed (the default) — you sign, Brickken broadcasts. client-broadcast — you sign and broadcast yourself, then confirm with txHash. Both client-controlled modes charge half the price at prepare and half at send.Relaying is available on the ERC-8004 and agent-token facades and on the four signed RAMS lifecycle calls. The other RAMS operations check msg.sender against an on-chain role, so they reject it.
2

Submit it and settle the payment

POST to /send-transactions. The first attempt answers 402 Payment Required; read PAYMENT-REQUIRED, sign the payment locally, and retry with X-PAYMENT. An API key is accepted here only in client-signed mode.
3

Poll until it confirms

Call GET /get-transaction-status with the txId. Relayed transactions need no credential to poll. Your payment settles only after the operation confirms, and is released if it reverts.
See Authentication for the payment handshake and Pricing for the per-operation cost.

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:11155111
required

Target operation chain ID. RAMS is available on Ethereum Sepolia (11155111) only at launch. Decimal and 0x hex values are accepted.

Examples:

"11155111"

"0xaa36a7"

signerAddress
string
required

MUST be the agent wallet named in the mandate — msg.sender of AgentExecutor.execute is the agent. This operation is always client-signed and can never be brickken-relayed.

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

Raw mode: the contract the executor will call (e.g. the asset). Required when data is provided.

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

Raw mode: full inner calldata for target, at least 4 bytes. When present the request is treated as raw mode and asset/from/to/amount are ignored.

Pattern: ^0x([a-fA-F0-9]{2})*$
asset
string

Transfer-helper mode (data absent): token to move; becomes the executor call target.

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

Transfer-helper mode: token holder — normally the executor's bound principal. The response info warns when it differs from AgentExecutor.principal().

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

Transfer-helper mode: transfer recipient.

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

Transfer-helper mode: transfer amount. Raw base units — no decimals scaling is applied. Decimal string (canonical), 0x hex string, or number accepted.

executorAddress
string

Optional AgentExecutor contract override; defaults to the chain's configured (platform) RAMS AgentExecutor address. Executors are per-principal — pass the principal's executor here.

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

Optional explicit gas limit.

nonce
number

Optional explicit transaction nonce when managing nonces manually.

ownerEmail
string<email>

Optional owner attribution email.

email
string<email>

Alias for ownerEmail where supported.

Response

Prepared unsigned transaction payload.

data
object