# Sale parties

`GET /api/sales/parties`

The seller's and buyer's addresses of up to 500 sales by sequence number (`null`: a script with no address). Cacheable 30 s.

#### Query parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `seqs` | string | yes | 1-500 sequence numbers, comma-separated. |

#### Example request

```bash title="cURL"
curl 'https://raresats.net/api/sales/parties?seqs=1,2'
```
```js title="JavaScript"
const response = await fetch('https://raresats.net/api/sales/parties?seqs=1,2');
const data = await response.json();
```
```python title="Python"
import requests

data = requests.get("https://raresats.net/api/sales/parties", params={"seqs": "1,2"}).json()
```

#### Response `200`

| Field | Type | Description |
| --- | --- | --- |
| `generation` | integer | Sales generation the sequence numbers belong to. |
| `parties` | map of object | Keyed by sequence number. Unknown sequence numbers are absent. |
| `parties.<key>.seller` | string \| null | An address, or `null` (a script with no address). |
| `parties.<key>.buyer` | string \| null | An address, or `null` (a script with no address). |

```json title="Response"
{
  "generation": 1,
  "parties": {
    "1": {
      "seller": "bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu",
      "buyer": "bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr"
    },
    "2": {
      "seller": "bc1p4qhjn9zdvkux4e44uhx8tc55attvtyu358kutcqkudyccelu0was9fqzwh",
      "buyer": null
    }
  }
}
```

#### Errors

`{error}` (a message, no code):

| Status | When |
| --- | --- |
| 400 | Missing, too many or malformed sequence numbers. |

Sequence numbers belong to a `generation` of the sales; after a reorg (a new generation) ask again.
