# Get a user's pending vault withdrawal requests

Endpoint reference for the 1delta API. Index: https://docs.1delta.io/llms.txt · every endpoint: https://docs.1delta.io/llms-full.txt

---

### GET /v1/data/vaults/withdrawals

- operationId: `vaults-withdrawals`
- docs: https://docs.1delta.io/1delta-api/vaults-withdrawals/
- markdown: https://docs.1delta.io/1delta-api/vaults-withdrawals.md
- tags: Vaults (Data)

Get a user's pending vault withdrawal requests

Returns a user's **pending withdrawal requests** across every vault that has a withdrawal queue / cooldown (LSTs, savings cooldowns, ERC-7540 async vaults). The static LST/savings withdrawal registry is always probed; pass `vaults` to additionally read arbitrary ERC-7540 vaults by address.

Each entry is normalised to a uniform shape so the frontend treats every protocol identically — render the list, and when `status === "claimable"` build the claim via the matching action endpoint ([/v1/actions/vaults/lst](https://docs.1delta.io/1delta-api/vaults-lst/) or [/savings](https://docs.1delta.io/1delta-api/vaults-savings/)).

**Response:** `{ chainId, account, count, requests }`, where each `requests[]` entry carries:

| field | meaning |
|---|---|
| `lst` | the share-token the request was made against |
| `brand`, `symbol` | UI labels |
| `requestId` | protocol-native id (NFT tokenId, queue index, 7540 requestId, or a bucket name like `waiting`/`unbonded`) — pass back to the claim action |
| `amountUnderlying` | wei the request returns on claim (expected amount for floating-rate queues) |
| `status` | `pending` · `claimable` · `claimed` · `expired` |
| `readyAt` | unix seconds the request becomes claimable (fixed-cooldown protocols only) |
| `yieldProfile`, `denomination` | present when the vault is in the public-data lookup |

Empty per-vault results are dropped.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `chainId` | query | string | yes | Chain ID See the `ChainId` schema for the full set of supported chains. |
| `account` | query | string | yes | 0x-prefixed holder address. |
| `vaults` | query | string | no | Optional CSV of extra ERC-7540 vault addresses to probe with the generic async-redeem reader, in addition to the static registry. |

**Response `200`** — Flat `requests[]` of pending withdrawal requests across all queued/cooldown vaults for `account`.

| Field | Type | Description |
| --- | --- | --- |
| `success` | true |  |
| `data` | object | Informational payload. `null` when the endpoint only builds calldata. |
| `actions` | null |  |

**Example response**

```json
{
  "success": true,
  "data": {}
}
```

**Response `400`** — Validation error

**Response `429`** — Rate limited. Unauthenticated callers share a per-IP budget; send an `x-api-key` header to lift it. Retry with exponential backoff.

**Response `500`** — Unexpected server error. Safe to retry with backoff.

**Response `502`** — An upstream data source or protocol origin failed (`error.code` is `ORIGIN_FAILED`). `error.details` carries the per-origin status. This is also what a missing or malformed required parameter currently returns, rather than a 400.
