| title | Create private keys |
|---|---|
| description | Create new private keys. |
import { Authorizations } from "/snippets/api/authorizations.mdx"; import { H3Bordered } from "/snippets/h3-bordered.mdx"; import { NestedParam } from "/snippets/nested-param.mdx"; import { EndpointPath } from "/snippets/api/endpoint.mdx";
Enum options: ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2
Timestamp (in milliseconds) of the request, used to verify liveness of user requests.
Unique identifier for a given Organization.
The parameters object containing the specific intent data for this activity.
A list of Private Keys.
Human-readable name for a Private Key. <NestedParam parentKey="parameters.privateKeys" childKey="curve" type="enum<string>" required={true} default="">
Enum options: `CURVE_SECP256K1`, `CURVE_ED25519`, `CURVE_P256`
</NestedParam>
<ParamField body="privateKeyTags" type="array" required={true} path="parameters.privateKeys.privateKeyTags">
<p>A list of Private Key Tag IDs. This field, if not needed, should be an empty array in your request body.</p>
<Expandable title="item details">
<p>Array item type: <code>string</code></p>
<p>item field</p>
</Expandable>
</ParamField>
<NestedParam parentKey="parameters.privateKeys" childKey="addressFormats" type="enum<string[]>" required={true} default="">
Enum options: `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_XRP`, `ADDRESS_FORMAT_SPARK_MAINNET`, `ADDRESS_FORMAT_SPARK_REGTEST`
</NestedParam>
</Expandable>
</ParamField>
Enable to have your activity generate and return App Proofs, enabling verifiability.
A successful response returns the following fields: The activity object containing type, intent, and result Unique identifier for a given Activity object. Unique identifier for a given Organization. The activity status The activity type The intent of the activity The createPrivateKeysIntentV2 object A list of Private Keys. Human-readable name for a Private Key. curve fieldEnum options: CURVE_SECP256K1, CURVE_ED25519, CURVE_P256
</Expandable>
</NestedParam>
Enum options: 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_XRP, ADDRESS_FORMAT_SPARK_MAINNET, ADDRESS_FORMAT_SPARK_REGTEST
</Expandable>
</NestedParam>
</Expandable>
</NestedParam>
</Expandable>
</NestedParam>
</Expandable>
</NestedParam>
Enum options: 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_XRP, ADDRESS_FORMAT_SPARK_MAINNET, ADDRESS_FORMAT_SPARK_REGTEST
</Expandable>
</NestedParam>
</Expandable>
</NestedParam>
</Expandable>
</NestedParam>
</Expandable>
</NestedParam>
For a detailed breakdown of potential error codes, please refer to our Error Documentation.
curl --request POST \
--url https://api.turnkey.com/public/v1/submit/create_private_keys \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <string> (see Authorizations)" \
--data '{
"type": "ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2",
"timestampMs": "<string> (e.g. 1746736509954)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"privateKeys": [
{
"privateKeyName": "<string>",
"curve": "<CURVE_SECP256K1>",
"privateKeyTags": [
"<string>"
],
"addressFormats": [
"<ADDRESS_FORMAT_UNCOMPRESSED>"
]
}
]
}
}'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().createPrivateKeys({
privateKeys: [{ // A list of Private Keys.,
privateKeyName: "<string> (Human-readable name for a Private Key.)",
curve: "<CURVE_SECP256K1>" // curve field,
privateKeyTags: ["<string>"] // A list of Private Key Tag IDs. This field, if not needed, should be an empty array in your request body.,
addressFormats: "<ADDRESS_FORMAT_UNCOMPRESSED>" // Cryptocurrency-specific formats for a derived address (e.g., Ethereum).,
}]
});{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g. 1746736509954)",
"result": {
"activity": {
"id": "<string>",
"organizationId": "<string>",
"status": "<string>",
"type": "<string>",
"intent": {
"createPrivateKeysIntentV2": {
"privateKeys": [
{
"privateKeyName": "<string>",
"curve": "<CURVE_SECP256K1>",
"privateKeyTags": [
"<string>"
],
"addressFormats": [
"<ADDRESS_FORMAT_UNCOMPRESSED>"
]
}
]
}
},
"result": {
"createPrivateKeysResultV2": {
"privateKeys": [
{
"privateKeyId": "<string>",
"addresses": [
{
"format": "<ADDRESS_FORMAT_UNCOMPRESSED>",
"address": "<string>"
}
]
}
]
}
},
"votes": "<array>",
"fingerprint": "<string>",
"canApprove": "<boolean>",
"canReject": "<boolean>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
}
}
}