On-chain Interactions
12 min
use these operations for arbitrary contract execution and chain level protocol actions such as staking and resource delegation these transactions can have chain specific data requirements and may require approval before broadcast create a contract call post /api/external/transactions/ rest request body { "vaultid" "vault 123", "blockchain" "ethereum", "amount" "0", "category" "contract call", "data" { "calldata" "0xa9059cbb000000000000000000000000 ", "toaddress" "0xtokencontract1234567890abcdef" }, "externalid" "contract call 1001", "gasparams" { "feetier" "medium" }, "creationoptions" { "skippreprocesssimulation" false } } response { "id" "transaction contract 123", "orgid" "org 456", "vaultid" "vault 123", "status" "pending", "transactiontype" "outgoing", "category" "contract call", "subcategory" "contract call", "createdat" "2026 08 04t11 00 00z", "updatedat" "2026 08 04t11 00 00z", "isdeleted" false, "externalid" "contract call 1001", "source" { "type" "vault", "id" "vault 123", "name" "treasury vault" }, "blockchain" "ethereum", "amount" "0" } javascript sdk interface createcontractcalltransactionrequest { vaultid string; chain string; amount? string; data? \| { calldata string; toaddress? string } \| { canisterid string; method string; arg string } \| { messagehex string } \| { method string; params record\<string, unknown> }; externalid? string; gasparams? { feetier? "high" | "medium" | "low" }; creationoptions? { skippreprocesssimulation? boolean }; } createcontractcalltransaction( request createcontractcalltransactionrequest, ) promise\<transaction> the sdk serializes chain as blockchain and injects category "contract call" the data shape depends on the target chain evm call data, icp canister call, raw signing message, or alephium method/parameters set skippreprocesssimulation only when your integration has an explicit reason to bypass supported preprocessing or simulation stake a resource post /api/external/transactions/ rest request body { "source" { "type" "vault", "id" "vault 123" }, "asset" "trx", "blockchain" "tron", "amount" "1000", "resourcetype" "tron energy", "category" "stake", "externalid" "stake 1001", "memo" "stake trx for energy" } response { "id" "transaction stake 123", "orgid" "org 456", "vaultid" "vault 123", "status" "pending", "transactiontype" "outgoing", "category" "stake", "subcategory" "stake", "createdat" "2026 08 04t11 40 00z", "updatedat" "2026 08 04t11 40 00z", "isdeleted" false, "externalid" "stake 1001", "memo" "stake trx for energy", "source" { "type" "vault", "id" "vault 123", "name" "treasury vault" }, "blockchain" "tron", "asset" "trx", "amount" "1000" } javascript sdk interface stakeresourcerequest { source transferpartydata; asset string; chain string; amount string; resourcetype? "tron energy" | "tron bandwidth"; externalid? string; memo? string; } stakeresource(request stakeresourcerequest) promise\<transaction> the sdk serializes chain as blockchain and injects category "stake" delegate a tron resource post /api/external/transactions/ rest request body { "source" { "type" "vault", "id" "vault 123" }, "destination" { "type" "contact", "id" "contact 456" }, "asset" "trx", "blockchain" "tron", "amount" "500", "resourcetype" "tron energy", "category" "delegate resource", "externalid" "delegate 1001", "memo" "delegate energy to operations" } response { "id" "transaction delegate 123", "orgid" "org 456", "vaultid" "vault 123", "status" "pending", "transactiontype" "outgoing", "category" "delegate resource", "subcategory" "delegate resource", "createdat" "2026 08 04t11 50 00z", "updatedat" "2026 08 04t11 50 00z", "isdeleted" false, "externalid" "delegate 1001", "memo" "delegate energy to operations", "source" { "type" "vault", "id" "vault 123", "name" "treasury vault" }, "destination" { "type" "contact", "id" "contact 456", "name" "operations wallet" }, "blockchain" "tron", "asset" "trx", "amount" "500" } javascript sdk interface delegateresourcerequest { source transferpartydata; destination transferpartydata; asset string; chain string; amount string; resourcetype "tron energy" | "tron bandwidth"; externalid? string; memo? string; } delegateresource(request delegateresourcerequest) promise\<transaction> the sdk serializes chain as blockchain and injects category "delegate resource"