<!-- source: https://secondlayer.tools/docs/api-reference#list-sbtc-withdrawals -->

## sBTC withdrawals, one per request

`GET /v1/index/sbtc/withdrawals`

Withdrawals, one row per `request_id`, ordered by when they were requested. Each row carries its current status from the latest accept or reject, the BTC sweep the signers committed to, and that sweep's Bitcoin settlement. The height window and cursor apply to the request event. Status can change after a row is final, so pages are never long-cached.

### Filters

| Name | Type | Description |
| --- | --- | --- |
| `status` | enum | Current lifecycle status. Values: `REQUESTED`, `ACCEPTED`, `REJECTED`. |
| `sender` | string | Requester's Stacks principal. Exact match. |
| `request_id` | integer | Withdrawal request id. Exact match. |
| `settlement_confirmed` | boolean | `true` returns withdrawals whose sweep has confirmed on Bitcoin. `false` returns the rest, including ones with no sweep yet. |
| `confirmed_after` | string · date-time | ISO 8601 timestamp. Returns only withdrawals whose sweep confirmed on Bitcoin strictly after it. Combine with `from_height=0` to scan all history. |

### Range and paging

| Name | Type | Description |
| --- | --- | --- |
| `limit` | integer · 1 to 1000 | Page size; capped at 1000. |
| `cursor` | string | `<block_height>:<event_index>` from a previous page's `next_cursor`. Resumes after it. |
| `from_cursor` | string | Same as `cursor`. Mutually exclusive with it and with `from_height`. |
| `from_height` | integer | First block height to read. Mutually exclusive with a cursor. With neither, the read starts one day behind the tip. |
| `to_height` | integer | Last block height to read, inclusive. |
| `confirmed` | boolean | `true` stops the page at the finality boundary, so every row is past the reorg margin. |
| `fields` | string | Comma-separated columns to return, from: `status`, `amount`, `sender`, `recipient_btc_version`, `recipient_btc_hashbytes`, `sweep_txid`, `settlement_confirmed`, `btc_confirmations`, `btc_block_height`, `confirmed_at`, `requested_at`, `resolved_at`. `cursor` and `request_id` always come back; an unknown name is refused. |

### Returns

A cursor envelope; `withdrawals` holds `SbtcWithdrawal` objects.

### Responses

- `200` Cursor-paginated envelope
- `400` A parameter, filter, cursor or body field was refused; `code` says which
- `401` This bind requires the instance token, and it was missing or wrong
- `429` Rate limited; retry after `Retry-After` seconds

### Example

```bash
curl https://api.secondlayer.tools/v1/index/sbtc/withdrawals \
  -H "Authorization: Bearer $SECONDLAYER_API_KEY"
```

```json
{
  "withdrawals": [
    {
      "cursor": "9048225:2",
      "request_id": 3405,
      "status": "ACCEPTED",
      "amount": "221653",
      "sender": "SP2WRMQD3G4G8BR0120Y390CT6A8BTE6MB0JQ5EHA",
      "recipient_btc_version": 4,
      "recipient_btc_hashbytes": "0xa7d5ce640208ed037950d4c849c805e881209d6a",
      "sweep_txid": "0x0efad88eb01e248fd8321ada99cb74f7258948226eae106f8be5a5917d7473e4",
      "settlement_confirmed": true,
      "btc_confirmations": 8,
      "btc_block_height": 968278,
      "confirmed_at": "2026-09-23T14:35:25.473Z",
      "requested_at": "2026-09-23T12:01:45.000Z",
      "resolved_at": "2026-09-23T13:24:47.000Z"
    }
  ],
  "next_cursor": "7960000:42",
  "tip": {
    "block_height": 9048690,
    "finalized_height": 9048457,
    "lag_seconds": 4,
    "source_block_height": 9048692
  },
  "reorgs": [
    {
      "id": "3f16c2c5-9551-4ae9-adb0-923668e5c65e",
      "detected_at": "2026-09-15T15:39:38.129Z",
      "fork_point_height": 8996511,
      "old_index_block_hash": "0x45ba0195071488eda13afa66d8ce8612558a739f781be5a032d96332797c4174",
      "new_index_block_hash": "0xa686ff58e7c5ccb26c850a7eaffa7e7274fcbc081c706344eb6f1e1446023df0",
      "orphaned_range": {
        "from": "8996511:0",
        "to": "8996512:2701"
      },
      "new_canonical_tip": "8996511:0"
    }
  ]
}
```
