Records backup actions and events for multiple locations without performing the actual backups.
curl --request POST \
--url https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"locations": [
{
"keygenId": "An example name",
"externalKeyShareId": "An example name"
}
],
"passwordUpdateBatchId": "95b11417-f18f-457f-8804-68e361f9164f",
"shareSetId": "95b11417-f18f-457f-8804-68e361f9164f"
}
'import requests
url = "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations"
payload = {
"locations": [
{
"keygenId": "An example name",
"externalKeyShareId": "An example name"
}
],
"passwordUpdateBatchId": "95b11417-f18f-457f-8804-68e361f9164f",
"shareSetId": "95b11417-f18f-457f-8804-68e361f9164f"
}
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({
locations: [{keygenId: 'An example name', externalKeyShareId: 'An example name'}],
passwordUpdateBatchId: '95b11417-f18f-457f-8804-68e361f9164f',
shareSetId: '95b11417-f18f-457f-8804-68e361f9164f'
})
};
fetch('https://app.dynamicauth.com/api/v0/sdk/{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/sdk/{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([
'locations' => [
[
'keygenId' => 'An example name',
'externalKeyShareId' => 'An example name'
]
],
'passwordUpdateBatchId' => '95b11417-f18f-457f-8804-68e361f9164f',
'shareSetId' => '95b11417-f18f-457f-8804-68e361f9164f'
]),
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/sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations"
payload := strings.NewReader("{\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ],\n \"passwordUpdateBatchId\": \"95b11417-f18f-457f-8804-68e361f9164f\",\n \"shareSetId\": \"95b11417-f18f-457f-8804-68e361f9164f\"\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/sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ],\n \"passwordUpdateBatchId\": \"95b11417-f18f-457f-8804-68e361f9164f\",\n \"shareSetId\": \"95b11417-f18f-457f-8804-68e361f9164f\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/sdk/{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 \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ],\n \"passwordUpdateBatchId\": \"95b11417-f18f-457f-8804-68e361f9164f\",\n \"shareSetId\": \"95b11417-f18f-457f-8804-68e361f9164f\"\n}"
response = http.request(request)
puts response.read_body{
"locationsWithKeyShares": [
{
"externalKeyShareId": "95b11417-f18f-457f-8804-68e361f9164f",
"keyShareId": "95b11417-f18f-457f-8804-68e361f9164f"
}
],
"message": "<string>",
"walletId": "95b11417-f18f-457f-8804-68e361f9164f",
"shareSetId": "95b11417-f18f-457f-8804-68e361f9164f",
"walletActive": true
}{
"message": "<string>",
"walletId": "95b11417-f18f-457f-8804-68e361f9164f",
"passwordUpdateStatus": "pending"
}{
"error": "<string>"
}{
"error": "No jwt provided!"
}{
"error": "Not Found",
"code": "not_found"
}{
"error": "Resources already exists for this Object",
"payload": {
"email": "joe@email.com",
"embeddedWalletName": "<string>",
"mergeConflicts": {
"fromUser": {
"id": "95b11417-f18f-457f-8804-68e361f9164f",
"projectEnvironmentId": "95b11417-f18f-457f-8804-68e361f9164f",
"verifiedCredentials": [
{
"id": "95b11417-f18f-457f-8804-68e361f9164f-zerodev",
"signInEnabled": true,
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chain": "<string>",
"refId": "95b11417-f18f-457f-8804-68e361f9164f",
"signerRefId": "95b11417-f18f-457f-8804-68e361f9164f",
"email": "jsmith@example.com",
"name_service": {
"avatar": "<string>",
"name": "<string>"
},
"public_identifier": "<string>",
"wallet_name": "<string>",
"wallet_properties": {
"turnkeySubOrganizationId": "95b11417-f18f-457f-8804-68e361f9164f",
"turnkeyPrivateKeyId": "95b11417-f18f-457f-8804-68e361f9164f",
"turnkeyHDWalletId": "95b11417-f18f-457f-8804-68e361f9164f",
"isAuthenticatorAttached": true,
"turnkeyUserId": "95b11417-f18f-457f-8804-68e361f9164f",
"isSessionKeyCompatible": true
},
"business_account_properties": {
"businessAccountId": "95b11417-f18f-457f-8804-68e361f9164f",
"businessAccountCreatedAt": "2023-11-07T05:31:56Z",
"businessAccountSignerId": "95b11417-f18f-457f-8804-68e361f9164f",
"businessAccountName": "<string>",
"businessAccountExternalRef": "<string>"
},
"oauth_username": "<string>",
"oauth_display_name": "<string>",
"oauth_account_id": "<string>",
"phoneNumber": "9171113333",
"phoneCountryCode": "1",
"isoCountryCode": "US",
"oauth_account_photos": [
"<string>"
],
"oauth_emails": [
"<string>"
],
"oauth_metadata": {},
"previous_users": [
"95b11417-f18f-457f-8804-68e361f9164f"
],
"embedded_wallet_id": "<string>",
"wallet_additional_addresses": [
{
"address": "<string>",
"publicKey": "<string>",
"network": "<string>"
}
],
"lastSelectedAt": "2023-11-07T05:31:56Z",
"verifiedAt": "2023-11-07T05:31:56Z"
}
],
"lastVerifiedCredentialId": "95b11417-f18f-457f-8804-68e361f9164f-zerodev",
"sessionId": "95b11417-f18f-457f-8804-68e361f9164f",
"alias": "An example name",
"country": "US",
"email": "jsmith@example.com",
"firstName": "An example name",
"jobTitle": "An example name",
"lastName": "An example name",
"phoneNumber": "<string>",
"policiesConsent": true,
"tShirtSize": "An example name",
"team": "An example name",
"username": "An example name",
"firstVisit": "2023-11-07T05:31:56Z",
"lastVisit": "2023-11-07T05:31:56Z",
"newUser": true,
"metadata": {},
"btcWallet": "<string>",
"kdaWallet": "<string>",
"ltcWallet": "<string>",
"ckbWallet": "<string>",
"kasWallet": "<string>",
"dogeWallet": "<string>",
"emailNotification": true,
"discordNotification": true,
"newsletterNotification": true,
"lists": [
"<string>"
],
"scope": "superuser marketing operations",
"missingFields": [
{
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"label": "<string>",
"position": 123
}
]
},
"conflicts": [
{
"field": {
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"label": "<string>",
"position": 123
},
"fromUser": {
"userId": "95b11417-f18f-457f-8804-68e361f9164f",
"value": "An example name"
},
"currentUser": {
"userId": "95b11417-f18f-457f-8804-68e361f9164f",
"value": "An example name"
}
}
]
},
"additionalMessages": [
"<string>"
]
}
}{
"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
36^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"95b11417-f18f-457f-8804-68e361f9164f"
UUID of the wallet
36^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"95b11417-f18f-457f-8804-68e361f9164f"
Body
Backup locations request
List of backup locations with their key share configuration
Show child attributes
Show child attributes
36^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"95b11417-f18f-457f-8804-68e361f9164f"
Identifier of the share set (WaasWallets row) being activated. SDKs that already receive shareSetId from the ceremony_complete event should echo it back here. Optional for backwards compatibility — when omitted, the active rootUser share set is resolved from walletId.
36^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"95b11417-f18f-457f-8804-68e361f9164f"
Response
Backup action and event created successfully
List of backup locations paired with their key share identifiers
Show child attributes
Show child attributes
Human-readable status message for the backup operation
36^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"95b11417-f18f-457f-8804-68e361f9164f"
Current status of the password update process
activated, pending Identifier of the share set that was activated by this backup.
36^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"95b11417-f18f-457f-8804-68e361f9164f"
Role of the active share set for this wallet, or null if no active wallet exists.
delegated, rootUser, server, businessAccountUser Whether the share set is active.
Was this page helpful?
curl --request POST \
--url https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"locations": [
{
"keygenId": "An example name",
"externalKeyShareId": "An example name"
}
],
"passwordUpdateBatchId": "95b11417-f18f-457f-8804-68e361f9164f",
"shareSetId": "95b11417-f18f-457f-8804-68e361f9164f"
}
'import requests
url = "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations"
payload = {
"locations": [
{
"keygenId": "An example name",
"externalKeyShareId": "An example name"
}
],
"passwordUpdateBatchId": "95b11417-f18f-457f-8804-68e361f9164f",
"shareSetId": "95b11417-f18f-457f-8804-68e361f9164f"
}
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({
locations: [{keygenId: 'An example name', externalKeyShareId: 'An example name'}],
passwordUpdateBatchId: '95b11417-f18f-457f-8804-68e361f9164f',
shareSetId: '95b11417-f18f-457f-8804-68e361f9164f'
})
};
fetch('https://app.dynamicauth.com/api/v0/sdk/{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/sdk/{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([
'locations' => [
[
'keygenId' => 'An example name',
'externalKeyShareId' => 'An example name'
]
],
'passwordUpdateBatchId' => '95b11417-f18f-457f-8804-68e361f9164f',
'shareSetId' => '95b11417-f18f-457f-8804-68e361f9164f'
]),
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/sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations"
payload := strings.NewReader("{\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ],\n \"passwordUpdateBatchId\": \"95b11417-f18f-457f-8804-68e361f9164f\",\n \"shareSetId\": \"95b11417-f18f-457f-8804-68e361f9164f\"\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/sdk/{environmentId}/waas/{walletId}/keyShares/backup/locations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ],\n \"passwordUpdateBatchId\": \"95b11417-f18f-457f-8804-68e361f9164f\",\n \"shareSetId\": \"95b11417-f18f-457f-8804-68e361f9164f\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/sdk/{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 \"locations\": [\n {\n \"keygenId\": \"An example name\",\n \"externalKeyShareId\": \"An example name\"\n }\n ],\n \"passwordUpdateBatchId\": \"95b11417-f18f-457f-8804-68e361f9164f\",\n \"shareSetId\": \"95b11417-f18f-457f-8804-68e361f9164f\"\n}"
response = http.request(request)
puts response.read_body{
"locationsWithKeyShares": [
{
"externalKeyShareId": "95b11417-f18f-457f-8804-68e361f9164f",
"keyShareId": "95b11417-f18f-457f-8804-68e361f9164f"
}
],
"message": "<string>",
"walletId": "95b11417-f18f-457f-8804-68e361f9164f",
"shareSetId": "95b11417-f18f-457f-8804-68e361f9164f",
"walletActive": true
}{
"message": "<string>",
"walletId": "95b11417-f18f-457f-8804-68e361f9164f",
"passwordUpdateStatus": "pending"
}{
"error": "<string>"
}{
"error": "No jwt provided!"
}{
"error": "Not Found",
"code": "not_found"
}{
"error": "Resources already exists for this Object",
"payload": {
"email": "joe@email.com",
"embeddedWalletName": "<string>",
"mergeConflicts": {
"fromUser": {
"id": "95b11417-f18f-457f-8804-68e361f9164f",
"projectEnvironmentId": "95b11417-f18f-457f-8804-68e361f9164f",
"verifiedCredentials": [
{
"id": "95b11417-f18f-457f-8804-68e361f9164f-zerodev",
"signInEnabled": true,
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chain": "<string>",
"refId": "95b11417-f18f-457f-8804-68e361f9164f",
"signerRefId": "95b11417-f18f-457f-8804-68e361f9164f",
"email": "jsmith@example.com",
"name_service": {
"avatar": "<string>",
"name": "<string>"
},
"public_identifier": "<string>",
"wallet_name": "<string>",
"wallet_properties": {
"turnkeySubOrganizationId": "95b11417-f18f-457f-8804-68e361f9164f",
"turnkeyPrivateKeyId": "95b11417-f18f-457f-8804-68e361f9164f",
"turnkeyHDWalletId": "95b11417-f18f-457f-8804-68e361f9164f",
"isAuthenticatorAttached": true,
"turnkeyUserId": "95b11417-f18f-457f-8804-68e361f9164f",
"isSessionKeyCompatible": true
},
"business_account_properties": {
"businessAccountId": "95b11417-f18f-457f-8804-68e361f9164f",
"businessAccountCreatedAt": "2023-11-07T05:31:56Z",
"businessAccountSignerId": "95b11417-f18f-457f-8804-68e361f9164f",
"businessAccountName": "<string>",
"businessAccountExternalRef": "<string>"
},
"oauth_username": "<string>",
"oauth_display_name": "<string>",
"oauth_account_id": "<string>",
"phoneNumber": "9171113333",
"phoneCountryCode": "1",
"isoCountryCode": "US",
"oauth_account_photos": [
"<string>"
],
"oauth_emails": [
"<string>"
],
"oauth_metadata": {},
"previous_users": [
"95b11417-f18f-457f-8804-68e361f9164f"
],
"embedded_wallet_id": "<string>",
"wallet_additional_addresses": [
{
"address": "<string>",
"publicKey": "<string>",
"network": "<string>"
}
],
"lastSelectedAt": "2023-11-07T05:31:56Z",
"verifiedAt": "2023-11-07T05:31:56Z"
}
],
"lastVerifiedCredentialId": "95b11417-f18f-457f-8804-68e361f9164f-zerodev",
"sessionId": "95b11417-f18f-457f-8804-68e361f9164f",
"alias": "An example name",
"country": "US",
"email": "jsmith@example.com",
"firstName": "An example name",
"jobTitle": "An example name",
"lastName": "An example name",
"phoneNumber": "<string>",
"policiesConsent": true,
"tShirtSize": "An example name",
"team": "An example name",
"username": "An example name",
"firstVisit": "2023-11-07T05:31:56Z",
"lastVisit": "2023-11-07T05:31:56Z",
"newUser": true,
"metadata": {},
"btcWallet": "<string>",
"kdaWallet": "<string>",
"ltcWallet": "<string>",
"ckbWallet": "<string>",
"kasWallet": "<string>",
"dogeWallet": "<string>",
"emailNotification": true,
"discordNotification": true,
"newsletterNotification": true,
"lists": [
"<string>"
],
"scope": "superuser marketing operations",
"missingFields": [
{
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"label": "<string>",
"position": 123
}
]
},
"conflicts": [
{
"field": {
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"label": "<string>",
"position": 123
},
"fromUser": {
"userId": "95b11417-f18f-457f-8804-68e361f9164f",
"value": "An example name"
},
"currentUser": {
"userId": "95b11417-f18f-457f-8804-68e361f9164f",
"value": "An example name"
}
}
]
},
"additionalMessages": [
"<string>"
]
}
}{
"error": "Internal Server Error"
}