Back up the client's wallet
curl --request POST \
--url https://mpc-client.portalhq.io/v1/backup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"generateResponse": "{\"SECP256K1\":{\"share\":\"share\",\"id\":\"shareId\"},\"ED25519\":{\"share\":\"share\",\"id\":\"shareId\"}}"
}
'import requests
url = "https://mpc-client.portalhq.io/v1/backup"
payload = { "generateResponse": "{\"SECP256K1\":{\"share\":\"share\",\"id\":\"shareId\"},\"ED25519\":{\"share\":\"share\",\"id\":\"shareId\"}}" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
generateResponse: '{"SECP256K1":{"share":"share","id":"shareId"},"ED25519":{"share":"share","id":"shareId"}}'
})
};
fetch('https://mpc-client.portalhq.io/v1/backup', 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://mpc-client.portalhq.io/v1/backup",
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([
'generateResponse' => '{"SECP256K1":{"share":"share","id":"shareId"},"ED25519":{"share":"share","id":"shareId"}}'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://mpc-client.portalhq.io/v1/backup"
payload := strings.NewReader("{\n \"generateResponse\": \"{\\\"SECP256K1\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"},\\\"ED25519\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"}}\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://mpc-client.portalhq.io/v1/backup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"generateResponse\": \"{\\\"SECP256K1\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"},\\\"ED25519\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"}}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mpc-client.portalhq.io/v1/backup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"generateResponse\": \"{\\\"SECP256K1\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"},\\\"ED25519\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"}}\"\n}"
response = http.request(request)
puts response.read_body{
"SECP256K1": {
"share": "eyJjbGl...",
"id": "clu32l6c8008wuvz52jokyo3r"
},
"ED25519": {
"share": "eyJjbGl...",
"id": "clu32l9310087evz5u5v9k1ao"
}
}{
"id": "BAD_REQUEST",
"message": "Can't parse the request body"
}"Authorization header is missing"Wallet Management
Back up the client's wallet
Creates backup shares for the wallet. After storing the backup shares, confirm storage with the Client API’s update backup share pairs statuses endpoint before attempting to recover.
POST
/
v1
/
backup
Back up the client's wallet
curl --request POST \
--url https://mpc-client.portalhq.io/v1/backup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"generateResponse": "{\"SECP256K1\":{\"share\":\"share\",\"id\":\"shareId\"},\"ED25519\":{\"share\":\"share\",\"id\":\"shareId\"}}"
}
'import requests
url = "https://mpc-client.portalhq.io/v1/backup"
payload = { "generateResponse": "{\"SECP256K1\":{\"share\":\"share\",\"id\":\"shareId\"},\"ED25519\":{\"share\":\"share\",\"id\":\"shareId\"}}" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
generateResponse: '{"SECP256K1":{"share":"share","id":"shareId"},"ED25519":{"share":"share","id":"shareId"}}'
})
};
fetch('https://mpc-client.portalhq.io/v1/backup', 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://mpc-client.portalhq.io/v1/backup",
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([
'generateResponse' => '{"SECP256K1":{"share":"share","id":"shareId"},"ED25519":{"share":"share","id":"shareId"}}'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://mpc-client.portalhq.io/v1/backup"
payload := strings.NewReader("{\n \"generateResponse\": \"{\\\"SECP256K1\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"},\\\"ED25519\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"}}\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://mpc-client.portalhq.io/v1/backup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"generateResponse\": \"{\\\"SECP256K1\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"},\\\"ED25519\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"}}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mpc-client.portalhq.io/v1/backup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"generateResponse\": \"{\\\"SECP256K1\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"},\\\"ED25519\\\":{\\\"share\\\":\\\"share\\\",\\\"id\\\":\\\"shareId\\\"}}\"\n}"
response = http.request(request)
puts response.read_body{
"SECP256K1": {
"share": "eyJjbGl...",
"id": "clu32l6c8008wuvz52jokyo3r"
},
"ED25519": {
"share": "eyJjbGl...",
"id": "clu32l9310087evz5u5v9k1ao"
}
}{
"id": "BAD_REQUEST",
"message": "Can't parse the request body"
}"Authorization header is missing"Authorizations
Client API Key or Client Session Token
Body
application/json
Request body for backing up a wallet.
JSON-stringified response body from the generate endpoint.
Was this page helpful?
⌘I