# List open offers

`GET /forwards/offers` · Lithos client API · Difficulty Forwards

Source: https://lithosprotocol.org/docs/api/list-df-offers

Offers a fill in a coming block could still take: holding the maker's whole side, unexpired, and with a window that starts 2 to 120 epochs after the current one. Unconfirmed offers are included and offers already being spent are not. Ordered by window start, then length, then strike.

## Parameters

| Name | In | Type | Required | Description |

|---|---|---|---|---|

| `offset` | query | integer | no |  |

| `limit` | query | integer | no |  |

## Responses

### 200: One page of open offers

`DFOfferBook`

- `height` (integer · int32, required)
- `currentEpoch` (integer · int32, required)
- `offers` (DFOfferView[], required)
  - `boxId` (string, required)
  - `maker` (string, required): Address the maker is paid to.
  - `makerSide` (string, required, one of long, short): `long` is paid when the window's mean difficulty is above the strike, `short` when below.
  - `strike` (string, required): Difficulty the window's mean is measured against.
  - `notional` (string, required): LIT base units.
  - `margin` (string, required): Each side's margin, a fifth of the notional, and the most either side can lose of it.
  - `windowStart` (integer · int32, required)
  - `windowLength` (integer · int32, required)
  - `windowEnd` (integer · int32, required): The window's last epoch.
  - `expiry` (integer · int32, required): The last height a fill can be mined at.
  - `lastFillHeight` (integer · int32, required): The last height a fill can actually be mined at: the expiry, or earlier when the window would start less than 2 epochs after the fill.
  - `lit` (string, required): LIT base units the offer holds.
  - `nanoErgs` (string, required)
  - `takerLit` (string, required): LIT base units a fill takes from the taker.
  - `takerNanoErgs` (string, required): nanoERG a fill takes from the taker, network fee included.
  - `impliedMove` (number · double): The strike against the current difficulty, as a fraction.
  - `impliedMoveNext` (number · double): The strike against `nextDifficulty`, when known.
  - `mine` (boolean, required): Whether this wallet made the offer.
  - `fillable` (boolean, required): Whether this wallet's fill sent now would be accepted.
  - `refusal` (string): Why not, when `fillable` is false.
- `total` (integer, required): Open offers in all, before `offset` and `limit`.
- `truncated` (boolean, required): Whether the scan stopped at 2,000 boxes, so older offers may be missing.

### 400: `offset` is negative or `limit` is outside 1 to 200.

`ApiError`

- `error` (integer, required): Error code
- `reason` (string, required): Error message explaining the reason of the error
- `detail` (string, required): Detailed error description

### 503: Node or index unavailable. Never returns a partial list.

`ApiError`

- `error` (integer, required): Error code
- `reason` (string, required): Error message explaining the reason of the error
- `detail` (string, required): Detailed error description

### default: Error

`ApiError`

- `error` (integer, required): Error code
- `reason` (string, required): Error message explaining the reason of the error
- `detail` (string, required): Detailed error description

## Example request

```bash
curl -X GET "http://localhost:9000/forwards/offers"
```

## Example response

```json
{
  "height": 0,
  "currentEpoch": 0,
  "offers": [
    {
      "boxId": "string",
      "maker": "string",
      "makerSide": "long",
      "strike": "string",
      "notional": "string",
      "margin": "string",
      "windowStart": 0,
      "windowLength": 0,
      "windowEnd": 0,
      "expiry": 0,
      "lastFillHeight": 0,
      "lit": "string",
      "nanoErgs": "string",
      "takerLit": "string",
      "takerNanoErgs": "string",
      "impliedMove": 0,
      "impliedMoveNext": 0,
      "mine": true,
      "fillable": true,
      "refusal": "string"
    }
  ],
  "total": 0,
  "truncated": true
}
```
