Skip to main content
POST
/
submit
Submit relayer transaction
curl --request POST \
  --url https://relayer.forka.st/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",
    "safeTxGas": "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) or Safe deployment (SAFE-CREATE) to the Forkast relayer. The payload mirrors the structures generated by @polymarket/builder-relayer-client, and the relayer persists it before broadcasting the corresponding transaction on-chain.
Post to https://relayer.forka.st/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. Either SAFE (execution) or SAFE-CREATE (deployment).
fromstringYesSafe owner or signer submitting the request. Must equal FORKAST_ADDRESS.
tostringYesContract executed by the Safe.
proxyWalletstringConditionalExisting Safe proxy executing the call. Required for SAFE operations.
datastringYes0x-prefixed calldata for the Safe transaction.
noncestringYesDecimal Safe nonce obtained from GET /nonce.
valuestringNoAmount of wei to forward. Defaults to "0".
signaturestringYesSafe-compatible signature covering the transaction (EIP-712).
signatureParamsobjectYesGas, refund, and payment metadata described below.
metadatastring|nullNoOptional label stored alongside the transaction.

signatureParams

FieldTypeRequiredDescription
operationstringYesSafe operation code (0 = CALL, 1 = DELEGATECALL).
safeTxGasstringYesSafe gas limit for the execution.
baseGasstringYesExtra gas charged for refunds.
gasPricestringYesGas price used for refund calculations.
gasTokenstringYesToken in which the refund is paid (0x0 for native).
refundReceiverstringYesAddress receiving the refund.
paymentTokenstringConditionalRequired for SAFE-CREATE. Mirrors the deploy builder payload.
paymentstringConditionalRequired for SAFE-CREATE. Amount charged for deployment.
paymentReceiverstringConditionalRequired for SAFE-CREATE. Recipient of the deployment payment.
SAFE-CREATE submissions follow the builder client schema exactly, including initialization calldata and the payment fields listed above. Reuse the payload you already sign before calling safeTxHash = safe.getTransactionHash(...).

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.
  • 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 or SAFE-CREATE payload that the relayer should persist and broadcast.

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

Safe owner submitting the request.

to
string
required

Contract to execute.

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

Existing Safe proxy address (required for SAFE).

value
string
default:0
metadata
string | null

Response

Transaction stored and broadcast.

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