curl --request POST \
--url https://api.mpcvault.com/v1/createSigningRequest \
--header 'Content-Type: application/json' \
--header 'x-mtoken: <api-key>' \
--data '
{
"aptosMessage": {
"from": "<string>",
"content": {
"address": "<string>",
"application": "<string>",
"chainId": "<string>",
"message": "<string>",
"nonce": "<string>"
}
},
"notes": "<string>",
"vaultUuid": "<string>",
"callbackClientSignerPublicKey": "<string>",
"broadcastTx": true
}
'import requests
url = "https://api.mpcvault.com/v1/createSigningRequest"
payload = {
"aptosMessage": {
"from": "<string>",
"content": {
"address": "<string>",
"application": "<string>",
"chainId": "<string>",
"message": "<string>",
"nonce": "<string>"
}
},
"notes": "<string>",
"vaultUuid": "<string>",
"callbackClientSignerPublicKey": "<string>",
"broadcastTx": True
}
headers = {
"x-mtoken": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-mtoken': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
aptosMessage: {
from: '<string>',
content: {
address: '<string>',
application: '<string>',
chainId: '<string>',
message: '<string>',
nonce: '<string>'
}
},
notes: '<string>',
vaultUuid: '<string>',
callbackClientSignerPublicKey: '<string>',
broadcastTx: true
})
};
fetch('https://api.mpcvault.com/v1/createSigningRequest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mpcvault.com/v1/createSigningRequest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'aptosMessage' => [
'from' => '<string>',
'content' => [
'address' => '<string>',
'application' => '<string>',
'chainId' => '<string>',
'message' => '<string>',
'nonce' => '<string>'
]
],
'notes' => '<string>',
'vaultUuid' => '<string>',
'callbackClientSignerPublicKey' => '<string>',
'broadcastTx' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-mtoken: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mpcvault.com/v1/createSigningRequest"
payload := strings.NewReader("{\n \"aptosMessage\": {\n \"from\": \"<string>\",\n \"content\": {\n \"address\": \"<string>\",\n \"application\": \"<string>\",\n \"chainId\": \"<string>\",\n \"message\": \"<string>\",\n \"nonce\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"vaultUuid\": \"<string>\",\n \"callbackClientSignerPublicKey\": \"<string>\",\n \"broadcastTx\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-mtoken", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mpcvault.com/v1/createSigningRequest")
.header("x-mtoken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"aptosMessage\": {\n \"from\": \"<string>\",\n \"content\": {\n \"address\": \"<string>\",\n \"application\": \"<string>\",\n \"chainId\": \"<string>\",\n \"message\": \"<string>\",\n \"nonce\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"vaultUuid\": \"<string>\",\n \"callbackClientSignerPublicKey\": \"<string>\",\n \"broadcastTx\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mpcvault.com/v1/createSigningRequest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-mtoken"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"aptosMessage\": {\n \"from\": \"<string>\",\n \"content\": {\n \"address\": \"<string>\",\n \"application\": \"<string>\",\n \"chainId\": \"<string>\",\n \"message\": \"<string>\",\n \"nonce\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"vaultUuid\": \"<string>\",\n \"callbackClientSignerPublicKey\": \"<string>\",\n \"broadcastTx\": true\n}"
response = http.request(request)
puts response.read_body{
"signingRequest": {
"aptosMessage": {
"from": "<string>",
"type": "TYPE_UNSPECIFIED",
"content": {
"address": "<string>",
"application": "<string>",
"chainId": "<string>",
"message": "<string>",
"nonce": "<string>"
}
},
"uuid": "<string>",
"status": "STATUS_UNSPECIFIED",
"failedReason": "<string>",
"txHash": "<string>",
"creationTimestamp": 123,
"notes": "<string>",
"vaultUuid": "<string>",
"callbackClientSignerPublicKey": "<string>",
"simulation": "aSDinaTvuI8gbWludGxpZnk=",
"evmInputDataDecode": {
"function": "<string>",
"args": [
{
"name": "<string>",
"type": "<string>",
"data": "<string>"
}
]
}
},
"error": {
"executeSigningRequestsErrorCode": "EXECUTE_SIGNING_REQUESTS_ERROR_CODE_UNSPECIFIED",
"message": "<string>"
}
}CreateSigningRequest
Create a signing request for a transaction or message. Complete it in the MPCVault app or via the API client signer.
curl --request POST \
--url https://api.mpcvault.com/v1/createSigningRequest \
--header 'Content-Type: application/json' \
--header 'x-mtoken: <api-key>' \
--data '
{
"aptosMessage": {
"from": "<string>",
"content": {
"address": "<string>",
"application": "<string>",
"chainId": "<string>",
"message": "<string>",
"nonce": "<string>"
}
},
"notes": "<string>",
"vaultUuid": "<string>",
"callbackClientSignerPublicKey": "<string>",
"broadcastTx": true
}
'import requests
url = "https://api.mpcvault.com/v1/createSigningRequest"
payload = {
"aptosMessage": {
"from": "<string>",
"content": {
"address": "<string>",
"application": "<string>",
"chainId": "<string>",
"message": "<string>",
"nonce": "<string>"
}
},
"notes": "<string>",
"vaultUuid": "<string>",
"callbackClientSignerPublicKey": "<string>",
"broadcastTx": True
}
headers = {
"x-mtoken": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-mtoken': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
aptosMessage: {
from: '<string>',
content: {
address: '<string>',
application: '<string>',
chainId: '<string>',
message: '<string>',
nonce: '<string>'
}
},
notes: '<string>',
vaultUuid: '<string>',
callbackClientSignerPublicKey: '<string>',
broadcastTx: true
})
};
fetch('https://api.mpcvault.com/v1/createSigningRequest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mpcvault.com/v1/createSigningRequest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'aptosMessage' => [
'from' => '<string>',
'content' => [
'address' => '<string>',
'application' => '<string>',
'chainId' => '<string>',
'message' => '<string>',
'nonce' => '<string>'
]
],
'notes' => '<string>',
'vaultUuid' => '<string>',
'callbackClientSignerPublicKey' => '<string>',
'broadcastTx' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-mtoken: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mpcvault.com/v1/createSigningRequest"
payload := strings.NewReader("{\n \"aptosMessage\": {\n \"from\": \"<string>\",\n \"content\": {\n \"address\": \"<string>\",\n \"application\": \"<string>\",\n \"chainId\": \"<string>\",\n \"message\": \"<string>\",\n \"nonce\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"vaultUuid\": \"<string>\",\n \"callbackClientSignerPublicKey\": \"<string>\",\n \"broadcastTx\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-mtoken", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mpcvault.com/v1/createSigningRequest")
.header("x-mtoken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"aptosMessage\": {\n \"from\": \"<string>\",\n \"content\": {\n \"address\": \"<string>\",\n \"application\": \"<string>\",\n \"chainId\": \"<string>\",\n \"message\": \"<string>\",\n \"nonce\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"vaultUuid\": \"<string>\",\n \"callbackClientSignerPublicKey\": \"<string>\",\n \"broadcastTx\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mpcvault.com/v1/createSigningRequest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-mtoken"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"aptosMessage\": {\n \"from\": \"<string>\",\n \"content\": {\n \"address\": \"<string>\",\n \"application\": \"<string>\",\n \"chainId\": \"<string>\",\n \"message\": \"<string>\",\n \"nonce\": \"<string>\"\n }\n },\n \"notes\": \"<string>\",\n \"vaultUuid\": \"<string>\",\n \"callbackClientSignerPublicKey\": \"<string>\",\n \"broadcastTx\": true\n}"
response = http.request(request)
puts response.read_body{
"signingRequest": {
"aptosMessage": {
"from": "<string>",
"type": "TYPE_UNSPECIFIED",
"content": {
"address": "<string>",
"application": "<string>",
"chainId": "<string>",
"message": "<string>",
"nonce": "<string>"
}
},
"uuid": "<string>",
"status": "STATUS_UNSPECIFIED",
"failedReason": "<string>",
"txHash": "<string>",
"creationTimestamp": 123,
"notes": "<string>",
"vaultUuid": "<string>",
"callbackClientSignerPublicKey": "<string>",
"simulation": "aSDinaTvuI8gbWludGxpZnk=",
"evmInputDataDecode": {
"function": "<string>",
"args": [
{
"name": "<string>",
"type": "<string>",
"data": "<string>"
}
]
}
},
"error": {
"executeSigningRequestsErrorCode": "EXECUTE_SIGNING_REQUESTS_ERROR_CODE_UNSPECIFIED",
"message": "<string>"
}
}Show Transaction types
Show Transaction types
| Type | Use case |
|---|---|
| EVM Send Native / ERC20 / Custom | Send ETH, ERC20 tokens, or custom EVM transactions |
| EVM Message | Sign messages (e.g., dApp authentication) |
| Tron / Solana / Sonic / Aptos / Sui / TON | Native tokens, custom transactions, or message signing |
| BTC Send Native | Send BTC |
| Raw Message | Sign raw bytes |
Authorizations
Your API token. Required for all API requests.
Body
- aptos_message
- aptos_send_coin
- aptos_send_custom
- aptos_send_native
- btc_send_native
- evm_message
- evm_send_custom
- evm_send_erc20
- evm_send_native
- raw_message
- solana_message
- solana_send_custom
- solana_send_native
- solana_send_spl_token
- sonic_svm_send_custom
- sonic_svm_send_native
- sonic_svm_send_spl_token
- stellar_change_trust
- stellar_send_asset
- stellar_send_custom
- stellar_send_native
- sui_message
- sui_send_coin
- sui_send_custom
- sui_send_native
- ton_message
- ton_send_custom
- ton_send_native
- ton_send_token
- tron_send_native
- tron_send_trc10
- tron_send_trc20
Show child attributes
Show child attributes
symbol_value:"send 1 eth to 0x71C7656EC7ab88bd32g47dgdhhssq245f6d8976F" comment:notes is the transaction notes for the signing request.
required:true symbol_value:"9f5ee5fb-07f5-470c-a2ff-081e2d6d107a" comment:vault_uuid is the UUID of the vault that the signing request will be created in.
symbol_value:"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL3OzFAKNGHsMtBpTemiAI3V1AxRsdeghjcmkidagdk test" comment: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.
comment:If true, the tx will be automatically broadcasted after signing. Not supported for Message types, RawMessage, or txs on non-system (custom EVM) chains. All other standard txs on system chains are supported.
Response
Success
signing_request is the signing request that was created.
- aptos_message
- aptos_send_coin
- aptos_send_custom
- aptos_send_native
- btc_send_native
- create_wallet
- evm_message
- evm_send_custom
- evm_send_erc20
- evm_send_native
- raw_message
- solana_message
- solana_send_custom
- solana_send_native
- solana_send_spl_token
- sonic_svm_send_custom
- sonic_svm_send_native
- sonic_svm_send_spl_token
- stellar_change_trust
- stellar_send_asset
- stellar_send_custom
- stellar_send_native
- sui_message
- sui_send_coin
- sui_send_custom
- sui_send_native
- ton_message
- ton_send_custom
- ton_send_native
- ton_send_token
- tron_send_native
- tron_send_trc10
- tron_send_trc20
Show child attributes
Show child attributes
- execute_signing_requests_error_code
- service_error_code
Show child attributes
Show child attributes
Was this page helpful?