Skip to main content
POST
/
public
/
v1
/
submit
/
eth_send_transaction

Authorizations

X-Stamp
string
required
Cryptographically signed (stamped) request to be passed in as a header. For more info, see here.

Body

type
enum<string>
required
Enum options: ACTIVITY_TYPE_ETH_SEND_TRANSACTION
timestampMs
string
required
Timestamp (in milliseconds) of the request, used to verify liveness of user requests.
organizationId
string
required
Unique identifier for a given Organization.
parameters
object
required

The parameters object containing the specific intent data for this activity.

generateAppProofs
boolean
Enable to have your activity generate and return App Proofs, enabling verifiability.

Response

A successful response returns the following fields:
activity
object
required
The activity object containing type, intent, and result
curl --request POST \
  --url https://api.turnkey.com/public/v1/submit/eth_send_transaction \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header "X-Stamp: <string> (see Authorizations)" \
  --data '{
    "type": "ACTIVITY_TYPE_ETH_SEND_TRANSACTION",
    "timestampMs": "<string> (e.g. 1746736509954)",
    "organizationId": "<string> (Your Organization ID)",
    "parameters": {
        "from": "<string>",
        "sponsor": "<boolean>",
        "caip2": "<eip155:1>",
        "to": "<string>",
        "value": "<string>",
        "data": "<string>",
        "nonce": "<string>",
        "gasLimit": "<string>",
        "maxFeePerGas": "<string>",
        "maxPriorityFeePerGas": "<string>",
        "gasStationNonce": "<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().ethSendTransaction({
  from: "<string> (A wallet or private key address to sign with. This does not support private key IDs.)",
  sponsor: true // Whether to sponsor this transaction via Gas Station.,
  caip2: "<eip155:1>" // CAIP-2 chain ID (e.g., 'eip155:1' for Ethereum mainnet).,
  to: "<string> (Recipient address as a hex string with 0x prefix.)",
  value: "<string> (Amount of native asset to send in wei.)",
  data: "<string> (Hex-encoded call data for contract interactions.)",
  nonce: "<string> (Transaction nonce, for EIP-1559 and Turnkey Gas Station authorizations.)",
  gasLimit: "<string> (Maximum amount of gas to use for this transaction, for EIP-1559 transactions.)",
  maxFeePerGas: "<string> (Maximum total fee per gas unit (base fee + priority fee) in wei. Required for non-sponsored (EIP-1559) transactions. Not used for sponsored transactions.)",
  maxPriorityFeePerGas: "<string> (Maximum priority fee (tip) per gas unit in wei. Required for non-sponsored (EIP-1559) transactions. Not used for sponsored transactions.)",
  gasStationNonce: "<string> (The gas station delegate contract nonce. Only used when sponsor=true. Include this if you want maximal security posture.)"
});
{
  "activity": {
    "id": "<activity-id>",
    "status": "ACTIVITY_STATUS_COMPLETED",
    "type": "ACTIVITY_TYPE_ETH_SEND_TRANSACTION",
    "organizationId": "<organization-id>",
    "timestampMs": "<timestamp> (e.g. 1746736509954)",
    "result": {
      "activity": {
        "id": "<string>",
        "organizationId": "<string>",
        "status": "<string>",
        "type": "<string>",
        "intent": {
          "ethSendTransactionIntent": {
            "from": "<string>",
            "sponsor": "<boolean>",
            "caip2": "<eip155:1>",
            "to": "<string>",
            "value": "<string>",
            "data": "<string>",
            "nonce": "<string>",
            "gasLimit": "<string>",
            "maxFeePerGas": "<string>",
            "maxPriorityFeePerGas": "<string>",
            "gasStationNonce": "<string>"
          }
        },
        "result": {
          "ethSendTransactionResult": {
            "sendTransactionStatusId": "<string>"
          }
        },
        "votes": "<array>",
        "fingerprint": "<string>",
        "canApprove": "<boolean>",
        "canReject": "<boolean>",
        "createdAt": "<string>",
        "updatedAt": "<string>"
      }
    }
  }
}