You can split the CAT20 assets of a specified address into different addresses through the following interface.
Get Split CAT20 PSBT
post
Header parameters
AuthorizationstringOptional
token
User-IdstringOptional
Body
tickstringRequired
tickName + colon + tokenId
is_ofc_tokenbooleanRequired
Whether it's an official token (individuals should default to false, otherwise contact the official for whitelisting)
is_average_splitbooleanRequired
Whether to split evenly to the original address
split_numintegerRequired
Split Amount
user_addrstringRequired
Current User Address
user_pubkeystringRequired
Current User Public Key
cat_20_output_to_splitstringRequired
txid + colon + vout
token_addrstringRequired
Required if selecting an official token
fee_rateintegerRequired
Responses
200
Success
application/json
x-200:Success
Success
application/json
post
/brc20swap/get_split_cat20_psbts
Split Users' CAT20
Regarding cat_20_output_to_split, you need to query the corresponding CAT20 UTXO of the corresponding address, find the UTXO you want to split, and then concatenate it with the txId and outputIndex of the corresponding UTXO Query address reference (please replace tokenIdOrTokenAddr and ownerAddrOrPkh)
If you're using DotSwap's CAT20 deposit endpoint, you can use these 2 endpoints to split your deposited CAT20 tokens (aka "official CAT20", since they are in DotSwap's liquidity pool.)
When you first call the deposit endpoint /create_deposit_cat20_psbtv2, you can set the parameter not_split:true.
If the deposit is succesful, /create_deposit_cat20_order_by_psbt will return receiver_addr and txid.
Then, you can use the following parameters to call the split endpointPOST/brc20swap/get_split_cat20_psbts.
Send Split CAT20 PSBT
post
Header parameters
AuthorizationstringOptional
token
User-IdstringOptional
Body
psbtsstring[]Required
Other parameters are the same as those for get_psbt endpoint.stringRequired
{
// These two parameters should be set to true by default
"is_ofc_token": true,
"is_average_split": true,
// This is the wallet you used for the deposit
"user_addr": "bc1psx048lgxx9qlgnw2yjn6vw7ndz07f5rdlfxraqpxkr84tqa7670sagd4k8",
"user_pubkey": "03c22e2f276e66c24e515b24a0c6bcf53852b046b31bbaf98d3f3075c005729691",
// The token to be split (keep the same as the token name you deposited)
"tick": "dog:b1071ae617c66050d518587f67564885ca1a618b387a15f84001e3fa244ef3d6_0",
// This is the txid + :1 returned by the deposit interface (:1 is fixed)
"cat_20_output_to_split": "3c92ae8ce3fd6377ac9316a28ded9ca5daef835dd3cf2613b8047c1ee9bbf530:1",
// This is the receiver_addr returned by the deposit interface
"token_addr": "bc1plsm7wgedgkguhk5xyllhyml2zstu0z7zs353hq7h6jlvu5puf4sqhc2l5t",
// The number should be greater than 4
"split_num": 5,
"fee_rate": 9
}
POST /brc20swap/save_split_cat20_psbts HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 89
{
"psbts": [
"text"
],
"Other parameters are the same as those for get_psbt endpoint.": "text"
}