Skip to main content
POST
/
submit
Submit relayer transaction
curl --request POST \
  --url https://relayer.kuest.com/submit \
  --header 'Content-Type: application/json' \
  --data '
{
  "type": "SAFE",
  "from": "0x0B2B3E6B323C0Cd7bEaf4B7cC73b983D4E9B12c7",
  "to": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
  "proxyWallet": "0x3f8Be6FC21f4a5127A42CE1aF58d8bCb8A94F3c1",
  "data": "0x095ea7b30000000000000000000000004d97dcd97ec945f40cf65f87097ace5ea0476045ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
  "nonce": "7",
  "value": "0",
  "signature": "0xf368488355b0566e99eff3bccc35e98b77d8f3a6e6866176188488c34f0305b07e4a4c600c7a1592e4ac1e96b5887ebff2cb26987a3ad501006b39944df098c21f",
  "signatureParams": {
    "operation": "0",
    "safeTxnGas": "0",
    "baseGas": "0",
    "gasPrice": "0",
    "gasToken": "0x0000000000000000000000000000000000000000",
    "refundReceiver": "0x0000000000000000000000000000000000000000"
  },
  "metadata": "usdc approval ctf"
}
'
{
  "transactionID": "01JAA0Y2Q9M5T8M6P5HAX7F1RM",
  "state": "STATE_MINED",
  "transactionHash": "0xaabc8230e2bf9c5f5d514b8a9be4739fce8c17b1d0a4b8d9ae8ea7e7da65e021",
  "hash": "0xaabc8230e2bf9c5f5d514b8a9be4739fce8c17b1d0a4b8d9ae8ea7e7da65e021"
}
Send a signed Safe execution (SAFE), Safe deployment (SAFE-CREATE), or proxy relay (PROXY) to the Kuest relayer. The payload mirrors the structures generated by the builder relayer client library, and the relayer persists it before broadcasting the corresponding transaction on-chain.
Post to https://relayer.kuest.com/submit using the same L2 headers used for CLOB requests. The relayer verifies that the from address (and Safe owner) matches your authenticated account before queuing the transaction.

Request body

Root fields

FieldTypeRequiredDescription
typestringYesOperation type. SAFE (execution), SAFE-CREATE (deployment), or PROXY (proxy relay).
fromstringYesSafe owner or signer submitting the request. Must equal KUEST_ADDRESS.
tostringYesContract executed by the Safe or proxy wallet.
proxyWalletstringConditionalProxy address executing the call. Required for SAFE and PROXY operations.
datastringYes0x-prefixed calldata for the transaction.
noncestringConditionalRequired for SAFE and PROXY. Optional for SAFE-CREATE (the relayer assigns the next nonce when omitted).
valuestringNoAmount of wei to forward. Defaults to "0".
signaturestringYesSignature covering the transaction.
signatureParamsobjectYesGas, refund, and payment metadata described below.
metadatastring|nullNoOptional label stored alongside the transaction.

signatureParams

FieldTypeRequiredDescription
operationstringConditionalSAFE only. Operation code (0 = CALL, 1 = DELEGATECALL).
safeTxnGasstringConditionalSAFE only. Safe gas limit for the execution.
baseGasstringConditionalSAFE only. Extra gas charged for refunds.
gasPricestringConditionalSAFE and PROXY. Gas price used in signature data.
gasTokenstringConditionalSAFE only. Token in which the refund is paid (0x0 for native).
refundReceiverstringConditionalSAFE only. Address receiving the refund.
gasLimitstringConditionalPROXY only. Relay gas limit used in the proxy signature.
relayerFeestringConditionalPROXY only. Relay fee used in the proxy signature.
relayHubstringConditionalPROXY only. Relay hub address used in the proxy signature.
relaystringConditionalPROXY only. Relay address used in the proxy signature.
paymentTokenstringConditionalSAFE-CREATE only. Mirrors the deploy builder payload.
paymentstringConditionalSAFE-CREATE only. Amount charged for deployment.
paymentReceiverstringConditionalSAFE-CREATE only. Recipient of the deployment payment.
SAFE-CREATE submissions follow the builder client schema exactly, including initialization calldata and the payment fields listed above. safeTxnGas is accepted as safeTxGas for compatibility with older payloads.

Behavior and errors

  • Requests are validated immediately. Schema issues return 400 with details about the invalid field.
  • Duplicate nonces are rejected with 409 conflict; fetch a fresh nonce and resubmit if the previous attempt succeeded.
  • For PROXY, call GET /relay-payload to fetch the relay address and nonce before signing.
  • The endpoint returns transactionID even before the transaction is mined. Use GET /transaction to poll for state changes.
  • When the relayer cannot broadcast on-chain, it transitions the stored record to STATE_FAILED and exposes the RPC error via GET /transaction.

Body

application/json

Signed SAFE, SAFE-CREATE, or PROXY payload that the relayer should persist and broadcast.

type
enum<string>
required
Available options:
SAFE,
SAFE-CREATE,
PROXY
from
string
required

Safe owner submitting the request.

to
string
required

Contract to execute.

data
string
required
signature
string
required
signatureParams
object
required
proxyWallet
string | null

Proxy address tied to the request (required for SAFE and PROXY).

nonce
string

Required for SAFE and PROXY submissions.

value
string
default:0
metadata
string | null

Response

Transaction stored and broadcast.

transactionID
string
required
state
string
required
transactionHash
string | null
hash
string | null