Skip to main content

Signing Automation Quickstart

Turnkey's Signing Automation enables you to build secure, programmatic signing workflows directly into your applications. With features like customizable policies, multi-party approvals, and support for any blockchain, you can confidently automate complex signing operations while maintaining enterprise-grade security.

Prerequisites

This guide assumes you've completed the steps to create an account and organization as described in the Getting Started section.

Installation

Install the Turnkey CLI to get started:

brew install tkhq/tap/turnkey

We use Homebrew for a quick installation process. For a more secure installation that requires no trust in external parties, see our CLI repository.

Create Wallet

Wallets are collections of cryptographic key pairs typically used for sending and receiving digital assets. To create one, we need to provide a name:

turnkey wallets create --name default --key-name quickstart

Create Ethereum Account

To create a cryptographic key pair on our new Wallet, we need to pass our desired address format:

turnkey wallets accounts create --wallet default --address-format ADDRESS_FORMAT_ETHEREUM --key-name quickstart

This command will produce an Ethereum address (e.g. 0x08cb1216C95149DF66978b574E484869512CE2bF) that we'll need to sign a transaction. You can see your new Wallet account with:

turnkey wallets accounts list --wallet default --key-name quickstart

Sign a Transaction

Sign a Transaction

Now you can sign an Ethereum transaction with this new address with our sign_transaction endpoint. Make sure to replace the unsignedTransaction below with your own. You can use our simple transaction generator if you need a quick transaction for testing:

turnkey request --path /public/v1/submit/sign_transaction --body '{
"timestampMs": "'"$(date +%s)"'000",
"type": "ACTIVITY_TYPE_SIGN_TRANSACTION_V2",
"organizationId": "'"$ORGANIZATION_ID"'",
"parameters": {
"type": "TRANSACTION_TYPE_ETHEREUM",
"signWith": "<Your Ethereum address>",
"unsignedTransaction": "<Your Transaction>"
}
}' --key-name quickstart

If you'd like to broadcast your transaction, you can easily do so via Etherscan.

Next Steps