Skip to content

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 ​

ts
const params = [{ flag: "P2PKH", address: "recipient", satoshis: 10000 }];
const { txid } = await Turing.sendTransaction(params);

Interface Definitions ​

ts
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 ​

ts
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
}
FieldTypeDescription
txidstringTransaction ID on successful broadcast
txrawstringRaw transaction hex when broadcastEnabled is false
errorstringError 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 ​

ts
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.