---
title: "Initiates a withdraw for a specific token in subaccount"
method: POST
path: "/v1/token/{id}/withdraw"
tags: ["Token"]
---

# Initiates a withdraw for a specific token in subaccount

`POST /v1/token/{id}/withdraw`

## Path parameters

- `id` string, required

## Request body

- InitiateWithdrawDto
  - `data` InitiateWithdrawDtoData, required
    - `account` string, hex, required — Account address to withdraw from
    - `amount` string, decimal, required — Amount to withdraw in native units expressed as a decimal (precision: 9)
    - `lzDestinationAddress` string, hex, required — Bytes32 encoded LayerZero destination address (with 0x prefix, left zero padded)
    - `lzDestinationEid` 0 | 40422 | 40231 | 40161 | 30391 | 30110 | 30101 | 30416, required — LayerZero destination endpoint ID for the transfer (zero if not bridging)
    - `nonce` string, required — Message nonce timestamp (nanoseconds since Unix Epoch)
    - `signedAt` integer, required — Message signedAt current timestamp (seconds since Unix Epoch)
    - `subaccount` string, hex, required — Bytes32 encoded subaccount name (0x prefix, zero padded)
    - `token` string, hex, required — Address of token to be withdrawn
  - `signature` string, hex, required — Hex-encoded EIP-712 signature authorizing this request

## Response `201`

- WithdrawDto
  - `amount` string, required — Amount of asset transferred expressed as a decimal
  - `createdAt` integer, required — Withdraw creation timestamp (ms since Unix Epoch)
  - `finalizedBlockNumber` string — Block number the withdraw was completed on
  - `id` string, uuid, required — Id representing the withdraw
  - `initiatedBlockNumber` string — Block number the withdraw was initiated on
  - `lzDestinationAddress` string, hex — LayerZero destination address (leading 0x bytes32 encoded) for the transfer (if withdraw)
  - `lzDestinationEid` integer — LayerZero destination endpoint ID for the transfer (if withdraw)
  - `status` 'SUBMITTED' | 'PENDING' | 'COMPLETED' | 'REJECTED', required — Current status of the withdraw
  - `subaccount` string, hex, required — Bytes32 encoded subaccount name (0x prefix, zero padded)
  - `token` string, hex, required — Address of asset to withdraw (non-checksummed)
  - `withdrawDigest` string, hex, required — Bytes32 hash of the withdraw data (with 0x prefix)

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Unprocessable Entity
- `429` — Too Many Requests
- `500` — Internal Server Error

---

[API](https://skmtc.net/ethereal/apis/ethereal-exchange-api.md) · [All operations](https://skmtc.net/ethereal/apis/ethereal-exchange-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ethereal/ethereal-exchange-api/revisions/6e6f8dad92bf/schema)
