POST
/
v1
/
custody
/
mpc
/
create_transaction
/

# TRANSFER example:
request(
    "POST",
    "/v1/custody/mpc/create_transaction/",
    {
        "coin": "VET",
        "from_address": "0xe0cc496b3d9b0f8019b678066b9db81261d827bc",
        "to_address": "0x51d91dd9d7af32fe3aebf7e257c74d24baffa692",
        "amount": 1,
        "request_id": "1671699717647"
    },
    api_key, api_secret, host
)


# UTXO example:
request(
    "POST",
    "/v1/custody/mpc/create_transaction/",
    {
        'coin': 'XTN',
        'request_id': 'mpc_api_1674896802004',
        'to_address': '2N4J1WajwKZKpRtzzUmaW9B5GEqkppqdVY9',
        'amount': '400003',
        'extra_parameters': '{"input_selection":
                                {"inputs_to_spend":
                                    [{"tx_hash": "e7ddfa61cc2a78e1661da44b10cdc862256573d2dc0485dc989fb7045ed9032c", "vout_n": 1},
                                     {"tx_hash": "eabaee1f1a196b087e78303c6eaaeb9d1166de5f8d85f4ef7872b88bfcd60914", "vout_n": 2}]
                                }
                             }'
    }
    api_key, api_secret, host


# Web3 example:
request(
    "POST",
    "/v1/custody/mpc/create_transaction/",
    {
        'coin': 'GETH',
        'request_id': 'mpc_api_1674896802004',
        'from_address': '0x7c524e7c37b9b8279aaf9b10940a8368540f2aec',
        'to_address': '0x7c524e7c37b9b8279aaf9b10940a8368540f2aec',
        'amount': '100000000',
        'gas_price':2613036
        'gas_limit':21000
        'extra_parameters':'{"calldata": "0xa8059cbb000000000000000000000000971948873f869e4517311b190d7eb31e30eba0ef000000000000000000000000000000000000000000000000002386f26fc10000"}'
    }
    api_key, api_secret, host

{
  "success": true,
  "result": {
    "cobo_id": "20221227195133000378036000001822"
  }
}

Request

coin
String
required
coin code
request_id
String
required
transaction ID (unique identifier of a transaction request, which must correspond to a client’s transaction; UUID should be used and the length should be equal to or less than 120 characters)
amount
Int

transaction amount in decimal places (e.g. one bitcoin is divisible to eight decimal places, and 100000000 represents 1 BTC)

Account Model: this parameter is required

UTXO Model: this parameter is optional. The transaction sending amount will be based on the to_address_details parameter if the amount is zero or empty

from_address
String

Account Model: this parameter is required

UTXO Model: this parameter is optional, the input will be selected based off the extra_parameters parameter if the from_address is empty or not passed. The from_address will also be used as the change address of UTXO transactions when utxo_change_address not specified in extra_parameters

to_address
String
to address
to_address_details
String

list of addresses used for receiving coins associated with the UTXO model; this value must be a JSON string and has a parameter type that fits. Please note that the to_address_details parameter and amount parameter are alternative.

Sample
to_address_details: '[{"to_address": "2N4J1WajwKZKpRtzzUmaW9B5GEqkppqdVY9","amount": "547"},
                       {"to_address": "tb1qycxy8d8jgff8hql09y62smw5s5mrf3ryn2j9lk","amount": "548"}]'
fee
Float
transaction fees per byte; applicable to UTXO model; use either fee or fee_amount for UTXO model
If you have previously called the estimate_fee API to obtain an estimated fee for UTXO transactions before creating the transaction, please use the fee_amount parameter instead of fee to specify the transaction fee. Otherwise, it will re-estimate the transaction fee based on the fee parameter when creating the transaction.
gas_price
Int
gas price; applicable to ETH; unit: wei
gas_limit
Int
gas limit, applicable to ETH
operation
Int

action type, 100: TRANSFER (default); 200: CONTRACT_CALL

extra_parameters
String

UTXO Model:

  1. input_selection: inputs to be excluded and included in transactions associated with the UTXO model; inputs must be in correspondence with from_address (if specified); it must be a JSON string and has a structure that fits InputSelection
  2. inputs_to_spend: UTXO you want as input
    • tx_hash: Transaction tx_hash
    • vout_n: UTXO index
  3. inputs_to_exclude: UTXO you don’t want as input
    • tx_hash: Transaction tx_hash
    • vout_n: UTXO index
  4. utxo_change_address: the change address for UTXO transactions. if parameter from_address passed and utxo_change_address not passed, from_address will be used as the change address. otherwise, the permanent address (SegWit) will be used as the change address
Sample
extra_parameters: '{"input_selection":
                        {"inputs_to_spend":[
                              {"tx_hash": "e7ddfa61cc2a78e1661da44b10cdc862256573d2dc0485dc989fb7045ed9032c", "vout_n": 1},
 			                  {"tx_hash": "eabaee1f1a196b087e78303c6eaaeb9d1166de5f8d85f4ef7872b88bfcd60914", "vout_n": 2}],
                        "inputs_to_exclude":[
 		                      {"tx_hash": "e7ddfa61cc2a78e1661da44b10cdc862256573d2dc0485dc989fb7045ed9032c", "vout_n": 3},
 			                  {"tx_hash": "eabaee1f1a196b087e78303c6eaaeb9d1166de5f8d85f4ef7872b88bfcd60914", "vout_n": 4}]
                        },
                     "utxo_change_address": "2MznT7D2tKZKshfQPfhTuLYB7Bw9TZqb17w"
 			        }'

Web3 wallet:

  • calldata: request data associated with an EVM transaction; When deploying a new contract, the to_address parameter should be set to 0x0000000000000000000000000000000000000000. Please note that when using calldata, the gas_limit parameter should be set to an appropriate value based on the data being sent and the contract’s execution requirements.
Sample
extra_parameters: '{"calldata": "0xa8059cbb000000000000000000000000971948873f869e4517311b190d7eb31e30eba0ef000000000000000000000000000000000000000000000000002386f26fc10000"}'
  • instructions: request data associated with a Solana transaction. This parameter is in JSON format and contains a list of instructions. Each instruction includes the following parameters:
    • accounts: a list of accounts associated with Solana contract, each of which has the following attributes:
      • pubkey: account address. If the account is signer, pubkey needs to match the from_address parameter.
      • is_signer: boolean value indicating whether the account can sign transactions.
      • is_writable: boolean value indicating whether the account can be modified.
    • data: data used for calling Solana contract.
    • program_id: contract address. when calling a Solana contract, the to_address parameter needs to match the program_id parameter. If multiple contracts are being called, then the to_address parameter should match the program_id parameter of the first instruction.
Sample
extra_parameters: '{"instructions": "[{\\"accounts\\":[{\\"pubkey\\":\\"E4MhQWiqCLER3fFZNf8LyQFpLWW3BRxtsR5eps3c3vNS\\",\\"is_signer\\":true,\\"is_writable\\":true}],\\"data\\":\\"Canary TX 4, slot: 219858117\\",\\"program_id\\":\\"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\\"}]"}'
fee_amount
Int
transaction fee; applicable to UTXO model; use either fee or fee_amount for UTXO model
remark
String
The remark to withdraw
auto_fuel
Int
How the transaction utilizes the gas station, 0: no refueling(default); 1: passive use of the gas station; 2: active use of the gas station.
This parameter is used when you’ve activated the gas station service and use the gas station to support the transaction fee for MPC transactions.
The gas station will definitely refuel for the transaction when in active use, while for passive use, refueling by the gas station occurs only when the address balance is insufficient for transaction fees.
memo
String
Needed when you withdraw XRP

Response

success
bool
request successful or failed
result
object