Skip to content

Latest commit

 

History

History
302 lines (259 loc) · 14.6 KB

File metadata and controls

302 lines (259 loc) · 14.6 KB
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 field

Enum options: CURVE_SECP256K1, CURVE_ED25519, CURVE_P256

A list of Private Key Tag IDs. This field, if not needed, should be an empty array in your request body. item field
  </Expandable>
</NestedParam>
Cryptocurrency-specific formats for a derived address (e.g., Ethereum). item field

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>
The result of the activity The createPrivateKeysResultV2 object A list of Private Key IDs and addresses. privateKeyId field addresses field format field

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

address field
  </Expandable>
</NestedParam>

  </Expandable>
</NestedParam>

  </Expandable>
</NestedParam>

  </Expandable>
</NestedParam>
A list of objects representing a particular User's approval or rejection of a Consensus request, including all relevant metadata. An artifact verifying a User's action. Whether the activity can be approved. Whether the activity can be rejected. The creation timestamp. The last update timestamp.

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>"
      }
    }
  }
}