Skip to main content
POST
/
wallet
/
safe
Deploy deterministic Safe
curl --request POST \
  --url https://relayer.forka.st/wallet/safe \
  --header 'Content-Type: application/json' \
  --data '
{
  "owner": "0x98d2ad0b82a08f17f7d24f0c6d6ec8cb1d8d7ef0",
  "paymentToken": "0x0000000000000000000000000000000000000000",
  "payment": "0",
  "paymentReceiver": "0x7f3a0f1e5b9c86c3d6d1bd116b708d4550d7a6e0",
  "signature": "0x8a8bf977b05d7c2c0f84d602fafd0ea0bff0c09336978d9270a40f6d66166ebf5d09d507e4fb2ff5a6b73ecdfc8d1b4d3671d7ff3aaab1f4a429aec89db1f0951c"
}
'
{
"txHash": "0x4c7f2d9c57e7cf1b1d2c75dae053086eba7a0a44a404f4b1aede2140b9406e0a",
"confirmations": 1
}
Create the deterministic Gnosis Safe proxy associated with your authenticated Forkast account by calling https://relayer.forka.st/wallet/safe. This endpoint uses the same L2 headers as POST /order and only deploys the wallet when the signed payload matches your API key owner.
Send FORKAST_ADDRESS, FORKAST_SIGNATURE, FORKAST_TIMESTAMP, FORKAST_API_KEY, and FORKAST_PASSPHRASE with every request to https://relayer.forka.st/wallet/safe. The owner field must match FORKAST_ADDRESS exactly.
paymentToken defaults to 0x0000000000000000000000000000000000000000 for MATIC-denominated fees. payment usually stays "0" and paymentReceiver may remain the zero address when the deployment is free.

Request body

Root fields

FieldTypeRequiredDescription
ownerstringYesPolygon/EVM address that owns the Safe; must equal the authenticated FORKAST_ADDRESS.
paymentTokenstringNoToken used to pay deployment costs. Defaults to the zero address (MATIC).
paymentstringNoDecimal wei amount charged for deployment. Defaults to "0".
paymentReceiverstringNoAddress that receives payment when non-zero. Defaults to the zero address.
signaturestringYesEIP-712 CreateProxy signature generated by the owner against the Forkast Safe Proxy Factory domain.
All numeric values must be sent as decimal strings; addresses must be zero-padded hex (EIP-55 casing optional). The backend rejects uppercase hex without 0x, negative values, or mismatched owners.

Signature steps

  1. Build the typed data struct CreateProxy(address paymentToken,uint256 payment,address paymentReceiver) using your intended values.
  2. Use signTypedData_v4 (or equivalent) with domain:
    { name: "Forkast Contract Proxy Factory", chainId: <current chain>, verifyingContract: <SAFE_PROXY_FACTORY_ADDRESS> }.
  3. Submit the signed hex string as the signature field. Reusing signatures or modifying fields without re-signing causes safe proxy deployment reverted.

Responses and errors

StatusBodyDescription
200{"txHash":"...","confirmations":1}Safe deployment transaction accepted or reused from a prior execution.
400{"error":"owner_address_mismatch"}owner differs from FORKAST_ADDRESS.
400{"error":"invalid_field ... "}Bad address/hex/value formatting or missing required fields.
400{"error":"safe proxy deployment reverted"}SafeProxyFactory reverted (wrong signature, conflicting proxy salt, etc.).
502{"error":"wallet_transport_error: ..."}RPC or relay transport failure before deployment finalized.
503{"error":"wallet_service_disabled"}Wallet service missing or not configured in the environment.
txHash is the SafeProxyFactory transaction hash. When the Safe already exists, the endpoint returns 0x0000000000000000000000000000000000000000000000000000000000000000 to indicate no new transaction was sent. confirmations still reflects the configured wait target. The wallet address is derived deterministically; check your explorer once the transaction confirms if you need to verify the deployed Safe instance.

Body

application/json
owner
string
required

Polygon/EVM address that must equal the authenticated FORKAST_ADDRESS.

Example:

"0x98d2ad0b82a08f17f7d24f0c6d6ec8cb1d8d7ef0"

signature
string
required

EIP-712 signature over the CreateProxy struct using the Forkast Contract Proxy Factory domain.

Example:

"0x8a8bf977b05d7c2c0f84d602fafd0ea0bff0c09336978d9270a40f6d66166ebf5d09d507e4fb2ff5a6b73ecdfc8d1b4d3671d7ff3aaab1f4a429aec89db1f0951c"

paymentToken
string

Token used to pay deployment fees (zero address represents MATIC). Defaults to 0x000...000.

Example:

"0x0000000000000000000000000000000000000000"

payment
string

Decimal string wei amount charged for deployment. Defaults to "0".

Example:

"0"

paymentReceiver
string

Address that receives the payment amount when non-zero.

Example:

"0x7f3a0f1e5b9c86c3d6d1bd116b708d4550d7a6e0"

Response

Safe deployment transaction accepted or previously deployed Safe detected.

txHash
string
required

SafeProxyFactory transaction hash. Zero hash (0x000…000) means the Safe already existed and no new transaction was submitted.

Example:

"0x4c7f2d9c57e7cf1b1d2c75dae053086eba7a0a44a404f4b1aede2140b9406e0a"

confirmations
integer
required

Number of confirmations waited before returning.

Example:

1