Skip to main content
POST
CreateSigningRequest
Transaction, chain-specific message and raw signing requests can be signed in the MPCVault mobile app or with an API client signer. Select one payload type in the playground. Use the network tutorials for request examples. API client signing uses vaultUuid and callbackClientSignerPublicKey; manual signing on app-managed wallets omits the signer key. The response returns signingRequest.uuid for review and signing. The queryable SigningRequest payload set is broader than this method’s accepted type members. Existing swaps, batch-payment bodies, fiat payments, Aptos coin registration/direct NFT receipt, vault/key management requests, Stellar messages/authorizations/challenges and Aptos whole-transaction requests cannot be created with this endpoint. Message network and Solana jito are output-only context and are rejected on creation. The created response does not populate detail-only fields; retrieve the UUID with GetSigningRequestDetails for inspection and approval state.

Authorizations

x-mtoken
string
header
required

Your API token. Required for all API requests.

Body

application/json

The vault and wallet to create the request in, and exactly one payload field for the kind of request to create. The payload's from wallet must be active (a pending or archived wallet is rejected) and in a vault the API token can access. Amounts and gas values given as strings are non-negative integers (digits only) in the network's smallest unit, except Stellar amounts, which are decimals in whole units. A token transfer is rejected when the token cannot be resolved on the network or is marked as spam in the vault. A transaction, chain-specific message or raw signing request without callbackClientSignerPublicKey is shown in the MPCVault app. Creating a transaction request is rejected once the API token has 500 pending requests of that kind (messages included).

evmSendNative
object | null
conditionally required
evmSendErc20
object | null
conditionally required
evmSendCustom
object | null
conditionally required
btcSendNative
object | null
conditionally required
tronSendNative
object | null
conditionally required
tronSendTrc10
object | null
conditionally required
tronSendTrc20
object | null
conditionally required
aptosSendNative
object | null
conditionally required
aptosSendCoin
object | null
conditionally required
aptosSendCustom
object | null
conditionally required
suiSendNative
object | null
conditionally required
suiSendCoin
object | null
conditionally required
suiSendCustom
object | null
conditionally required
solanaSendNative
object | null
conditionally required
solanaSendSplToken
object | null
conditionally required
evmMessage
object | null
conditionally required
aptosMessage
object | null
conditionally required
solanaMessage
object | null
conditionally required
rawMessage
object | null
conditionally required
suiMessage
object | null
conditionally required
tonSendNative
object | null
conditionally required
tonSendToken
object | null
conditionally required
tonSendCustom
object | null
conditionally required
tonMessage
object | null
conditionally required
solanaSendCustom
object | null
conditionally required
sonicSvmSendNative
object | null
conditionally required
sonicSvmSendSplToken
object | null
conditionally required
sonicSvmSendCustom
object | null
conditionally required
stellarSendNative
object | null
conditionally required
stellarSendAsset
object | null
conditionally required
stellarSendCustom
object | null
conditionally required

StellarSendCustom signs an existing transaction envelope or the wallet's matching Soroban authorizations.

stellarChangeTrust
object | null
conditionally required
notes
string | null

Transaction notes for the signing request.

Example:

"send 1 eth to <string>"

vaultUuid
string<uuid> | null

UUID of the vault that owns the from wallet. Required when callbackClientSignerPublicKey is set. For App raw signing it is optional, but must match the wallet's vault when provided. For evmMessage on a custom EVM network it selects the vault's custom network; otherwise it is ignored for App signing.

Example:

"<string>"

callbackClientSignerPublicKey
string | null

OpenSSH authorized_keys public key of the API client signer (ssh-ed25519). Omit it or send null for App signing of a transaction, chain-specific message or rawMessage; an empty string is rejected. For API client signing, supply this key and vaultUuid. The key must match the signer configured for the wallet's vault, and the caller IP must be allowed by that signer. API wallets require API client signing. A misspelled field name is ignored and treated as omitted.

Example:

"<string>"

broadcastTx
boolean | null
default:true

Whether MPCVault broadcasts the transaction after it is signed. Omitted or null means true; send false to receive the signed transaction and broadcast it yourself. Not supported for message types, rawMessage, or transactions on custom EVM networks. All other standard transactions on system chains are supported.

Response

200 - application/json

OK

signingRequest
object | null

Created request. Detail-only fields are omitted; see each SigningRequest field.

error
object | null

Exactly one of the two error code fields is set.