Enum options:
ACTIVITY_TYPE_ETH_SEND_TRANSACTION_V2Timestamp (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.
Show details
Show details
Ordered list of calls to execute. Must contain between 1 and 50 entries. A single entry with sponsor=false uses EIP-1559; multiple entries use EIP-7702 batch execution via Gas Station.
Show item details
Show item details
Enable to have your activity generate and return App Proofs, enabling verifiability.
The activity object containing type, intent, and result
Show activity details
Show activity details
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_V2",
"timestampMs": "<string> (e.g. 1746736509954)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"from": "<string>",
"caip2": "<eip155:1>",
"sponsor": "<boolean>",
"nonce": "<string>",
"gasLimit": "<string>",
"maxFeePerGas": "<string>",
"maxPriorityFeePerGas": "<string>",
"deadline": "<string>",
"gasStationNonce": "<string>",
"calls": [
{
"to": "<string>",
"value": "<string>",
"data": "<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.)",
caip2: "<eip155:1>" // CAIP-2 chain ID (e.g., 'eip155:1' for Ethereum mainnet).,
sponsor: true // Whether to sponsor this transaction via Gas Station. If false or unset, the EOA pays gas. A single call uses EIP-1559; multiple calls use EIP-7702 batch execution via Gas Station.,
nonce: "<string> (Outer transaction nonce. Omit to auto-fetch.)",
gasLimit: "<string> (Maximum amount of gas for the outer transaction. Omit to auto-estimate.)",
maxFeePerGas: "<string> (Maximum total fee per gas unit (base fee + priority fee) in wei. Omit to auto-estimate.)",
maxPriorityFeePerGas: "<string> (Maximum priority fee (tip) per gas unit in wei. Omit to auto-estimate.)",
deadline: "<string> (Unix timestamp in seconds for EIP-712 execution deadline. Only used when sponsor=true.)",
gasStationNonce: "<string> (The gas station delegate contract nonce. Only used when sponsor=true. Omit to auto-fetch.)",
calls: [{ // Ordered list of calls to execute. Must contain between 1 and 50 entries. A single entry with sponsor=false uses EIP-1559; multiple entries use EIP-7702 batch execution via Gas Station.,
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.)",
}]
});
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_ETH_SEND_TRANSACTION_V2",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g. 1746736509954)",
"result": {
"activity": {
"id": "<string>",
"organizationId": "<string>",
"status": "<string>",
"type": "<string>",
"intent": {
"ethSendTransactionIntentV2": {
"from": "<string>",
"caip2": "<eip155:1>",
"sponsor": "<boolean>",
"nonce": "<string>",
"gasLimit": "<string>",
"maxFeePerGas": "<string>",
"maxPriorityFeePerGas": "<string>",
"deadline": "<string>",
"gasStationNonce": "<string>",
"calls": [
{
"to": "<string>",
"value": "<string>",
"data": "<string>"
}
]
}
},
"result": {
"ethSendTransactionResultV2": {
"sendTransactionStatusId": "<string>"
}
},
"votes": "<array>",
"fingerprint": "<string>",
"canApprove": "<boolean>",
"canReject": "<boolean>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
}
}
}