> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zyf.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# getWithdrawStatus

> Fetch withdraw lifecycle state (sync redeem and async claim legs).

Fetch the current lifecycle state for a withdrawal started via [`withdrawFunds`](/docs/sdk/api/withdraw-funds). The lifecycle id is `withdrawFunds().lifecycle.id` when the accept response includes both `id` and `statusUrl`.

Use this for one-off checks. To await settlement or completion, use [`waitForWithdrawSettlement`](/docs/sdk/api/wait-for-withdraw-settlement) or [`waitForWithdrawComplete`](/docs/sdk/api/wait-for-withdraw-complete).

Requires `connectAccount()` on the **same** `ZyfaiSDK` instance.

## HTTP endpoint

The SDK calls `GET /api/v1/users/withdrawals/{withdrawalId}`.

## Signature

```typescript theme={null}
getWithdrawStatus(withdrawalId: string): Promise<WithdrawLifecycleResponse>
```

## Parameters

| Parameter | Type | Required | Description |
| - | - | :-: | - |
| `withdrawalId` | `string` | ✅ | Lifecycle UUID from `withdrawFunds().lifecycle.id` |

## Return Type

```typescript theme={null}
type WithdrawLifecycleStatus =
  | "accepted"
  | "redeeming"
  | "transferring"
  | "async_requesting"
  | "async_cooldown"
  | "async_claiming"
  | "completed"
  | "failed";

interface WithdrawAsyncLeg {
  id: string;
  protocol: string;
  pool: string;
  status: string;
  estimatedClaimAt?: string | null;
  requestTxHash?: string | null;
  claimTxHash?: string | null;
}

interface WithdrawLifecycleResponse {
  id: string;
  status: WithdrawLifecycleStatus;
  chainId: number;
  tokenSymbol?: string | null;
  syncSettled: boolean;
  syncTxHash?: string | null;
  asyncLegs: WithdrawAsyncLeg[];
  failedAsyncIds: string[];
  lastError?: string | null;
  statusUrl: string;
  estimatedClaimAt?: string | null;
}
```

| Field | Description |
| - | - |
| `status` | Overall withdraw lifecycle stage |
| `syncSettled` | Whether the immediately withdrawable slice has settled on-chain |
| `asyncLegs` | Per-pool async redemption legs (cooldown and claim) |
| `estimatedClaimAt` | Earliest expected claim time across async legs when applicable |

## Example

```typescript theme={null}
const withdrawn = await sdk.withdrawFunds(userAddress, 8453, "50000000");

const withdrawalId = withdrawn.lifecycle?.id;
if (!withdrawalId) {
  throw new Error("No lifecycle id on withdraw response");
}

const status = await sdk.getWithdrawStatus(withdrawalId);
console.log(status.status, status.syncSettled);
```

## Related methods

* [`waitForWithdrawSettlement`](/docs/sdk/api/wait-for-withdraw-settlement) — short poll until sync settles or async enters cooldown/claiming
* [`waitForWithdrawComplete`](/docs/sdk/api/wait-for-withdraw-complete) — long poll through cooldown until `completed`
* [`withdrawFunds`](/docs/sdk/api/withdraw-funds) — start a withdrawal


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.