Skip to main content
POST
CreateSigningRequest
Creates a signing request that can be completed in the MPCVault mobile app (manual) or with the API client signer (programmatic). In the Try It playground, select a transaction type from the tabs and fill in the required fields.

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 or structured message 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).

notes
string | null

Transaction notes for the signing request.

vaultUuid
string<uuid> | null

UUID of the vault that owns the from wallet. Required when callbackClientSignerPublicKey is set (it must be the vault that owns the from wallet) and always for rawMessage. Otherwise it is ignored, except for evmMessage on a custom EVM network, where it selects the vault's custom network.

Example:

"9f5ee5fb-07f5-470c-a2ff-081e2d6d107a"

callbackClientSignerPublicKey
string | null

Public key of the API client signer that receives the callback: OpenSSH authorized_keys text of an ssh-ed25519 key. For a transaction or structured message, omit it, or send null, to show the request in the MPCVault app for manual signing; an empty string is rejected. Required for rawMessage. An API wallet can only be signed by an API client signer, so set it for requests on an API wallet; the create call does not check this. When set, it must be the public key of the API client signer configured for the vault that owns the from wallet (any other key is rejected), and the caller's IP address must be in that signer's IP whitelist. A misspelled field name is ignored and read as omitted: manual signing for a transaction or structured message, and a ClientSignerPublicKey is required rejection for rawMessage.

Example:

"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDmdWUo3e3/xUd0kbXCz4omzhqcYaPPYNTZ6ndqZdBAo test"

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.

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

Response

200 - application/json

Success

signingRequest
object | null

Signing request that was created.

error
object | null

Exactly one of the two error code fields is set.