sendTransaction
Send a TBC chain transaction. Supports a wide range of operations including P2PKH transfers, NFT operations, FT operations, PoolNFT liquidity management, and stablecoin operations.
Usage
const params = [{ flag: "P2PKH", address: "recipient", satoshis: 10000 }];
const { txid } = await Turing.sendTransaction(params);Interface Definitions
interface FTData {
name: string;
symbol: string;
decimal: number;
amount: number;
}
interface CollectionData {
collectionName: string;
description: string;
supply: number;
file: string; // base64
}
interface NFTData {
nftName: string;
symbol: string;
description: string;
attributes: string;
file?: string; // base64
}
interface NonMergeRequestParam {
flag: "P2PKH" | "COLLECTION_CREATE" | "NFT_CREATE" | "NFT_TRANSFER" | "FT_MINT" | "FT_TRANSFER" | "POOLNFT_MINT" | "POOLNFT_INIT" | "POOLNFT_LP_INCREASE" | "POOLNFT_LP_CONSUME" | "POOLNFT_LP_BURN" | "POOLNFT_SWAP_TO_TOKEN" | "POOLNFT_SWAP_TO_TBC" | "STABLECOIN_TRANSFER";
address?: string;
satoshis?: number | string; // In satoshis, use string for large numbers
collection_data?: string;
ft_data?: string;
nft_data?: string;
collection_id?: string;
nft_contract_address?: string;
ft_contract_address?: string; // FT or stablecoin contract transaction ID
tbc_amount?: number | string; // Use string for large numbers
ft_amount?: number | string; // Use string for large numbers
with_lock?: boolean;
lpCostAddress?: string;
lpCostAmount?: number | string; // Use string for large numbers
pubKeyLock?: string[];
poolNFT_version?: 1 | 2; // Forced to 2, other values will be converted to 2
serviceFeeRate?: number;
serverProvider_tag?: string;
lpPlan?: 1 | 2 | 3 | 4 | 5 | 6; // Mint defaults to 1; swaps can omit it for chain-state detection
isLockTime?: boolean;
lockTime?: number | string; // Lock until specified block height (POOLNFT related), use string for large numbers
broadcastEnabled?: boolean;
}
type MergeRequestParam =
| {
flag: "FT_MERGE" | "STABLECOIN_MERGE";
ft_contract_address: string;
}
| {
flag: "POOLNFT_MERGE" | "FTLP_MERGE";
nft_contract_address: string;
};
type RequestParam = NonMergeRequestParam | MergeRequestParam;
const params = [param: RequestParam];Dedicated Merge requests accept only their contract field. They always broadcast and do not accept broadcastEnabled.
Returns
interface SendTransactionResponse {
txid?: string; // Transaction ID (when broadcastEnabled is true)
txraw?: string; // Raw signed transaction hex (when broadcastEnabled is false)
error?: string; // Error message on failure
}| Field | Type | Description |
|---|---|---|
txid | string | Transaction ID on successful broadcast |
txraw | string | Raw transaction hex when broadcastEnabled is false |
error | string | Error message if the transaction fails |
Response behavior
For non-Merge requests, broadcastEnabled: false returns the requested business transaction as txraw. If a business operation returns multiple comma-separated raw transactions, broadcast them in order.
The dedicated FT_MERGE, STABLECOIN_MERGE, POOLNFT_MERGE, and FTLP_MERGE requests always broadcast and return txid; they do not return txraw.
Error Handling
const result = await Turing.sendTransaction(params);
if (result.error) {
console.error("Transaction failed:", result.error);
return;
}
console.log("Success! txid:", result.txid);Transaction Types
- P2PKH — Standard TBC transfers.
- NFT — Collection creation, NFT creation, and NFT transfers.
- FT — FT minting, transfers, and UTXO merging.
- PoolNFT — Liquidity pool creation, management, swaps, and UTXO merging.
- Stablecoin — Stablecoin transfers and UTXO merging.
Each category page presents the complete parameters and operation documentation before its live example with a default template. Non-Merge examples request the business txraw by default; dedicated FT_MERGE, POOLNFT_MERGE, FTLP_MERGE, and STABLECOIN_MERGE requests always broadcast, return txid, and require explicit risk confirmation.