> ## Documentation Index
> Fetch the complete documentation index at: https://cobo-docs-feature-cobo-cli.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Sign Request Description

<Note>This content applies to WaaS 1.0 only. We highly recommend that you upgrade to [WaaS 2.0](https://www.cobo.com/developers/v2/guides/overview/introduction).</Note>

## Callback API Request Description

### request\_type

TypeKeySign = 2

### request\_detail

The format is a serialized JSON string of structure below.

<ParamField body="group_id" type="String" required>Group ID used during transaction signing.</ParamField>
<ParamField body="root_pub_key" type="String" required>MPC root extended public key.</ParamField>
<ParamField body="used_node_ids" type="[]String" required>Node IDs used during transaction signing.</ParamField>
<ParamField body="bip32_path_list" type="[]String" required>Address paths (BIP32).</ParamField>
<ParamField body="msg_hash_list" type="[]String" required>Hashes to be signed.</ParamField>

### extra\_info

The format is a serialized JSON string of structure below.

<ParamField body="cobo_id" type="String" required>Unique ID of the transaction signing (KeySign) request.</ParamField>
<ParamField body="api_request_id" type="String" required><p>Request ID of the withdraw request;</p><p>If the request is initialized via API, the value should be the same as request\_id;</p><p>If the request is initialized via Cobo Custody Web, Cobo will automatically generate a Request ID.</p></ParamField>
<ParamField body="transaction_type" type="TransactionTypeEnum" required>Please refer to TransactionTypeEnum below.</ParamField>
<ParamField body="operation" type="TransactionOperationEnum" required>Please refer to TransactionOperationEnum below.</ParamField>
<ParamField body="coin" type="String" required>Asset name.</ParamField>
<ParamField body="decimal" type="Int" required>Decimal precision.</ParamField>
<ParamField body="from_address" type="String" required>Address from which assets are withdrawn.</ParamField>
<ParamField body="amount" type="String" optional>Transaction amount, which contains decimal places (e.g. one bitcoin is divisible to eight decimal places, and 100000000 represents 1 BTC).</ParamField>
<ParamField body="to_address" type="String" required>Deposit address.</ParamField>
<ParamField body="to_address_details" type="Json" optional>List of deposit addresses; applicable to the UTXO model; the value must meets the JSON structure of list\[ToAddressDetail].</ParamField>
<ParamField body="fee" type="Int" optional>For BTC transaction, this field returns the transaction fees per byte; unit: satoshi.</ParamField>
<ParamField body="gas_price" type="Int" optional>Gas fees; applicable to ETH; unit: GWei.</ParamField>
<ParamField body="gas_limit" type="Int" optional>Gas limit; applicable to ETH.</ParamField>
<ParamField body="extra_parameters" type="Json" required>Additional parameters for the transaction; for more information, please refer to the description of create\_transaction.</ParamField>
<ParamField body="replace_cobo_id" type="String" optional>ID of a Cobo transaction that has been designated as RBF.</ParamField>
<ParamField body="api_key" type="String" optional>API\_KEY of the withdraw request initialized through API.</ParamField>
<ParamField body="spender" type="String" optional>Email information of the withdrawer; applicable to Cobo Custody Web.</ParamField>
<ParamField body="raw_tx" type="List[RawTx]" required>Raw transaction data.</ParamField>
<ParamField body="note" type="String" required>Transaction remarks.</ParamField>
<ParamField body="raw_tx_info" type="Json" required>Raw information for constructing transaction to be signed.</ParamField>

#### ToAddressDetail

<ParamField body="to_address" type="String">Withdraw address.</ParamField>
<ParamField body="amount" type="String">Transaction amount, which contains decimal places (e.g. one bitcoin is divisible to eight decimal places, and 100000000 represents 1 BTC).</ParamField>

#### extra\_parameters

<ParamField body="inputs_to_spend" type="List[Input]">Unspent Transaction Output (UTXO) to spend; this only applies in UTXO type of blockchains (e.g. bitcoin).</ParamField>
<ParamField body="inputs_to_exclude" type="List[Input]">Unspent Transaction Output (UTXO) to exclude from spending; this only applies in UTXO type of blockchains (e.g bitcoin).</ParamField>

#### Input

<ParamField body="tx_hash" type="String">Transaction hash.</ParamField>
<ParamField body="vout_n" type="Int">Transaction index/no.</ParamField>

#### TransactionTypeEnum

* TYPE\_MPC\_WEB = 100
* TYPE\_MPC\_MMI = 101
* TYPE\_MPC\_API = 102
* TYPE\_RBF\_API\_SPEEDUP = 103
* TYPE\_RBF\_WEB\_SPEEDUP = 104
* TYPE\_RBF\_API\_DROP = 105
* TYPE\_RBF\_WEB\_DROP = 106
* TYPE\_MPC\_TRANSACTION\_FROM\_EXTERNAL = 107
* TYPE\_MPC\_WEB3\_WEB = 300  # mpc web3 web withdraw
* TYPE\_MPC\_WEB3\_MMI\_TX = 301  # mpc web3 mmi tx
* TYPE\_MPC\_WEB3\_MMI\_MSG = 302  # mpc web3 mmi msg
* TYPE\_MPC\_WEB3\_API\_TRANSACTION = 303
* TYPE\_MPC\_WEB3\_API\_EIP\_191 = 304
* TYPE\_MPC\_WEB3\_API\_EIP\_712 = 305
* TYPE\_MPC\_WEB3\_TRANSACTION\_FROM\_EXTERNAL = 307
* TYPE\_MPC\_WEB3\_RBF\_API\_SPEEDUP = 308
* TYPE\_MPC\_WEB3\_RBF\_WEB\_SPEEDUP = 309
* TYPE\_MPC\_WEB3\_RBF\_API\_DROP = 310
* TYPE\_MPC\_WEB3\_RBF\_WEB\_DROP = 311
* TYPE\_MPC\_BABYLON\_STAKE = 500
* TYPE\_MPC\_BABYLON\_STAKE\_RBF = 501

#### TransactionOperationEnum

* OPERATION\_TRANSFER = 100
* OPERATION\_CONTRACT\_CALL = 200
* OPERATION\_MINT = 201
* OPERATION\_BURN = 202
* OPERATION\_SIGN\_MESSAGE = 300

#### RawTx

<ParamField body="raw_tx" type="String">Hex-encoded transaction information.</ParamField>
<ParamField body="derivation_path" type="String">Derivation path to sign, for example："m/44/60/3/0/1".</ParamField>
