curl --request POST \
--url https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"clientKeygenIds": [
"<string>"
],
"skipLock": false,
"addressType": "<string>",
"businessAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"delegateToProjectEnvironment": false
}
'import requests
url = "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/create"
payload = {
"clientKeygenIds": ["<string>"],
"skipLock": False,
"addressType": "<string>",
"businessAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"delegateToProjectEnvironment": False
}
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({
clientKeygenIds: ['<string>'],
skipLock: false,
addressType: '<string>',
businessAccountId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
delegateToProjectEnvironment: false
})
};
fetch('https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/create', 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/create",
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([
'clientKeygenIds' => [
'<string>'
],
'skipLock' => false,
'addressType' => '<string>',
'businessAccountId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'delegateToProjectEnvironment' => false
]),
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/create"
payload := strings.NewReader("{\n \"clientKeygenIds\": [\n \"<string>\"\n ],\n \"skipLock\": false,\n \"addressType\": \"<string>\",\n \"businessAccountId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"delegateToProjectEnvironment\": false\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/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"clientKeygenIds\": [\n \"<string>\"\n ],\n \"skipLock\": false,\n \"addressType\": \"<string>\",\n \"businessAccountId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"delegateToProjectEnvironment\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/create")
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 \"clientKeygenIds\": [\n \"<string>\"\n ],\n \"skipLock\": false,\n \"addressType\": \"<string>\",\n \"businessAccountId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"delegateToProjectEnvironment\": false\n}"
response = http.request(request)
puts response.read_body{
"roomId": "<string>",
"serverKeygenIds": [
"<string>"
],
"newServerKeygenIds": [
"<string>"
],
"walletId": "95b11417-f18f-457f-8804-68e361f9164f",
"accountAddress": "<string>",
"encryptedWalletApiKey": {
"alg": "An example name",
"iv": "An example name",
"ct": "<string>",
"tag": "An example name",
"ek": "<string>",
"kid": "An example name"
},
"shareSetId": "95b11417-f18f-457f-8804-68e361f9164f",
"shareSetType": "delegated"
}{
"error": "<string>",
"code": "exchange_currency_unsupported"
}{
"error": "No jwt provided!"
}{
"error": "Access Forbidden",
"code": "sanctions_blocked"
}{
"error": "Not Found",
"code": "not_found"
}{
"error": "Resources already exists for this Object",
"code": "email_cannot_be_null",
"payload": {
"email": "joe@email.com",
"loginProvider": "emailOnly",
"embeddedWalletName": "<string>",
"embeddedSocialSigninProvider": "emailOnly",
"mergeConflicts": {
"fromUser": {
"id": "95b11417-f18f-457f-8804-68e361f9164f",
"projectEnvironmentId": "95b11417-f18f-457f-8804-68e361f9164f",
"verifiedCredentials": [
{
"id": "95b11417-f18f-457f-8804-68e361f9164f-zerodev",
"format": "blockchain",
"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_provider": "browserExtension",
"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,
"version": "V1",
"ecdsaProviderType": "zerodev_signer_to_ecdsa",
"entryPointVersion": "v6",
"kernelVersion": "v2_4"
},
"business_account_properties": {
"businessAccountId": "95b11417-f18f-457f-8804-68e361f9164f",
"businessAccountCreatedAt": "2023-11-07T05:31:56Z",
"businessAccountSignerId": "95b11417-f18f-457f-8804-68e361f9164f",
"businessAccountSignerType": "endUser",
"businessAccountMemberRole": "cfo",
"businessAccountName": "<string>",
"businessAccountExternalRef": "<string>"
},
"oauth_provider": "emailOnly",
"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>",
"type": "ordinals",
"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": {},
"mfaBackupCodeAcknowledgement": "pending",
"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,
"type": "standard",
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"validationType": "text",
"label": "<string>",
"position": 123
}
]
},
"conflicts": [
{
"field": {
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"type": "standard",
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"validationType": "text",
"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"
}
}
]
},
"intent": {},
"additionalMessages": [
"<string>"
]
},
"retryAfterSeconds": 600
}{
"error": "Internal Server Error"
}Create a WAAS wallet
Create a new waas account
curl --request POST \
--url https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"clientKeygenIds": [
"<string>"
],
"skipLock": false,
"addressType": "<string>",
"businessAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"delegateToProjectEnvironment": false
}
'import requests
url = "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/create"
payload = {
"clientKeygenIds": ["<string>"],
"skipLock": False,
"addressType": "<string>",
"businessAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"delegateToProjectEnvironment": False
}
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({
clientKeygenIds: ['<string>'],
skipLock: false,
addressType: '<string>',
businessAccountId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
delegateToProjectEnvironment: false
})
};
fetch('https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/create', 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/create",
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([
'clientKeygenIds' => [
'<string>'
],
'skipLock' => false,
'addressType' => '<string>',
'businessAccountId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'delegateToProjectEnvironment' => false
]),
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/create"
payload := strings.NewReader("{\n \"clientKeygenIds\": [\n \"<string>\"\n ],\n \"skipLock\": false,\n \"addressType\": \"<string>\",\n \"businessAccountId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"delegateToProjectEnvironment\": false\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/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"clientKeygenIds\": [\n \"<string>\"\n ],\n \"skipLock\": false,\n \"addressType\": \"<string>\",\n \"businessAccountId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"delegateToProjectEnvironment\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/waas/create")
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 \"clientKeygenIds\": [\n \"<string>\"\n ],\n \"skipLock\": false,\n \"addressType\": \"<string>\",\n \"businessAccountId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"delegateToProjectEnvironment\": false\n}"
response = http.request(request)
puts response.read_body{
"roomId": "<string>",
"serverKeygenIds": [
"<string>"
],
"newServerKeygenIds": [
"<string>"
],
"walletId": "95b11417-f18f-457f-8804-68e361f9164f",
"accountAddress": "<string>",
"encryptedWalletApiKey": {
"alg": "An example name",
"iv": "An example name",
"ct": "<string>",
"tag": "An example name",
"ek": "<string>",
"kid": "An example name"
},
"shareSetId": "95b11417-f18f-457f-8804-68e361f9164f",
"shareSetType": "delegated"
}{
"error": "<string>",
"code": "exchange_currency_unsupported"
}{
"error": "No jwt provided!"
}{
"error": "Access Forbidden",
"code": "sanctions_blocked"
}{
"error": "Not Found",
"code": "not_found"
}{
"error": "Resources already exists for this Object",
"code": "email_cannot_be_null",
"payload": {
"email": "joe@email.com",
"loginProvider": "emailOnly",
"embeddedWalletName": "<string>",
"embeddedSocialSigninProvider": "emailOnly",
"mergeConflicts": {
"fromUser": {
"id": "95b11417-f18f-457f-8804-68e361f9164f",
"projectEnvironmentId": "95b11417-f18f-457f-8804-68e361f9164f",
"verifiedCredentials": [
{
"id": "95b11417-f18f-457f-8804-68e361f9164f-zerodev",
"format": "blockchain",
"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_provider": "browserExtension",
"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,
"version": "V1",
"ecdsaProviderType": "zerodev_signer_to_ecdsa",
"entryPointVersion": "v6",
"kernelVersion": "v2_4"
},
"business_account_properties": {
"businessAccountId": "95b11417-f18f-457f-8804-68e361f9164f",
"businessAccountCreatedAt": "2023-11-07T05:31:56Z",
"businessAccountSignerId": "95b11417-f18f-457f-8804-68e361f9164f",
"businessAccountSignerType": "endUser",
"businessAccountMemberRole": "cfo",
"businessAccountName": "<string>",
"businessAccountExternalRef": "<string>"
},
"oauth_provider": "emailOnly",
"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>",
"type": "ordinals",
"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": {},
"mfaBackupCodeAcknowledgement": "pending",
"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,
"type": "standard",
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"validationType": "text",
"label": "<string>",
"position": 123
}
]
},
"conflicts": [
{
"field": {
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"type": "standard",
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"validationType": "text",
"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"
}
}
]
},
"intent": {},
"additionalMessages": [
"<string>"
]
},
"retryAfterSeconds": 600
}{
"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"
Body
Create Waas Account Request
EVM, MIDNIGHT, SVM, SUI, BTC, TON, STELLAR, TEMPO, ALEO, TRON List of client-side key generation identifiers
A base58 string with a max length of 100 characters
100^[1-9A-HJ-NP-Za-km-z]+$TWO_OF_TWO, TWO_OF_THREE, THREE_OF_FIVE When true, bypasses server-side lock during wallet creation.
Address derivation type for the new account
When set, creates this wallet as a business-account wallet rather than a root-user wallet: Wallets.userId stays null, Wallets is bound to the business account, the WaaS share set is minted with type businessAccountUser in pending status, and the caller is registered as the wallet's signer. Caller must be an owner or admin of the business account. Requires the enable-business-accounts feature flag — calls with this field will 422 if the flag is off rather than silently falling back to root-user creation.
When true, the enclave also mints a walletApiKey for the new wallet and returns it as encryptedWalletApiKey, sealed to the environment's delegated-access RSA key. Off by default: a wallet whose EAC carries no walletApiKey cannot be used on the delegated sign route at all, and that stays true unless the creator asks otherwise. 422s when the environment has no active delegated-access encryption key, rather than creating a wallet the caller cannot delegate against.
Protocol variant for the wallet. ed25519Standard = non-exportable Ed25519, used for raw-scalar import where the 32-byte input is the signing scalar itself (not an RFC-8032 seed). Omitted/ed25519Exportable = the default seed-based Ed25519. Only meaningful for ed25519 chains (e.g. Solana).
ed25519Exportable, ed25519Standard Response
Successfully created a room for waas account creation ceremony
Unique identifier of the opened MPC room
List of existing server-side key generation identifiers
A base58 string with a max length of 100 characters
100^[1-9A-HJ-NP-Za-km-z]+$List of newly generated server-side key generation identifiers
A base58 string with a max length of 100 characters
100^[1-9A-HJ-NP-Za-km-z]+$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"
Public address of the wallet produced by this ceremony.
Present only on a create that set delegateToProjectEnvironment. Inherited by RefreshKeySharesResponse through this schema, where it is never set.
Show child attributes
Show child attributes
Identifier of the new share set produced by this ceremony.
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"
The role this share set plays for the wallet
delegated, rootUser, server, businessAccountUser, offlineRecovery