API Reference
PlatformAPI
rpc CreateSigningRequest
CreateSigningRequest creates a signing request. The signing request can be completed using the MPCVault mobile app or using the API client signer.
Request mpcvault.platform.v1.CreateSigningRequestRequest
type
type is the type of the signing request. It is a oneof field.
notes
notes is the transaction notes for the signing request.
vault_uuid
vault_uuid is the UUID of the vault that the signing request will be created in.
callback_client_signer_public_key
callback_client_signer_public_key is the public key of the api client signer for callback
It is used to identify the where we should send the callback to. If empty, we will show the signing request in the MPCVault mobile app for manual signing.
Note that if the signing request is created by an api wallet, this field must be set as api wallets can only be signed by the api client signer at the moment.
Response mpcvault.platform.v1.CreateSigningRequestResponse
signing_request
signing_request is the signing request that was created.
error
rpc RejectSigningRequest
RejectSigningRequest rejects a signing request. Once a signing request is rejected, it cannot be re-opened.
Request mpcvault.platform.v1.RejectSigningRequestRequest
uuid
Response mpcvault.platform.v1.RejectSigningRequestResponse
error
rpc GetSigningRequestDetails
GetSigningRequestDetails returns the details of a signing request.
It will contain the signing request status and the transaction hash if the signing request was completed.
Request mpcvault.platform.v1.GetSigningRequestDetailsRequest
uuid
Response mpcvault.platform.v1.GetSigningRequestDetailsResponse
signing_request
error
rpc CreateBatchPayment
CreateBatchPayment creates a batch payment. You will need to complete the batch payment using the MPCVault web app.
Request mpcvault.platform.v1.CreateBatchPaymentRequest
name
name is the name of the batch payment.
notes
notes is the transaction notes for the batch payment.
type
Response mpcvault.platform.v1.CreateBatchPaymentResponse
batch_payment
error
rpc GetBatchPaymentDetails
GetBatchPaymentDetails returns the details of a batch payment including the signing requests.
Request mpcvault.platform.v1.GetBatchPaymentDetailsRequest
uuid
Response mpcvault.platform.v1.GetBatchPaymentDetailsResponse
batch_payment
error
rpc CreateWallet
CreateWallet creates a wallet. Wallets created will be EOA wallets. You are responsible for completing a sanity tests before using the wallet.
While the response contains the public key, you are strongly discouraged from using it to generate the wallet address yourself. Instead, use the address returned in the response.
Request mpcvault.platform.v1.CreateWalletRequest
vault_uuid
vault_uuid is the UUID of the vault that the wallet will be created in.
You can find it in the settings page of your vault on the web.
callback_client_signer_public_key
callback_client_signer_public_key is the public key of the api client signer.
It is used to identify the where we should send the callback to.
network_type
network_type is the type of the network.
ref
(optional) ref is the customer reference field for the wallet. It has to be unique if not empty.
max length is 500 characters.
Response mpcvault.platform.v1.CreateWalletResponse
details
error
rpc ExecuteSigningRequests
ExecuteSigningRequests signs a signing request. The signing request can be created via the API or manually.
Request mpcvault.platform.v1.ExecuteSigningRequestsRequest
uuid
uuid is the UUID of the signing request.
Currently only signing requests of API wallets are supported.
Response mpcvault.platform.v1.ExecuteSigningRequestsResponse
error
tx_hash
tx_hash is the hash of the signed transaction, only set if status is STATUS_SUCCEEDED.
This does not mean that the transaction it self is successful. It only means that the signing request has been signed.
signatures
signatures is the signatures of the raw message, only set if status is STATUS_SUCCEEDED.
rpc GetBalance
GetBalance returns the details of a asset balance.
Request mpcvault.platform.v1.GetBalanceRequest
network_type
network_type is the type of the network.
chain_id
(optional) chain_id is the chain id of the network.
wallet_address
wallet_address this is the wallet address.
token_address
(optional) token_address this is the token address
if not set, it will return the balance of the native token.
Response mpcvault.platform.v1.GetBalanceResponse
balance
The balance is in the smallest denomination.
error
enum_types
enum mpcvault.platform.v1.NetworkType
0
1
2
3
4
5
6
enum mpcvault.platform.v1.KeyType
0
1
2
enum mpcvault.platform.v1.ECDSAHashFunction
0
1
2
enum mpcvault.platform.v1.EVMMessage.Type
0
1
2
enum mpcvault.platform.v1.AptosMessage.Type
0
1
enum mpcvault.platform.v1.SolanaMessage.Type
0
1
enum mpcvault.platform.v1.SigningRequest.Status
0
1
2
3
enum mpcvault.platform.v1.BatchPayment.Status
0
1
2
3
message_types
msg mpcvault.platform.v1.GetBalanceRequest
network_type
network_type is the type of the network.
chain_id
(optional) chain_id is the chain id of the network.
wallet_address
wallet_address this is the wallet address.
token_address
(optional) token_address this is the token address
if not set, it will return the balance of the native token.
msg mpcvault.platform.v1.GetBalanceResponse
balance
The balance is in the smallest denomination.
error
msg mpcvault.platform.v1.CreateWalletRequest
vault_uuid
vault_uuid is the UUID of the vault that the wallet will be created in.
You can find it in the settings page of your vault on the web.
callback_client_signer_public_key
callback_client_signer_public_key is the public key of the api client signer.
It is used to identify the where we should send the callback to.
network_type
network_type is the type of the network.
ref
(optional) ref is the customer reference field for the wallet. It has to be unique if not empty.
max length is 500 characters.
msg mpcvault.platform.v1.Wallet
vault_uuid
vault_uuid is the UUID of the vault that the wallet was created in.
key_type
key_type is the type of the key.
key_path
key_path is the path of the key.
public_key
public_key is the public key of the key.
network_type
network_type is the type of the network.
address
address is the address of the wallet in the network.
ref
ref is unique identifier for the wallet as configured by the user.
msg mpcvault.platform.v1.CreateWalletResponse
details
error
msg mpcvault.platform.v1.ExecuteSigningRequestsRequest
uuid
uuid is the UUID of the signing request.
Currently only signing requests of API wallets are supported.
msg mpcvault.platform.v1.ExecuteSigningRequestsResponse
error
tx_hash
tx_hash is the hash of the signed transaction, only set if status is STATUS_SUCCEEDED.
This does not mean that the transaction it self is successful. It only means that the signing request has been signed.
signatures
signatures is the signatures of the raw message, only set if status is STATUS_SUCCEEDED.
msg mpcvault.platform.v1.SignatureContainer
signatures
msg mpcvault.platform.v1.EVMMessage
chain_id
from
from is the address of the sender. It has to be in this vault.
type
content
msg mpcvault.platform.v1.AptosMessage
from
from is the sender wallet address. It has to be in this vault.
type
content
msg mpcvault.platform.v1.SolanaMessage
from
from is the sender wallet address. It has to be in this vault.
type
content
msg mpcvault.platform.v1.RawMessage
from
from is the wallet address of the key pair that we uses to sign the message. The wallet has to be in this vault.
We will use the key's algorithm to sign the message.
content
content is the raw message content in bytes.
ecdsa_hash_function
ecdsa_hash_function is the hash function to use for signing the message. Required if the key is ECDSA.
This field will be ignored if the key is not ECDSA.
msg mpcvault.platform.v1.EVMGas
max_fee
max_fee is the maximum fee that the user is willing to pay, denominated in wei.
max_priority_fee
max_priority_fee is the maximum priority fee that the user is willing to pay for EIP-1559 transactions, denominated in wei.
leave this field empty if you do not want to use EIP-1559.
gas_limit
gas_limit is the maximum amount of gas that the tx is allowed to consume.
msg mpcvault.platform.v1.EVMSendNative
chain_id
chain_id is the chain id of the network.
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
value
value is the amount of the native token to send, denominated in wei.
gas_fee
nonce
nonce is the nonce of the transaction. If this field is not set, we will use the next nonce of the sender.
when chain_id is a custom chain, this field is required.
msg mpcvault.platform.v1.EVMSendERC20
chain_id
chain_id is the chain id of the network.
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
token_contract_address
token_contract_address is the address of the ERC20 token contract.
amount
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]
We will use the contract's decimals to convert the amount.
gas_fee
nonce
nonce is the nonce of the transaction. If this field is not set, we will use the next nonce of the sender.
when chain_id is a custom chain, this field is required.
msg mpcvault.platform.v1.EVMSendCustom
chain_id
chain_id is the chain id of the network.
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
value
value is the amount of the native token to send, denominated in wei.
input
gas_fee
nonce
nonce is the nonce of the transaction. If this field is not set, we will use the next nonce of the sender.
when chain_id is a custom chain, this field is required.
msg mpcvault.platform.v1.BTCSendNative
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
amount
amount is the amount of the native token to send, denominated in satoshi.
network_fee
network_fee is the network fee that the user is willing to pay, denominated in sat/b.
msg mpcvault.platform.v1.TronSendNative
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
value
value is the amount of the native token to send, denominated in sun.
msg mpcvault.platform.v1.TronSendTRC10
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
asset_name
asset_name identifies the token to be sent.
amount
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]
msg mpcvault.platform.v1.TronSendTRC20
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
contract_address
contract_address is the address of the token.
amount
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]
fee_limit
(optional) fee_limit is the maximum fee that the user is willing to pay, denominated in sun.
msg mpcvault.platform.v1.AptosGas
max_gas_amount
(optional) max_gas_amount is the maximum gas units that the transaction can use
https://aptos.dev/concepts/gas-txn-fee/#unit-of-gas
gas_unit_price
(optional) gas_unit_price is the price that the user is willing to pay, denominated in octa.
msg mpcvault.platform.v1.AptosSendNative
chain_id
please use 1 for mainnet. MPCVault does not support Aptos testnet at the moment.
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
value
value is the amount of the native token to send, denominated in octa.
gas_fee
(optional) specify the gas fee for the transaction.
msg mpcvault.platform.v1.AptosSendCoin
chain_id
please use 1 for mainnet. MPCVault does not support Aptos testnet at the moment.
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
coin_tag
coin_tag identifies the coin to be sent.
amount
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]
gas_fee
(optional) specify the gas fee for the transaction.
msg mpcvault.platform.v1.AptosSendCustom
chain_id
please use 1 for mainnet. MPCVault does not support Aptos testnet at the moment.
from
from is the sender wallet address. It has to be in this vault.
payload
payload can be JSON or the bcs-serialized bytes of the transaction.
gas_fee
(optional) specify the gas fee for the transaction.
msg mpcvault.platform.v1.SuiGas
budget
(optional) budget is the maximum fee that the user is willing to pay, denominated in mist.
price
(optional) price is the price that the user is willing to pay, denominated in mist.
msg mpcvault.platform.v1.SuiSendNative
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
value
value is the amount of the native token to send, denominated in mist.
gas_fee
(optional) specify the gas fee for the transaction.
msg mpcvault.platform.v1.SuiSendCoin
from
from is the sender wallet address. It has to be in this vault.
to
to is the address of the recipient.
coin_tag
coin_tag identifies the coin to be sent.
amount
amount is the amount of coins to send. You should use whole integer representation. [amount * 10^decimals]
gas_fee
(optional) specify the gas fee for the transaction.
msg mpcvault.platform.v1.SuiSendCustom
from
from is the sender wallet address. It has to be in this vault.
payload
payload can be JSON or the bcs-serialized bytes of the transaction.
msg mpcvault.platform.v1.SolanaSendNative
from
from is the sender wallet address. It has to be in this vault.
to
to is the account address of the recipient.
value
value is the amount of the native token to send, denominated in lamports.
msg mpcvault.platform.v1.SolanaSendSPLToken
from
from is the sender wallet address. It has to be in this vault.
to
to is the account address of the recipient.
mint_address
mint_address is the address of the token.
amount
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]
msg mpcvault.platform.v1.CreateSigningRequestRequest
type
type is the type of the signing request. It is a oneof field.
notes
notes is the transaction notes for the signing request.
vault_uuid
vault_uuid is the UUID of the vault that the signing request will be created in.
callback_client_signer_public_key
callback_client_signer_public_key is the public key of the api client signer for callback
It is used to identify the where we should send the callback to. If empty, we will show the signing request in the MPCVault mobile app for manual signing.
Note that if the signing request is created by an api wallet, this field must be set as api wallets can only be signed by the api client signer at the moment.
msg mpcvault.platform.v1.CreateSigningRequestResponse
signing_request
signing_request is the signing request that was created.
error
msg mpcvault.platform.v1.RejectSigningRequestRequest
uuid
msg mpcvault.platform.v1.RejectSigningRequestResponse
error
msg mpcvault.platform.v1.GetSigningRequestDetailsRequest
uuid
msg mpcvault.platform.v1.GetSigningRequestDetailsResponse
signing_request
error
msg mpcvault.platform.v1.SigningRequest
uuid
uuid is the unique identifier of the signing request.
status
status is the status of the signing request. STATUS_SUCCEEDED only means that the signing request has been signed.
it does not mean that the transaction itself is successful.
failed_reason
failed_reason is the reason why the signing request failed, only set if status is STATUS_FAILED.
tx_hash
tx_hash is the hash of the transaction, only set if status is STATUS_SUCCEEDED.
This does not mean that the transaction it self is successful. It only means that the signing request has been signed.
creation_timestamp
creation_timestamp is the timestamp when the signing request was created.
type
vault_uuid
vault_uuid is the UUID of the vault that the signing request was created in.
callback_client_signer_public_key
callback_client_signer_public_key is the public key of the api client signer for callback. This field can be empty.
msg mpcvault.platform.v1.BatchPaymentRecipient
address
address is the address of the recipient.
amount
amount is the amount of the tokens to send.
For native tokens such as ether/btc, the amount is denominated in wei/satoshi.
For ERC20 tokens you should use whole integer representation. [amount * 10^decimals]
For bitcoin, the amount is denominated in satoshi.
notes
notes is a note for this entry in the batch payment.
msg mpcvault.platform.v1.EVMBatchSendNative
chain_id
from
from is the sender wallet address. It has to be in this vault.
recipients
msg mpcvault.platform.v1.EVMBatchSendERC20
chain_id
from
from is the sender wallet address. It has to be in this vault.
token_contract_address
token_contract_address is the address of the ERC20 token contract.
recipients
msg mpcvault.platform.v1.BTCBatchSendNative
from
from is the sender wallet address. It has to be in this vault.
recipients
msg mpcvault.platform.v1.CreateBatchPaymentRequest
name
name is the name of the batch payment.
notes
notes is the transaction notes for the batch payment.
type
msg mpcvault.platform.v1.CreateBatchPaymentResponse
batch_payment
error
msg mpcvault.platform.v1.GetBatchPaymentDetailsRequest
uuid
msg mpcvault.platform.v1.GetBatchPaymentDetailsResponse
batch_payment
error
msg mpcvault.platform.v1.BatchPayment
uuid
uuid is the unique identifier of the batch payment.
name
name is the name of the batch payment.
notes
notes is the transaction notes for the batch payment.
status
status is the status of the batch payment.
failed_reason
failed_reason is the reason why the batch payment failed, only set if status is STATUS_FAILED.
creation_timestamp
creation_timestamp is the timestamp when the batch payment was created.
approval_signing_request
approval_signing_request is the signing request that approves the tokens to be sent if needed.
send_signing_request
send_signing_request is the signing request that sends the batch payment.
type