Creates backup locations for wallet key shares. Requires API token authentication. Validates that the user belongs to the environment and that no client key shares exist for the wallet. This endpoint is intended for server-side integrations that need to backup key shares on behalf of users.
POST
/
environments
/
{environmentId}
/
waas
/
{walletId}
/
keyShares
/
backup
/
locations
Create backup action for key shares using API token authentication
curl --request POST \
--url https://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locations": [
{
"keygenId": "An example name",
"externalKeyShareId": "An example name"
}
]
}
'import requests
url = "https://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations"
payload = {
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locations": [
{
"keygenId": "An example name",
"externalKeyShareId": "An example name"
}
]
}
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({
userId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
locations: [{keygenId: 'An example name', externalKeyShareId: 'An example name'}]
})
};
fetch('https://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations', 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://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations",
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([
'userId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'locations' => [
[
'keygenId' => 'An example name',
'externalKeyShareId' => 'An example name'
]
]
]),
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://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations"
payload := strings.NewReader("{\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ]\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://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations")
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 \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"walletId": "95b11417-f18f-457f-8804-68e361f9164f",
"locationsWithKeyShares": [
{
"keyShareId": "95b11417-f18f-457f-8804-68e361f9164f",
"externalKeyShareId": "95b11417-f18f-457f-8804-68e361f9164f"
}
]
}{
"error": "<string>"
}{
"error": "No jwt provided!"
}{
"error": "Access Forbidden"
}{
"error": "Not Found",
"code": "not_found"
}{
"error": "Internal Server Error"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
ID of the environment
Required string length:
36Pattern:
^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Example:
"95b11417-f18f-457f-8804-68e361f9164f"
UUID of the wallet
Required string length:
36Pattern:
^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Example:
"95b11417-f18f-457f-8804-68e361f9164f"
Body
application/json
Backup locations request with userId
Response
Backup action and event created successfully
Last modified on January 28, 2026
Was this page helpful?
⌘I
Create backup action for key shares using API token authentication
curl --request POST \
--url https://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locations": [
{
"keygenId": "An example name",
"externalKeyShareId": "An example name"
}
]
}
'import requests
url = "https://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations"
payload = {
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locations": [
{
"keygenId": "An example name",
"externalKeyShareId": "An example name"
}
]
}
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({
userId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
locations: [{keygenId: 'An example name', externalKeyShareId: 'An example name'}]
})
};
fetch('https://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations', 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://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations",
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([
'userId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'locations' => [
[
'keygenId' => 'An example name',
'externalKeyShareId' => 'An example name'
]
]
]),
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://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations"
payload := strings.NewReader("{\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ]\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://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/environments/{environmentId}/waas/{walletId}/keyShares/backup/locations")
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 \"userId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"walletId": "95b11417-f18f-457f-8804-68e361f9164f",
"locationsWithKeyShares": [
{
"keyShareId": "95b11417-f18f-457f-8804-68e361f9164f",
"externalKeyShareId": "95b11417-f18f-457f-8804-68e361f9164f"
}
]
}{
"error": "<string>"
}{
"error": "No jwt provided!"
}{
"error": "Access Forbidden"
}{
"error": "Not Found",
"code": "not_found"
}{
"error": "Internal Server Error"
}