Authorizations
Body
ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7The parameters object containing the specific intent data for this activity.
Show details
Show details
Root users to create within this sub-organization
Show item details
Show item details
A list of API Key parameters. This field, if not needed, should be an empty array in your request body.
Show item details
Show item details
API_KEY_CURVE_P256, API_KEY_CURVE_SECP256K1, API_KEY_CURVE_ED25519A list of Authenticator parameters. This field, if not needed, should be an empty array in your request body.
Show item details
Show item details
attestation field
Show details
Show details
A list of Oauth providers. This field, if not needed, should be an empty array in your request body.
wallet field
Show details
Show details
A list of wallet Accounts. This field, if not needed, should be an empty array in your request body.
Show item details
Show item details
ADDRESS_FORMAT_UNCOMPRESSED, ADDRESS_FORMAT_COMPRESSED, ADDRESS_FORMAT_ETHEREUM, ADDRESS_FORMAT_SOLANA, ADDRESS_FORMAT_COSMOS, ADDRESS_FORMAT_TRON, ADDRESS_FORMAT_SUI, ADDRESS_FORMAT_APTOS, ADDRESS_FORMAT_BITCOIN_MAINNET_P2PKH, ADDRESS_FORMAT_BITCOIN_MAINNET_P2SH, ADDRESS_FORMAT_BITCOIN_MAINNET_P2WPKH, ADDRESS_FORMAT_BITCOIN_MAINNET_P2WSH, ADDRESS_FORMAT_BITCOIN_MAINNET_P2TR, ADDRESS_FORMAT_BITCOIN_TESTNET_P2PKH, ADDRESS_FORMAT_BITCOIN_TESTNET_P2SH, ADDRESS_FORMAT_BITCOIN_TESTNET_P2WPKH, ADDRESS_FORMAT_BITCOIN_TESTNET_P2WSH, ADDRESS_FORMAT_BITCOIN_TESTNET_P2TR, ADDRESS_FORMAT_BITCOIN_SIGNET_P2PKH, ADDRESS_FORMAT_BITCOIN_SIGNET_P2SH, ADDRESS_FORMAT_BITCOIN_SIGNET_P2WPKH, ADDRESS_FORMAT_BITCOIN_SIGNET_P2WSH, ADDRESS_FORMAT_BITCOIN_SIGNET_P2TR, ADDRESS_FORMAT_BITCOIN_REGTEST_P2PKH, ADDRESS_FORMAT_BITCOIN_REGTEST_P2SH, ADDRESS_FORMAT_BITCOIN_REGTEST_P2WPKH, ADDRESS_FORMAT_BITCOIN_REGTEST_P2WSH, ADDRESS_FORMAT_BITCOIN_REGTEST_P2TR, ADDRESS_FORMAT_SEI, ADDRESS_FORMAT_XLM, ADDRESS_FORMAT_DOGE_MAINNET, ADDRESS_FORMAT_DOGE_TESTNET, ADDRESS_FORMAT_TON_V3R2, ADDRESS_FORMAT_TON_V4R2, ADDRESS_FORMAT_TON_V5R1, ADDRESS_FORMAT_XRPResponse
A successful response returns the following fields:Show activity details
Show activity details
Show intent details
Show intent details
Show createSubOrganizationIntentV7 details
Show createSubOrganizationIntentV7 details
Show rootUsers details
Show rootUsers details
Show apiKeys details
Show apiKeys details
API_KEY_CURVE_P256, API_KEY_CURVE_SECP256K1, API_KEY_CURVE_ED25519Show authenticators details
Show authenticators details
Show attestation details
Show attestation details
Show transports details
Show transports details
Show wallet details
Show wallet details
Show accounts details
Show accounts details
CURVE_SECP256K1, CURVE_ED25519PATH_FORMAT_BIP32ADDRESS_FORMAT_UNCOMPRESSED, ADDRESS_FORMAT_COMPRESSED, ADDRESS_FORMAT_ETHEREUM, ADDRESS_FORMAT_SOLANA, ADDRESS_FORMAT_COSMOS, ADDRESS_FORMAT_TRON, ADDRESS_FORMAT_SUI, ADDRESS_FORMAT_APTOS, ADDRESS_FORMAT_BITCOIN_MAINNET_P2PKH, ADDRESS_FORMAT_BITCOIN_MAINNET_P2SH, ADDRESS_FORMAT_BITCOIN_MAINNET_P2WPKH, ADDRESS_FORMAT_BITCOIN_MAINNET_P2WSH, ADDRESS_FORMAT_BITCOIN_MAINNET_P2TR, ADDRESS_FORMAT_BITCOIN_TESTNET_P2PKH, ADDRESS_FORMAT_BITCOIN_TESTNET_P2SH, ADDRESS_FORMAT_BITCOIN_TESTNET_P2WPKH, ADDRESS_FORMAT_BITCOIN_TESTNET_P2WSH, ADDRESS_FORMAT_BITCOIN_TESTNET_P2TR, ADDRESS_FORMAT_BITCOIN_SIGNET_P2PKH, ADDRESS_FORMAT_BITCOIN_SIGNET_P2SH, ADDRESS_FORMAT_BITCOIN_SIGNET_P2WPKH, ADDRESS_FORMAT_BITCOIN_SIGNET_P2WSH, ADDRESS_FORMAT_BITCOIN_SIGNET_P2TR, ADDRESS_FORMAT_BITCOIN_REGTEST_P2PKH, ADDRESS_FORMAT_BITCOIN_REGTEST_P2SH, ADDRESS_FORMAT_BITCOIN_REGTEST_P2WPKH, ADDRESS_FORMAT_BITCOIN_REGTEST_P2WSH, ADDRESS_FORMAT_BITCOIN_REGTEST_P2TR, ADDRESS_FORMAT_SEI, ADDRESS_FORMAT_XLM, ADDRESS_FORMAT_DOGE_MAINNET, ADDRESS_FORMAT_DOGE_TESTNET, ADDRESS_FORMAT_TON_V3R2, ADDRESS_FORMAT_TON_V4R2, ADDRESS_FORMAT_TON_V5R1, ADDRESS_FORMAT_XRPShow result details
Show result details
Show createSubOrganizationResultV7 details
Show createSubOrganizationResultV7 details
Show wallet details
Show wallet details
curl --request POST \
--url https://api.turnkey.com/public/v1/submit/create_sub_organization \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <string> (see Authorizations)" \
--data '{
"type": "ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7",
"timestampMs": "<string> (e.g. 1746736509954)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"subOrganizationName": "<string>",
"rootUsers": [
{
"userName": "<string>",
"userEmail": "<string>",
"userPhoneNumber": "<string>",
"apiKeys": [
{
"apiKeyName": "<string>",
"publicKey": "<string>",
"curveType": "<API_KEY_CURVE_P256>",
"expirationSeconds": "<string>"
}
],
"authenticators": [
{
"authenticatorName": "<string>",
"challenge": "<string>",
"attestation": {
"credentialId": "<string>",
"clientDataJson": "<string>",
"attestationObject": "<string>",
"transports": [
"<AUTHENTICATOR_TRANSPORT_BLE>"
]
}
}
],
"oauthProviders": [
{
"providerName": "<string>",
"oidcToken": "<string>"
}
]
}
],
"rootQuorumThreshold": "<number>",
"wallet": {
"walletName": "<string>",
"accounts": [
{
"curve": "<CURVE_SECP256K1>",
"pathFormat": "<PATH_FORMAT_BIP32>",
"path": "<string>",
"addressFormat": "<ADDRESS_FORMAT_UNCOMPRESSED>"
}
],
"mnemonicLength": "<number>"
},
"disableEmailRecovery": "<boolean>",
"disableEmailAuth": "<boolean>",
"disableSmsAuth": "<boolean>",
"disableOtpEmailAuth": "<boolean>",
"verificationToken": "<string>"
}
}'
import { Turnkey } from "@turnkey/sdk-server";
const turnkeyClient = new Turnkey({
apiBaseUrl: "https://api.turnkey.com",
apiPublicKey: process.env.API_PUBLIC_KEY!,
apiPrivateKey: process.env.API_PRIVATE_KEY!,
defaultOrganizationId: process.env.ORGANIZATION_ID!,
});
const response = await turnkeyClient.apiClient().createSubOrganization({
subOrganizationName: "<string> (Name for this sub-organization)",
rootUsers: [{ // Root users to create within this sub-organization,
userName: "<string> (Human-readable name for a User.)",
userEmail: "<string> (The user's email address.)",
userPhoneNumber: "<string> (The user's phone number in E.164 format e.g. +13214567890)",
apiKeys: [{ // A list of API Key parameters. This field, if not needed, should be an empty array in your request body.,
apiKeyName: "<string> (Human-readable name for an API Key.)",
publicKey: "<string> (The public component of a cryptographic key pair used to sign messages and transactions.)",
curveType: "<API_KEY_CURVE_P256>" // curveType field,
expirationSeconds: "<string> (Optional window (in seconds) indicating how long the API Key should last.)",
}],
authenticators: [{ // A list of Authenticator parameters. This field, if not needed, should be an empty array in your request body.,
authenticatorName: "<string> (Human-readable name for an Authenticator.)",
challenge: "<string> (Challenge presented for authentication purposes.)",
attestation: { // attestation field,
credentialId: "<string> (The cbor encoded then base64 url encoded id of the credential.)",
clientDataJson: "<string> (A base64 url encoded payload containing metadata about the signing context and the challenge.)",
attestationObject: "<string> (A base64 url encoded payload containing authenticator data and any attestation the webauthn provider chooses.)",
transports: "<AUTHENTICATOR_TRANSPORT_BLE>" // The type of authenticator transports.,
},
}],
oauthProviders: [{ // A list of Oauth providers. This field, if not needed, should be an empty array in your request body.,
providerName: "<string> (Human-readable name to identify a Provider.)",
oidcToken: "<string> (Base64 encoded OIDC token)",
}],
}],
rootQuorumThreshold: 0 // The threshold of unique approvals to reach root quorum. This value must be less than or equal to the number of root users,
wallet: { // wallet field,
walletName: "<string> (Human-readable name for a Wallet.)",
accounts: [{ // A list of wallet Accounts. This field, if not needed, should be an empty array in your request body.,
curve: "<CURVE_SECP256K1>" // curve field,
pathFormat: "<PATH_FORMAT_BIP32>" // pathFormat field,
path: "<string> (Path used to generate a wallet Account.)",
addressFormat: "<ADDRESS_FORMAT_UNCOMPRESSED>" // addressFormat field,
}],
mnemonicLength: 0 // Length of mnemonic to generate the Wallet seed. Defaults to 12. Accepted values: 12, 15, 18, 21, 24.,
},
disableEmailRecovery: true // Disable email recovery for the sub-organization,
disableEmailAuth: true // Disable email auth for the sub-organization,
disableSmsAuth: true // Disable OTP SMS auth for the sub-organization,
disableOtpEmailAuth: true // Disable OTP email auth for the sub-organization,
verificationToken: "<string> (Signed JWT containing a unique id, expiry, verification type, contact)"
});
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g. 1746736509954)",
"result": {
"activity": {
"id": "<string>",
"organizationId": "<string>",
"status": "<string>",
"type": "<string>",
"intent": {
"createSubOrganizationIntentV7": {
"subOrganizationName": "<string>",
"rootUsers": [
{
"userName": "<string>",
"userEmail": "<string>",
"userPhoneNumber": "<string>",
"apiKeys": [
{
"apiKeyName": "<string>",
"publicKey": "<string>",
"curveType": "<API_KEY_CURVE_P256>",
"expirationSeconds": "<string>"
}
],
"authenticators": [
{
"authenticatorName": "<string>",
"challenge": "<string>",
"attestation": {
"credentialId": "<string>",
"clientDataJson": "<string>",
"attestationObject": "<string>",
"transports": [
"<AUTHENTICATOR_TRANSPORT_BLE>"
]
}
}
],
"oauthProviders": [
{
"providerName": "<string>",
"oidcToken": "<string>"
}
]
}
],
"rootQuorumThreshold": "<number>",
"wallet": {
"walletName": "<string>",
"accounts": [
{
"curve": "<CURVE_SECP256K1>",
"pathFormat": "<PATH_FORMAT_BIP32>",
"path": "<string>",
"addressFormat": "<ADDRESS_FORMAT_UNCOMPRESSED>"
}
],
"mnemonicLength": "<number>"
},
"disableEmailRecovery": "<boolean>",
"disableEmailAuth": "<boolean>",
"disableSmsAuth": "<boolean>",
"disableOtpEmailAuth": "<boolean>",
"verificationToken": "<string>"
}
},
"result": {
"createSubOrganizationResultV7": {
"subOrganizationId": "<string>",
"wallet": {
"walletId": "<string>",
"addresses": [
"<string>"
]
},
"rootUserIds": [
"<string>"
]
}
},
"votes": "<array>",
"fingerprint": "<string>",
"canApprove": "<boolean>",
"canReject": "<boolean>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
}
}
}