# Save listing

Save listing is part of the create listing process. create-listing end point returns a psbt which is signed by the client wallet, once signed the signed psbt needs to be saved in the listing database by calling /save-listing end point.

Here's an example of how you can sign a listing transaction with the Xverse wallet and then save it by calling /save-listing:<br>

```javascript
      
      // XVerse Wallet example of creating a signing request 
      // when listing an Ordinal for sale
      const sellerInput = {
        address: ordinalsAddress, // Seller's ordinal wallet address
        signingIndexes: [0], // always [0] when listing
        // Specify sigHash type as SIGHASH_SINGLE | SIGHASH_ANYONECANPAY
        sigHash: bitcoin.Transaction.SIGHASH_SINGLE | bitcoin.Transaction.SIGHASH_ANYONECANPAY,
      };

      // Create the listing PSBT by calling /marketplace/create-listing API
      // This returns a base64 PSBT in string format which needs to be signed
      const { data } = await axios({
        method: 'post'
        url: 'https://api.ordinalsbot.com/marketplace/create-listing',
        data: {
          sellerOrdinals
          sellerPaymentAddress,
          sellerOrdinalPublicKey
        },
        headers: {
        'x-api-key': API_KEY,
      });

      // When using XVerse Wallet
      // Create the payload for signing the seller transaction
      const payload = {
        network: { type: "Mainnet" },
        message: "Sign Seller Transaction",
        psbtBase64: data.psbt, // PSBT returned by the clear-listing API
        broadcast: false,
        inputsToSign: [sellerInput],
      };

      // Make signing request
      await signTransaction({
        payload,
        onFinish: async (response) => {
          try {
            // signed succesffully

            // Save the listing with the signed PSBT
            const updateListingData = {
              signedListingPSBT: response.psbtBase64,
            };

            // Save the listing PSBT by calling /marketplace/save-listing API
            // This returns a base64 PSBT in string format which needs to be signed
            const saveResponse= await axios({
              method: 'patch'
              url: 'https://api.ordinalsbot.com/marketplace/save-listing' + sellerOrdinals[0].id,
              data: {
                sellerOrdinals: [sellerOrdinals[0].id],
                updateListingData
              },
              headers: {
              'x-api-key': API_KEY,
              }
            });
      
          } catch (Error) {
            // error handling
          }
        },
        onCancel: () => { // User cancelled signing request }
      });

```

### `POST` Save listing data for ordinal

## Save listing details

<mark style="color:green;">`POST`</mark> `https://api.ordinalsbot.com/marketplace/save-listing/`

API Key is required in the header:

`headers: { 'x-api-key': '<YOUR_API_KEY>', ...otherHeaders }`

#### Request Body

| Name                                                | Type   | Description                                                                                                                                                                                                                                                     |
| --------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| updateListingData<mark style="color:red;">\*</mark> | Object | <p>json object with a string signedListingPSBT.<br>Ex:<br></p><p>{ <br>     sellerOrdinals: \["0c9...ai0"],</p><p>     updateListingData: {</p><p>           signedListingPSBT:</p><p>                        "cHNidP8...AAA"</p><p>      } </p><p>}</p><p></p> |
| sellerOrdinals<mark style="color:red;">\*</mark>    | Array  | Array of ordinal Ids. The ids should be the same as ordinals ids used with /create-listing endpoint                                                                                                                                                             |

{% tabs %}
{% tab title="200: OK " %}

```json

{
    "_id": "7354826c46a5856b972795d7",
    "ordinalId": "8dc4e.....6ce70260i0",
    "price": 12345,
    "sellerPaymentAddress": "3Ny......yc4q",
    "sellerOrdinalPublicKey": "4fa4.....118fad4e476541",
    "status": "Active",
    "sellerOutputValue": 21111,
    "ordinalUtxoTxId": "3362....61449ef",
    "ordinalUtxoVout": 0,
    "marketPlaceMakerFee": 0,
    "marketPlaceTakerFee": 0,
    "platformMakerFee": 1000,
    "platformTakerFee": 1000,
    "signedListingPSBT": "cHNid......1rARj61OR2VBAAA="
}

```

{% endtab %}

{% tab title="500: Internal Server Error " %}

```json
{
    status: 'error',
    error: 'error reason'
}
```

{% endtab %}
{% endtabs %}
