enum<string>
required
Enum options:
ACTIVITY_TYPE_ETH_SEND_TRANSACTIONstring
required
Timestamp (in milliseconds) of the request, used to verify liveness of user requests.
string
required
Unique identifier for a given Organization.
object
required
The parameters object containing the specific intent data for this activity.
Show details
Show details
boolean
Enable to have your activity generate and return App Proofs, enabling verifiability.
object
required
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",
"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>",
"deadline": "<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.)",
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. 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>",
"deadline": "<string>",
"gasStationNonce": "<string>"
}
},
"result": {
"ethSendTransactionResult": {
"sendTransactionStatusId": "<string>"
}
},
"votes": "<array>",
"fingerprint": "<string>",
"canApprove": "<boolean>",
"canReject": "<boolean>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
}
}
}