Skip to main content

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
notes
google.protobuf.StringValue
notes is the transaction notes for the signing request.
vault_uuid
google.protobuf.StringValue
vault_uuid is the UUID of the vault that the signing request will be created in.
callback_client_signer_public_key
google.protobuf.StringValue
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 is the signing request that was created.

rpc RejectSigningRequest

RejectSigningRequest rejects a signing request. Once a signing request is rejected, it cannot be re-opened.
Request mpcvault.platform.v1.RejectSigningRequestRequest
uuid
string
Response mpcvault.platform.v1.RejectSigningRequestResponse

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
string
Response mpcvault.platform.v1.GetSigningRequestDetailsResponse

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
string
name is the name of the batch payment.
notes
google.protobuf.StringValue
notes is the transaction notes for the batch payment.
Response mpcvault.platform.v1.CreateBatchPaymentResponse

rpc GetBatchPaymentDetails

GetBatchPaymentDetails returns the details of a batch payment including the signing requests.
Request mpcvault.platform.v1.GetBatchPaymentDetailsRequest
uuid
string
Response mpcvault.platform.v1.GetBatchPaymentDetailsResponse

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
string
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
string
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 is the type of the network.
ref
string
(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

rpc ExecuteSigningRequests

ExecuteSigningRequests signs a signing request. The signing request can be created via the API or manually.
Request mpcvault.platform.v1.ExecuteSigningRequestsRequest
uuid
string
uuid is the UUID of the signing request. Currently only signing requests of API wallets are supported.
Response mpcvault.platform.v1.ExecuteSigningRequestsResponse
tx_hash
string
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 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 is the type of the network.
chain_id
google.protobuf.Int64Value
(optional) chain_id is the chain id of the network.
wallet_address
string
wallet_address this is the wallet address.
token_address
google.protobuf.StringValue
(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
string
The balance is in the smallest denomination.

enum_types

enum mpcvault.platform.v1.NetworkType

0
NETWORK_TYPE_UNKNOWN
1
NETWORK_TYPE_EVM
2
NETWORK_TYPE_BITCOIN
3
NETWORK_TYPE_TRON
4
NETWORK_TYPE_APTOS
5
NETWORK_TYPE_SUI
6
NETWORK_TYPE_SOLANA

enum mpcvault.platform.v1.KeyType

0
KEY_TYPE_UNSPECIFIED
1
KEY_TYPE_ECC_SECP256K1
2
KEY_TYPE_ECC_ED25519

enum mpcvault.platform.v1.ECDSAHashFunction

0
ECDSA_HASH_FUNCTION_UNSPECIFIED
1
ECDSA_HASH_FUNCTION_USE_MESSAGE_DIRECTLY
2
ECDSA_HASH_FUNCTION_SHA256

enum mpcvault.platform.v1.EVMMessage.Type

0
TYPE_UNSPECIFIED
1
TYPE_PERSONAL_SIGN
2
TYPE_SIGN_TYPED_DATA

enum mpcvault.platform.v1.AptosMessage.Type

0
TYPE_UNSPECIFIED
1
TYPE_DEFAULT

enum mpcvault.platform.v1.SolanaMessage.Type

0
TYPE_UNSPECIFIED
1
TYPE_DEFAULT

enum mpcvault.platform.v1.SigningRequest.Status

0
STATUS_UNSPECIFIED
1
STATUS_PENDING
2
STATUS_SUCCEEDED
3
STATUS_FAILED

enum mpcvault.platform.v1.BatchPayment.Status

0
STATUS_UNSPECIFIED
1
STATUS_PENDING
2
STATUS_SUCCEEDED
3
STATUS_FAILED

message_types

msg mpcvault.platform.v1.GetBalanceRequest

network_type is the type of the network.
chain_id
google.protobuf.Int64Value
(optional) chain_id is the chain id of the network.
wallet_address
string
wallet_address this is the wallet address.
token_address
google.protobuf.StringValue
(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
string
The balance is in the smallest denomination.

msg mpcvault.platform.v1.CreateWalletRequest

vault_uuid
string
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
string
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 is the type of the network.
ref
string
(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
string
vault_uuid is the UUID of the vault that the wallet was created in.
key_type is the type of the key.
key_path
string
key_path is the path of the key.
public_key
bytes
public_key is the public key of the key.
network_type is the type of the network.
address
string
address is the address of the wallet in the network.
ref
string
ref is unique identifier for the wallet as configured by the user.

msg mpcvault.platform.v1.CreateWalletResponse

msg mpcvault.platform.v1.ExecuteSigningRequestsRequest

uuid
string
uuid is the UUID of the signing request. Currently only signing requests of API wallets are supported.

msg mpcvault.platform.v1.ExecuteSigningRequestsResponse

tx_hash
string
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 is the signatures of the raw message, only set if status is STATUS_SUCCEEDED.

msg mpcvault.platform.v1.SignatureContainer

msg mpcvault.platform.v1.EVMMessage

chain_id
uint64
from
string
from is the address of the sender. It has to be in this vault.
content
bytes

msg mpcvault.platform.v1.AptosMessage

from
string
from is the sender wallet address. It has to be in this vault.

msg mpcvault.platform.v1.SolanaMessage

from
string
from is the sender wallet address. It has to be in this vault.
content
bytes

msg mpcvault.platform.v1.RawMessage

from
string
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
bytes
content is the raw message content in bytes.
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
google.protobuf.StringValue
max_fee is the maximum fee that the user is willing to pay, denominated in wei.
max_priority_fee
google.protobuf.StringValue
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
google.protobuf.StringValue
gas_limit is the maximum amount of gas that the tx is allowed to consume.

msg mpcvault.platform.v1.EVMSendNative

chain_id
uint64
chain_id is the chain id of the network.
from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
value
string
value is the amount of the native token to send, denominated in wei.
nonce
google.protobuf.Int64Value
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
uint64
chain_id is the chain id of the network.
from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
token_contract_address
string
token_contract_address is the address of the ERC20 token contract.
amount
string
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.
nonce
google.protobuf.Int64Value
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
uint64
chain_id is the chain id of the network.
from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
value
string
value is the amount of the native token to send, denominated in wei.
input
bytes
nonce
google.protobuf.Int64Value
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
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
amount
string
amount is the amount of the native token to send, denominated in satoshi.
network_fee
uint64
network_fee is the network fee that the user is willing to pay, denominated in sat/b.

msg mpcvault.platform.v1.TronSendNative

from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
value
string
value is the amount of the native token to send, denominated in sun.

msg mpcvault.platform.v1.TronSendTRC10

from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
asset_name
string
asset_name identifies the token to be sent.
amount
string
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]

msg mpcvault.platform.v1.TronSendTRC20

from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
contract_address
string
contract_address is the address of the token.
amount
string
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]
fee_limit
google.protobuf.StringValue
(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
google.protobuf.StringValue
(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
google.protobuf.StringValue
(optional) gas_unit_price is the price that the user is willing to pay, denominated in octa.

msg mpcvault.platform.v1.AptosSendNative

chain_id
uint64
please use 1 for mainnet. MPCVault does not support Aptos testnet at the moment.
from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
value
string
value is the amount of the native token to send, denominated in octa.
(optional) specify the gas fee for the transaction.

msg mpcvault.platform.v1.AptosSendCoin

chain_id
uint64
please use 1 for mainnet. MPCVault does not support Aptos testnet at the moment.
from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
coin_tag
string
coin_tag identifies the coin to be sent.
amount
string
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]
(optional) specify the gas fee for the transaction.

msg mpcvault.platform.v1.AptosSendCustom

chain_id
uint64
please use 1 for mainnet. MPCVault does not support Aptos testnet at the moment.
from
string
from is the sender wallet address. It has to be in this vault.
payload
bytes
payload can be JSON or the bcs-serialized bytes of the transaction.
(optional) specify the gas fee for the transaction.

msg mpcvault.platform.v1.SuiGas

budget
google.protobuf.StringValue
(optional) budget is the maximum fee that the user is willing to pay, denominated in mist.
price
google.protobuf.StringValue
(optional) price is the price that the user is willing to pay, denominated in mist.

msg mpcvault.platform.v1.SuiSendNative

from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
value
string
value is the amount of the native token to send, denominated in mist.
(optional) specify the gas fee for the transaction.

msg mpcvault.platform.v1.SuiSendCoin

from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the address of the recipient.
coin_tag
string
coin_tag identifies the coin to be sent.
amount
string
amount is the amount of coins to send. You should use whole integer representation. [amount * 10^decimals]
(optional) specify the gas fee for the transaction.

msg mpcvault.platform.v1.SuiSendCustom

from
string
from is the sender wallet address. It has to be in this vault.
payload
bytes
payload can be JSON or the bcs-serialized bytes of the transaction.

msg mpcvault.platform.v1.SolanaSendNative

from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the account address of the recipient.
value
string
value is the amount of the native token to send, denominated in lamports.

msg mpcvault.platform.v1.SolanaSendSPLToken

from
string
from is the sender wallet address. It has to be in this vault.
to
string
to is the account address of the recipient.
mint_address
string
mint_address is the address of the token.
amount
string
amount is the amount of tokens to send. You should use whole integer representation. [amount * 10^decimals]

msg mpcvault.platform.v1.CreateSigningRequestRequest

notes
google.protobuf.StringValue
notes is the transaction notes for the signing request.
vault_uuid
google.protobuf.StringValue
vault_uuid is the UUID of the vault that the signing request will be created in.
callback_client_signer_public_key
google.protobuf.StringValue
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 is the signing request that was created.

msg mpcvault.platform.v1.RejectSigningRequestRequest

uuid
string

msg mpcvault.platform.v1.RejectSigningRequestResponse

msg mpcvault.platform.v1.GetSigningRequestDetailsRequest

uuid
string

msg mpcvault.platform.v1.GetSigningRequestDetailsResponse

msg mpcvault.platform.v1.SigningRequest

uuid
string
uuid is the unique identifier of the signing request.
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
string
failed_reason is the reason why the signing request failed, only set if status is STATUS_FAILED.
tx_hash
string
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
uint64
creation_timestamp is the timestamp when the signing request was created.
vault_uuid
google.protobuf.StringValue
vault_uuid is the UUID of the vault that the signing request was created in.
callback_client_signer_public_key
google.protobuf.StringValue
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
string
address is the address of the recipient.
amount
string
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
google.protobuf.StringValue
notes is a note for this entry in the batch payment.

msg mpcvault.platform.v1.EVMBatchSendNative

chain_id
uint64
from
string
from is the sender wallet address. It has to be in this vault.

msg mpcvault.platform.v1.EVMBatchSendERC20

chain_id
uint64
from
string
from is the sender wallet address. It has to be in this vault.
token_contract_address
string
token_contract_address is the address of the ERC20 token contract.

msg mpcvault.platform.v1.BTCBatchSendNative

from
string
from is the sender wallet address. It has to be in this vault.

msg mpcvault.platform.v1.CreateBatchPaymentRequest

name
string
name is the name of the batch payment.
notes
google.protobuf.StringValue
notes is the transaction notes for the batch payment.

msg mpcvault.platform.v1.CreateBatchPaymentResponse

msg mpcvault.platform.v1.GetBatchPaymentDetailsRequest

uuid
string

msg mpcvault.platform.v1.GetBatchPaymentDetailsResponse

msg mpcvault.platform.v1.BatchPayment

uuid
string
uuid is the unique identifier of the batch payment.
name
string
name is the name of the batch payment.
notes
string
notes is the transaction notes for the batch payment.
status is the status of the batch payment.
failed_reason
string
failed_reason is the reason why the batch payment failed, only set if status is STATUS_FAILED.
creation_timestamp
uint64
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 is the signing request that sends the batch payment.

PlatformAPI

message_types