How to Cross Post Orders

Reservoir's developer tools allows you to list your NFT on multiple marketplaces within one execution. This allows you to get instant liquidity and aggregation for increased order visibility. Below are guides on how to cross post a single token onto multiple marketplaces with the SDK, ReservoirKit, and the API. We recommend using the SDK or Kit instead of the API as they abstract the process of going through the steps and return callbacks.

πŸ“˜

How to check cross posted order status?

When cross posting orders to multiple marketplaces, you can check the status using the cross posting orders API. The API and SDK will return a crossPostingOrderId after submission. ReservoirKit will not return an id at this time.

Reservoir SDK

To cross post orders, you can modify listToken like in the example below. You'll need to pass a listings object for each marketplace you want to list to. Below is a sample of listing the same token to three different marketplaces: Reservoir, OpenSea, and x2y2. You can reference the orderbook and orderKind params from the Create asks (listings) API to see the latest marketplaces available.

import { getClient, Execute } from "@reservoir0x/reservoir-sdk";
import { createWalletClient, http } from 'viem'

...

address = "0x8ba1f109551bD432803012645Ac136ddd6000000"
signer = createWalletClient({
  account: address,
  transport: http()
})

getClient()?.actions.listToken({
  listings: [
    {  
      token: "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d:1",  
      weiPrice: 10000000000000000,  
      orderbook: "reservoir",  
      orderKind: "seaport-v1.5",  
      expirationTime: 1667403808616  
    },
    {
      token: "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d:1",
      weiPrice: 10000000000000000,
      orderbook: "opensea",
      orderKind: "seaport-v1.5",
      expirationTime: 1667403808616
    },
    {
      token: "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d:1",
      weiPrice: 10000000000000000,
      orderbook: "x2y2",
      orderKind: "x2y2",
      expirationTime: 1667403808616
    }
  ],
  signer,
  onProgress: (steps: Execute['steps']) => {
    console.log(steps)
  }
})

ReservoirKit

ReservoirKit will post directly into the Reservoir orderbook that gets distributed to everyone building with our tools. This includes platforms like OpenSea Pro, Coinbase NFT, and Zora to name a few. If you'd like for your orders to be posted in the Reservoir orderbook and another orderbook like Blur, we recommend for you to use the Reservoir SDK.

Reservoir API

🚧

We recommend using Reservoir SDK

Reservoir SDK includes helpers that abstract the process of iterating through steps, and returning callbacks that can be used to update your UI.

To crosspost with the API, you can pass multiple params for the token you want to list. Make sure to line up the orderbook with the orderKind. Reservoir accepts all seaport versions, but OpenSea only support seaport-v1.4 and seaport-v1.5. We recommend to use seaport-v1.5 when listing to OpenSea as that is the most current version.

curl --request POST \
     --url https://api.reservoir.tools/execute/list/v5 \
     --header 'accept: */*' \
     --header 'content-type: application/json' \
     --header 'x-api-key: demo-api-key' \
     --data '
{
  "params": [
    {
      "orderKind": "seaport-v1.5",
      "orderbook": "reservoir",
      "automatedRoyalties": true,
      "currency": "0x0000000000000000000000000000000000000000",
      "token": "0x8d04a8c79ceb0889bdd12acdf3fa9d207ed3ff63:123",
      "weiPrice": "1000000000000000000"
    },
    {
      "orderKind": "seaport-v1.5",
      "orderbook": "opensea",
      "automatedRoyalties": true,
      "currency": "0x0000000000000000000000000000000000000000",
      "token": "0x8d04a8c79ceb0889bdd12acdf3fa9d207ed3ff63:123",
      "weiPrice": "1000000000000000000"
    },
    {
      "orderKind": "x2y2",
      "orderbook": "x2y2",
      "automatedRoyalties": true,
      "currency": "0x0000000000000000000000000000000000000000",
      "token": "0x8d04a8c79ceb0889bdd12acdf3fa9d207ed3ff63:123",
      "weiPrice": "1000000000000000000"
    }
  ],
  "maker": "0xF296178d553C8Ec21A2fBD2c5dDa8CA9ac905A00"
}
'