Submits RelayHub-backed smart wallet calls through the Forkast relayer. Requires the same L2 authentication headers used by POST /order.
https://relayer.forka.st/wallet/proxy). This router shares the exact authentication headers used by POST /order and executes transactions from the managed proxy wallet tied to your API key.
https://relayer.forka.st/wallet/proxy with the L2 headers FORKAST_ADDRESS, FORKAST_SIGNATURE, FORKAST_TIMESTAMP, FORKAST_API_KEY, and FORKAST_PASSPHRASE. The owner field must match FORKAST_ADDRESS.calls defaults to an empty array. When you omit calls the relay only ensures the smart wallet is deployed, increments the nonce, and returns the RelayHub transaction hash.calls array, the service does not post a new RelayHub transaction and responds with txHash = 0x000…000 while still reporting the configured confirmation target.| Field | Type | Required | Description |
|---|---|---|---|
owner | string | Yes | Polygon/EVM address that matches the authenticated API key. |
calls | array<object> | No | Ordered list of proxy invocations. Defaults to []. |
nonce | string | Yes | Decimal RelayHub nonce for owner. Fetch with RelayHub.getNonce(owner). |
signature | string | Yes | EIP-191 signature covering the payload defined in Signature requirements. |
approvalData | string | No | Hex blob forwarded to acceptRelayedCall. Use 0x when unused. |
calls[])| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | "CALL" for a standard call or "DELEGATE_CALL" to preserve storage context (1 and 2 respectively on-chain). |
to | string | Yes | Target contract address. |
value | string | No | Decimal string amount of wei to forward. Defaults to "0". |
data | string | No | Lowercase 0x-prefixed calldata. Defaults to 0x. |
value and data must be strictly formatted strings—no scientific notation or uppercase hex. The router executes calls sequentially and stops if any revert, surfacing the RelayHub error.
calls array).txHash) plus confirmation depth once available.400 {"error":"relay call reverted"} along with the revert reason in the logs.nonce = RelayHub.getNonce(owner) before constructing the payload.keccak256(abi.encodePacked("rlx:", owner, proxyFactory, encodedFunction, transactionFee, gasPrice, gasLimit, nonce, relayHub, relayAddress)).transactionFee, gasPrice, and gasLimit match the configured backend values. Mismatches cause WrongSignature/WrongNonce errors that bubble up as 400 responses.toEthSignedMessageHash() (EIP-191) using the same key referenced by the FORKAST_ADDRESS header.| Status | Body | Description |
|---|---|---|
200 | {"txHash": "...","confirmations": 1} | RelayHub accepted the call and the transaction hash is returned. confirmations increments as replays are queried. |
400 | {"error":"owner_address_mismatch"} | owner differs from the authenticated address. |
400 | {"error":"invalid_field ... "} | Malformed address/hex/value, negative numbers, or schema violations. |
400 | {"error":"relay call reverted"} | Proxy execution reverted inside the recipient contract. |
400/503 | {"error":"wallet_service_disabled"} | Wallet service missing or disabled in the environment. |
502 | {"error":"wallet_transport_error: ..."} | RPC/RelayHub transport failure before execution. |
txHash always references the RelayHub transaction—use your own wallet logs or explorer traces if you need the proxy wallet address or emitted events from downstream contracts.Polygon/EVM address that must match the FORKAST_ADDRESS header.
"0x82d3c1afe6b917c2d4ef6ab3b5c17408b9f5a4ce"
Decimal RelayHub nonce for the owner. Fetch it via RelayHub.getNonce(owner).
"17"
EIP-191 signature produced over the OpenZeppelin GSN v1 payload.
"0xbd8cd8efe71e382e0ab025ede9a7b09e34154a2796ae036bf438082e35801297c4a262fc73c55690f4c7da011f82ef80e8f0d1a36078fac3b7eaa1280b6366baf6"
Ordered list of proxy wallet invocations. Defaults to an empty array to trigger wallet deployment only.
[
{
"type": "CALL",
"to": "0x5fa1e8b0dc9b67a4350e2cfea3d5b7c48290d579",
"value": "0",
"data": "0xa9059cbb000000000000000000000000b9d7c3f1e6a547281bf4aca0fe4d73c5887c1d5a00000000000000000000000000000000000000000000000000000000000003e8"
}
]Hex blob forwarded to acceptRelayedCall. Use 0x to skip.
"0x"