Reference
Listings
buyListings
Buy/sweep listings from any marketplace.
const transaction = await suiTradingClient.buyListings({
listingIds: [listing1.id, listing2.id],
walletAddress: connectedWalletId
})
await signAndSendTransaction({ transaction })-
Pass in one or multiple NFTs
-
listing1.id,listing2.id: The uuids of listings you want to buy, coming from the NFT Data APIlistingsentity
listNfts
List NFTs for sale. If the NFT is already listed, it will relist it.
const tx = await suiTradingClient.listNfts({
nfts: [
{
id: nft.id,
listPriceInMist: 50000000000
},
],
walletAddress: connectedWalletId
})
await signAndSendTransaction({ transaction })-
Pass in one or multiple NFTs
-
nft.id: The uuid of a NFT you want to list, coming from the NFT Data APInftsentity -
listPrice: The list price in Sui
unlistListings
Unlist listings
const tx = await suiTradingClient.unlistListings({
listingIds: [listing.id],
walletAddress: connectedWalletId
})
await signAndSendTransaction({ transaction })-
Pass in one or multiple listing ids
-
listing.id: The uuid of a listing you want to unlist, coming from the NFT Data APIlistingsentity
Bidding
Understanding Bid Pools
Bid Pools are required for placing bids on Sui. A bid pool acts as a funding container that holds the balance used to fund your bids. You can:
- Add and withdraw funds from a bid pool
- Place multiple bids from a single pool
- Add and remove bids while the pool manages the funds
When placing bids, you must pass either:
multiBidId- Reference an existing bid pool by its IDmultiBidChainId- Use when creating a new bid pool and placing bids in the same transaction
Origin Byte Collections: Bid pools only work with non-Origin Byte kiosk collections. Collections using the deprecated Origin Byte standard (e.g., Fuddies) will fall back to legacy bidding even if a multiBidId is passed.
Legacy bidding requires funds to be locked upfront for each individual bid, meaning you cannot share funds across multiple bids or easily manage your bidding balance.
createMultiBid
Create a new bid pool with optional initial funding.
const { multiBidChainId, tx } = await suiTradingClient.createMultiBid({
walletAddress: connectedWalletId,
name: 'My Bid Pool',
amount: 5000000000n // optional initial funding in MIST
})
await signAndSendTransaction({ transaction: tx })name: Optional name for the bid poolamount: Optional initial funding amount in MIST (as BigInt)- Returns
{ multiBidChainId, tx }- usemultiBidChainIdwhen placing bids in the same transaction block
updateMultiBid
Update an existing bid pool - add funds, withdraw funds, or rename.
Add funds:
const tx = await suiTradingClient.updateMultiBid({
walletAddress: connectedWalletId,
multiBidId: 'existing-bid-pool-id',
amount: 5000000000n
})Withdraw funds:
const tx = await suiTradingClient.updateMultiBid({
walletAddress: connectedWalletId,
multiBidId: 'existing-bid-pool-id',
amountToWithdraw: 2000000000n
})Rename:
const tx = await suiTradingClient.updateMultiBid({
walletAddress: connectedWalletId,
multiBidId: 'existing-bid-pool-id',
name: 'New Pool Name'
})multiBidId: The ID of the existing bid pool- Can also accept a
txparameter to chain with other operations
cancelMultiBid
Delete a bid pool. This removes all bids inside the pool and withdraws the entire balance back to your wallet.
const tx = await suiTradingClient.cancelMultiBid({
walletAddress: connectedWalletId,
multiBidId: 'bid-pool-id'
})
await signAndSendTransaction({ transaction: tx })multiBidId: The ID of the bid pool to delete- All active bids in the pool will be cancelled
- Any remaining balance will be returned to your wallet
placeNftBids
Place bids on individual NFTs.
const tx = await suiTradingClient.placeNftBids({
nfts: [{ id: nft.id, bidAmountInMist: 1000000000n, expireAt: new Date('2025-12-31') }],
walletAddress: connectedWalletId,
multiBidId: 'existing-bid-pool-id'
})
await signAndSendTransaction({ transaction: tx })-
Place bids on one or multiple NFTs
-
nft.id: The uuid of a NFT you want to place a bid on, coming from the NFT Data APInftsentity -
bidAmountInMist: The bid amount in MIST -
expireAt: Optional expiration date for the bid -
multiBidId: ID of an existing bid pool to fund this bid -
multiBidChainId: Use instead ofmultiBidIdwhen creating a new pool in the same transaction -
tx: Optional serialized transaction to chain with other operations (see Chaining Operations)
removeNftBids
Remove bids from individual NFTs.
const transaction = await suiTradingClient.removeNftBids({ bidIds: [bid1.id, bid2.id] })
await signAndSendTransaction({ transaction })-
Remove bids from one or multiple NFTs
-
bid1.idandbid2.id: The uuids of bids you want to remove, coming from the NFT Data APIbidsentity wherebid.type === "solo"
acceptNftBids
Accept bids on individual NFTs.
const transaction = await suiTradingClient.acceptNftBids({ bidIds: [bid.id], walletAddress: connectedWalletId })
await signAndSendTransaction({ transaction })-
Accept one or multiple bids
-
bid.id: The uuid of a bid you want to accept, coming from the NFT Data APIbidsentity wherebid.type === "solo"
placeCollectionBid
Place a bid on a collection.
const tx = await suiTradingClient.placeCollectionBid({
walletAddress: connectedWalletId,
collectionId: collection.id,
bidAmountInMist: 1000000000n,
numOfBids: 3,
multiBidId: 'existing-bid-pool-id',
expireAt: new Date('2025-12-31')
})
await signAndSendTransaction({ transaction: tx })-
collection.id: The uuid of a collection you want to place a bid on, coming from the NFT Data APIcollectionsentity -
bidAmountInMist: The bid amount in MIST -
numOfBids: The number of bids at thebidAmountInMistprice you want to create in the same transaction -
expireAt: Optional expiration date for the bid -
multiBidId: ID of an existing bid pool to fund this bid -
multiBidChainId: Use instead ofmultiBidIdwhen creating a new pool in the same transaction -
tx: Optional serialized transaction to chain with other operations (see Chaining Operations)
removeCollectionBids
Remove collection bid(s).
const transaction = await suiTradingClient.removeCollectionBids({ bidIds: [bid1.id, bid2.id] })
await signAndSendTransaction({ transaction })bid1.idandbid2.id: The uuids of collection bids you want to remove, coming from the NFT Data APIbidsentity wherebid.type === "collection"
acceptCollectionBid
Accept a collection bid (Instant Sell).
const transaction = await suiTradingClient.acceptCollectionBid({
bidId: bid.id,
nftId: nft.id,
walletAddress: connectedWalletId
})
await signAndSendTransaction({ transaction })-
bid.id: The uuid of a collection bid you want to accept, coming from the NFT Data APIbidsentity wherebid.type === "collection" -
nftId: The NFT you are accepting the bid with
Chaining Operations
You can create a bid pool and place bids in the same transaction for efficiency.
Create bid pool and place collection bid:
// Create bid pool and place collection bid in a single transaction
const { multiBidChainId, tx } = await suiTradingClient.createMultiBid({
walletAddress: connectedWalletId,
name: 'My Bid Pool',
amount: 5000000000n
})
const txBlock = await suiTradingClient.placeCollectionBid({
walletAddress: connectedWalletId,
collectionId: collection.id,
bidAmountInMist: 1000000000n,
numOfBids: 3,
multiBidChainId, // Use multiBidChainId for new pool in same tx
tx: await tx.toJSON()
})
await signAndSendTransaction({ transaction: txBlock })Add funds to existing pool and place bid:
// Add funds to existing pool and place bid in same transaction
const txBlock = await suiTradingClient.updateMultiBid({
walletAddress: connectedWalletId,
multiBidId: bidPoolId,
amount: BigInt(fundAmount)
})
const finalTx = await suiTradingClient.placeCollectionBid({
walletAddress: connectedWalletId,
collectionId: collection.id,
bidAmountInMist: 1000000000n,
numOfBids: 1,
multiBidId: bidPoolId,
tx: await txBlock.toJSON()
})
await signAndSendTransaction({ transaction: finalTx })Other
transferNfts
Transfer NFTs to a specified recipient wallet address.
const transaction = await suiTradingClient.transferNfts({
nftIds: [nft1.id, nft2.id],
recipientAddress: recipientWalletAddress,
walletAddress: connectedWalletId
})
await signAndSendTransaction({ transaction })-
Transfer one or multiple NFTs
-
nft1.idandnft2.id: The uuids from NFTs you want to transfer, coming from the NFT Data APInftsentity
claimNfts
Claim NFTs that are claimable.
NFTs are claimable if the nft.claimable === true, and it means that either the NFT is under a "Trade Hold" *, is a NFT inside a kiosk that has been transferred to you, or an NFT has been transferred to you from an accepted collection bid.
const payload = await suiTradingClient.claimNfts({
nftIds: [nft1.id, nft2.id],
walletAddress: connectedWalletId
})
await signAndSendTransaction({ transaction })-
Claim one or multiple NFTs
-
nft1.idandnft2.id: The uuids from NFTs you want to claim, coming from the NFT Data APInftsentity, wherenft.claimable === true.
* "Trade Hold" Occurs in Origin Byte NFTs where the NFT was listed at a price lower than a current collection offer, which gets automatically accepted by the Origin Byte smart contract.