Docs
NFT Trading SDK
Sui SDK
Reference

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 API listings entity

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 API nfts entity

  • 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 API listings entity

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 ID
  • multiBidChainId - 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 pool
  • amount: Optional initial funding amount in MIST (as BigInt)
  • Returns { multiBidChainId, tx } - use multiBidChainId when 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 tx parameter 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 API nfts entity

  • 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 of multiBidId when 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.id and bid2.id: The uuids of bids you want to remove, coming from the NFT Data API bids entity where bid.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 API bids entity where bid.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 API collections entity

  • bidAmountInMist: The bid amount in MIST

  • numOfBids: The number of bids at the bidAmountInMist price 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 of multiBidId when 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.id and bid2.id: The uuids of collection bids you want to remove, coming from the NFT Data API bids entity where bid.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 API bids entity where bid.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.id and nft2.id: The uuids from NFTs you want to transfer, coming from the NFT Data API nfts entity

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.id and nft2.id: The uuids from NFTs you want to claim, coming from the NFT Data API nfts entity, where nft.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.