---
title: "Get withdrawal status"
method: GET
path: "/v1/withdrawals/{trackingId}"
tags: ["Withdrawals"]
---

# Get withdrawal status

`GET /v1/withdrawals/{trackingId}`

Retrieves the current status of a withdrawal transaction using its unique tracking ID.

**Status Values:**
- `PROCESSING`
- `SUCCESS`
- `FAILED`.

**Rate limiting**: 1 request per 3 seconds per client IP. Excess requests receive HTTP `429` with `Retry-After`, `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` headers (see `RateLimitExceeded` response).

## Path parameters

- `trackingId` string, uuid, required

## Response `200`

Withdrawal status retrieved successfully

- WithdrawalStatusResponse
  - `status` 'PROCESSING' | 'SUCCESS' | 'FAILED', required — Current status of the withdrawal

## Other responses

- `400` — Validation error
- `401` — No authorization header provided
- `404` — Tracking ID not found
- `429` — Too many requests for this endpoint. Limits are enforced per client IP for the public API routes backed by `RebalancerResource` (and related resources using the same filter). Response headers (when throttled): - `Retry-After`: seconds to wait before retrying (matches the rate-limit window duration for that endpoint). - `X-RateLimit-Limit`: maximum requests allowed in the window (e.g. `1`). - `X-RateLimit-Remaining`: remaining requests in the window (`0` when throttled). - `X-RateLimit-Reset`: Unix timestamp (seconds) when the limit window resets. `internalCode` in the JSON body is `THROTTLE_PER_IP` for IP-scoped limits (other values may apply for different scopes in the backend).
- `500` — Internal server error

---

[API](https://skmtc.net/metalend/apis/metalend-rebalancing-api.md) · [All operations](https://skmtc.net/metalend/apis/metalend-rebalancing-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/metalend/metalend-rebalancing-api/versions/1b9900a9e91e/schema)
