Skip to content

spot.wallet

Public methods exposed through client.spot.wallet.

cancel_withdraw

Cancels a pending withdrawal by withdrawal id.

Parameters:

Name Type Description Default
id str

Withdrawal id to cancel.

required
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
CancelWithdrawResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/cancel_withdraw.py
async def cancel_withdraw(
  self,
  *,
  id: str,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> CancelWithdrawResponse:
  """Cancels a pending withdrawal by withdrawal id.

  Args:
    id: Withdrawal id to cancel.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#cancel-withdraw)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if id is not None:
    params['id'] = id
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('DELETE', '/api/v3/capital/withdraw', params=params)
  return self.output(r.text, adapter, validate)

convert_dust

Converts small asset balances into MX.

Parameters:

Name Type Description Default
asset str

Comma-separated assets to convert; max 15 assets.

required
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
ConvertDustResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/convert_dust.py
async def convert_dust(
  self,
  *,
  asset: str,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> ConvertDustResponse:
  """Converts small asset balances into MX.

  Args:
    asset: Comma-separated assets to convert; max 15 assets.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#dust-transfer)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if asset is not None:
    params['asset'] = asset
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('POST', '/api/v3/capital/convert', params=params)
  return self.output(r.text, adapter, validate)

convertible_assets

Returns dust balances and estimated MX/USDT conversion values for assets that can be converted.

Parameters:

Name Type Description Default
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[ConvertibleAssetsItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/convertible_assets.py
async def convertible_assets(
  self,
  *,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[ConvertibleAssetsItem]:
  """Returns dust balances and estimated MX/USDT conversion values for assets that can be converted.

  Args:
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#get-assets-that-can-be-converted-into-mx)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/convert/list', params=params)
  return self.output(r.text, adapter, validate)

currency_info

Returns supported currencies, deposit/withdrawal availability, network limits, fees, and contract metadata for wallet operations.

Parameters:

Name Type Description Default
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[CurrencyInfoItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/currency_info.py
async def currency_info(
  self,
  *,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[CurrencyInfoItem]:
  """Returns supported currencies, deposit/withdrawal availability, network limits, fees, and contract metadata for wallet operations.

  Args:
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#query-the-currency-information)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/config/getall', params=params)
  return self.output(r.text, adapter, validate)

deposit_address

Returns deposit addresses for an asset, optionally filtered by network.

Parameters:

Name Type Description Default
coin str

Asset for deposit address lookup.

required
network str | None

Optional deposit network filter.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[DepositAddressItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/deposit_address.py
async def deposit_address(
  self,
  *,
  coin: str,
  network: str | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[DepositAddressItem]:
  """Returns deposit addresses for an asset, optionally filtered by network.

  Args:
    coin: Asset for deposit address lookup.
    network: Optional deposit network filter.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#deposit-address-supporting-network)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if coin is not None:
    params['coin'] = coin
  if network is not None:
    params['network'] = network
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/deposit/address', params=params)
  return self.output(r.text, adapter, validate)

deposit_history

Returns deposit records for the signed account, optionally filtered by coin, status, and time window.

Parameters:

Name Type Description Default
coin str | None

Asset filter.

None
status str | None

Deposit status filter.

None
start_time Timestamp | None

Start time in milliseconds; defaults to seven days ago.

None
end_time Timestamp | None

End time in milliseconds; defaults to current time.

None
limit int | None

Maximum records to return; max 1000.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[DepositHistoryItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/deposit_history.py
async def deposit_history(
  self,
  *,
  coin: str | None = None,
  status: str | None = None,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  limit: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[DepositHistoryItem]:
  """Returns deposit records for the signed account, optionally filtered by coin, status, and time window.

  Args:
    coin: Asset filter.
    status: Deposit status filter.
    start_time: Start time in milliseconds; defaults to seven days ago.
    end_time: End time in milliseconds; defaults to current time.
    limit: Maximum records to return; max 1000.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#deposit-history-supporting-network)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if coin is not None:
    params['coin'] = coin
  if status is not None:
    params['status'] = status
  if start_time is not None:
    params['startTime'] = ts.dump_ms(start_time)
  if end_time is not None:
    params['endTime'] = ts.dump_ms(end_time)
  if limit is not None:
    params['limit'] = limit
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/deposit/hisrec', params=params)
  return self.output(r.text, adapter, validate)

dust_log

Returns historical dust conversion records for the signed account.

Parameters:

Name Type Description Default
start_time Timestamp | None

Start time in milliseconds.

None
end_time Timestamp | None

End time in milliseconds.

None
page int | None

Page number; default 1.

None
limit int | None

Page size; max 1000.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
DustLogResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/dust_log.py
async def dust_log(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  page: int | None = None,
  limit: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> DustLogResponse:
  """Returns historical dust conversion records for the signed account.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    page: Page number; default 1.
    limit: Page size; max 1000.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#dustlog)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if start_time is not None:
    params['startTime'] = ts.dump_ms(start_time)
  if end_time is not None:
    params['endTime'] = ts.dump_ms(end_time)
  if page is not None:
    params['page'] = page
  if limit is not None:
    params['limit'] = limit
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/convert', params=params)
  return self.output(r.text, adapter, validate)

dust_log_paged

Yield pages from dust_log until the response reports the final page.

Source code in pkg/src/mexc/spot/wallet/dust_log.py
async def dust_log_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, limit: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[DustLogResponse]:
  """Yield pages from `dust_log` until the response reports the final page."""
  page = 1
  while True:
    response = await self.dust_log(start_time=start_time, end_time=end_time, limit=limit, timestamp=timestamp, page=page, validate=validate)
    yield response
    if max_pages is not None and page >= max_pages:
      break
    data = response.get('data') if isinstance(response, dict) else None
    total = None
    if isinstance(data, dict):
      total = data.get('totalPage') or data.get('totalPageNum')
    if total is None and isinstance(response, dict):
      total = response.get('totalPage') or response.get('totalPageNum')
    if total is None:
      if data == [] or response == []:
        break
      if max_pages is None:
        break
      page += 1
      continue
    if total is None or page >= total:
      break
    page += 1

generate_deposit_address

Creates or returns a deposit address for a coin and network.

Parameters:

Name Type Description Default
coin str

Asset for the deposit address.

required
network str

Deposit network.

required
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[GenerateDepositAddressItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/generate_deposit_address.py
async def generate_deposit_address(
  self,
  *,
  coin: str,
  network: str,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[GenerateDepositAddressItem]:
  """Creates or returns a deposit address for a coin and network.

  Args:
    coin: Asset for the deposit address.
    network: Deposit network.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#generate-deposit-address-supporting-network)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if coin is not None:
    params['coin'] = coin
  if network is not None:
    params['network'] = network
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('POST', '/api/v3/capital/deposit/address', params=params)
  return self.output(r.text, adapter, validate)

internal_transfer

Transfers assets internally to another MEXC account by email, UID, or mobile number.

Parameters:

Name Type Description Default
to_account_type str

Recipient account identifier type: EMAIL, UID, or MOBILE.

required
to_account str

Recipient email, UID, or mobile number.

required
area_code str | None

Area code when using a mobile recipient.

None
asset str

Asset to transfer.

required
amount str

Transfer amount.

required
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
InternalTransferResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/internal_transfer.py
async def internal_transfer(
  self,
  *,
  to_account_type: str,
  to_account: str,
  area_code: str | None = None,
  asset: str,
  amount: str,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> InternalTransferResponse:
  """Transfers assets internally to another MEXC account by email, UID, or mobile number.

  Args:
    to_account_type: Recipient account identifier type: EMAIL, UID, or MOBILE.
    to_account: Recipient email, UID, or mobile number.
    area_code: Area code when using a mobile recipient.
    asset: Asset to transfer.
    amount: Transfer amount.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#internal-transfer)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if to_account_type is not None:
    params['toAccountType'] = to_account_type
  if to_account is not None:
    params['toAccount'] = to_account
  if area_code is not None:
    params['areaCode'] = area_code
  if asset is not None:
    params['asset'] = asset
  if amount is not None:
    params['amount'] = amount
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('POST', '/api/v3/capital/transfer/internal', params=params)
  return self.output(r.text, adapter, validate)

internal_transfer_history

Returns internal transfer records for the signed account.

Parameters:

Name Type Description Default
start_time Timestamp | None

Start time in milliseconds; defaults to seven days ago.

None
end_time Timestamp | None

End time in milliseconds.

None
page int | None

Page number; default 1.

None
limit int | None

Page size; default 10.

None
tran_id str | None

Transfer id filter.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
InternalTransferHistoryResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/internal_transfer_history.py
async def internal_transfer_history(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  page: int | None = None,
  limit: int | None = None,
  tran_id: str | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> InternalTransferHistoryResponse:
  """Returns internal transfer records for the signed account.

  Args:
    start_time: Start time in milliseconds; defaults to seven days ago.
    end_time: End time in milliseconds.
    page: Page number; default 1.
    limit: Page size; default 10.
    tran_id: Transfer id filter.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#query-internal-transfer-history)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if start_time is not None:
    params['startTime'] = ts.dump_ms(start_time)
  if end_time is not None:
    params['endTime'] = ts.dump_ms(end_time)
  if page is not None:
    params['page'] = page
  if limit is not None:
    params['limit'] = limit
  if tran_id is not None:
    params['tranId'] = tran_id
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/transfer/internal', params=params)
  return self.output(r.text, adapter, validate)

internal_transfer_history_paged

Yield pages from internal_transfer_history until the response reports the final page.

Source code in pkg/src/mexc/spot/wallet/internal_transfer_history.py
async def internal_transfer_history_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, limit: int | None = None, tran_id: str | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[InternalTransferHistoryResponse]:
  """Yield pages from `internal_transfer_history` until the response reports the final page."""
  page = 1
  while True:
    response = await self.internal_transfer_history(start_time=start_time, end_time=end_time, limit=limit, tran_id=tran_id, timestamp=timestamp, page=page, validate=validate)
    yield response
    if max_pages is not None and page >= max_pages:
      break
    data = response.get('data') if isinstance(response, dict) else None
    total = None
    if isinstance(data, dict):
      total = data.get('totalPage') or data.get('totalPageNum')
    if total is None and isinstance(response, dict):
      total = response.get('totalPage') or response.get('totalPageNum')
    if total is None:
      if data == [] or response == []:
        break
      if max_pages is None:
        break
      page += 1
      continue
    if total is None or page >= total:
      break
    page += 1

universal_transfer

Transfers assets between the signed user account types such as spot and futures.

Parameters:

Name Type Description Default
from_account_type str

Source account type, such as SPOT or FUTURES.

required
to_account_type str

Destination account type, such as SPOT or FUTURES.

required
asset str

Asset to transfer.

required
amount str

Transfer amount.

required
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[UniversalTransferItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/universal_transfer.py
async def universal_transfer(
  self,
  *,
  from_account_type: str,
  to_account_type: str,
  asset: str,
  amount: str,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[UniversalTransferItem]:
  """Transfers assets between the signed user account types such as spot and futures.

  Args:
    from_account_type: Source account type, such as SPOT or FUTURES.
    to_account_type: Destination account type, such as SPOT or FUTURES.
    asset: Asset to transfer.
    amount: Transfer amount.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#user-universal-transfer)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if from_account_type is not None:
    params['fromAccountType'] = from_account_type
  if to_account_type is not None:
    params['toAccountType'] = to_account_type
  if asset is not None:
    params['asset'] = asset
  if amount is not None:
    params['amount'] = amount
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('POST', '/api/v3/capital/transfer', params=params)
  return self.output(r.text, adapter, validate)

universal_transfer_by_tran_id

Returns a single universal transfer record by transfer id.

Parameters:

Name Type Description Default
tran_id str

Transfer id.

required
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
UniversalTransferByTranIdResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/universal_transfer_by_tran_id.py
async def universal_transfer_by_tran_id(
  self,
  *,
  tran_id: str,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> UniversalTransferByTranIdResponse:
  """Returns a single universal transfer record by transfer id.

  Args:
    tran_id: Transfer id.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#query-user-universal-transfer-history-by-tranid)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if tran_id is not None:
    params['tranId'] = tran_id
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/transfer/tranId', params=params)
  return self.output(r.text, adapter, validate)

universal_transfer_history

Returns universal transfer records between account types for the signed account.

Parameters:

Name Type Description Default
from_account_type str

Source account type filter.

required
to_account_type str

Destination account type filter.

required
start_time Timestamp | None

Start time in milliseconds.

None
end_time Timestamp | None

End time in milliseconds.

None
page int | None

Page number; default 1.

None
size int | None

Page size; max 100.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[UniversalTransferHistoryItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/universal_transfer_history.py
async def universal_transfer_history(
  self,
  *,
  from_account_type: str,
  to_account_type: str,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  page: int | None = None,
  size: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[UniversalTransferHistoryItem]:
  """Returns universal transfer records between account types for the signed account.

  Args:
    from_account_type: Source account type filter.
    to_account_type: Destination account type filter.
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    page: Page number; default 1.
    size: Page size; max 100.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#query-user-universal-transfer-history)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if from_account_type is not None:
    params['fromAccountType'] = from_account_type
  if to_account_type is not None:
    params['toAccountType'] = to_account_type
  if start_time is not None:
    params['startTime'] = ts.dump_ms(start_time)
  if end_time is not None:
    params['endTime'] = ts.dump_ms(end_time)
  if page is not None:
    params['page'] = page
  if size is not None:
    params['size'] = size
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/transfer', params=params)
  return self.output(r.text, adapter, validate)

universal_transfer_history_paged

Yield pages from universal_transfer_history until the response reports the final page.

Source code in pkg/src/mexc/spot/wallet/universal_transfer_history.py
async def universal_transfer_history_paged(self, *, from_account_type: str, to_account_type: str, start_time: Timestamp | None = None, end_time: Timestamp | None = None, size: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[list[UniversalTransferHistoryItem]]:
  """Yield pages from `universal_transfer_history` until the response reports the final page."""
  page = 1
  while True:
    response = await self.universal_transfer_history(from_account_type=from_account_type, to_account_type=to_account_type, start_time=start_time, end_time=end_time, size=size, timestamp=timestamp, page=page, validate=validate)
    yield response
    if max_pages is not None and page >= max_pages:
      break
    data = response.get('data') if isinstance(response, dict) else None
    total = None
    if isinstance(data, dict):
      total = data.get('totalPage') or data.get('totalPageNum')
    if total is None and isinstance(response, dict):
      total = response.get('totalPage') or response.get('totalPageNum')
    if total is None:
      if data == [] or response == []:
        break
      if max_pages is None:
        break
      page += 1
      continue
    if total is None or page >= total:
      break
    page += 1

withdraw

Submits a live asset withdrawal request from the signed spot account.

Parameters:

Name Type Description Default
coin str

Asset to withdraw.

required
withdraw_order_id str | None

Optional client withdrawal order id.

None
net_work str | None

Withdrawal network identifier from currency configuration.

None
contract_address str | None

Token contract address, when required.

None
address str

Destination withdrawal address.

required
memo str | None

Destination memo or tag when required by the network.

None
amount str

Withdrawal amount.

required
remark str | None

Optional withdrawal remark.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
WithdrawResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/withdraw.py
async def withdraw(
  self,
  *,
  coin: str,
  withdraw_order_id: str | None = None,
  net_work: str | None = None,
  contract_address: str | None = None,
  address: str,
  memo: str | None = None,
  amount: str,
  remark: str | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> WithdrawResponse:
  """Submits a live asset withdrawal request from the signed spot account.

  Args:
    coin: Asset to withdraw.
    withdraw_order_id: Optional client withdrawal order id.
    net_work: Withdrawal network identifier from currency configuration.
    contract_address: Token contract address, when required.
    address: Destination withdrawal address.
    memo: Destination memo or tag when required by the network.
    amount: Withdrawal amount.
    remark: Optional withdrawal remark.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#withdraw-new)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if coin is not None:
    params['coin'] = coin
  if withdraw_order_id is not None:
    params['withdrawOrderId'] = withdraw_order_id
  if net_work is not None:
    params['netWork'] = net_work
  if contract_address is not None:
    params['contractAddress'] = contract_address
  if address is not None:
    params['address'] = address
  if memo is not None:
    params['memo'] = memo
  if amount is not None:
    params['amount'] = amount
  if remark is not None:
    params['remark'] = remark
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('POST', '/api/v3/capital/withdraw', params=params)
  return self.output(r.text, adapter, validate)

withdraw_address

Returns saved withdrawal addresses for the signed account.

Parameters:

Name Type Description Default
coin str | None

Asset filter.

None
page int | None

Page number; default 1.

None
limit int | None

Records per page.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
WithdrawAddressResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/withdraw_address.py
async def withdraw_address(
  self,
  *,
  coin: str | None = None,
  page: int | None = None,
  limit: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> WithdrawAddressResponse:
  """Returns saved withdrawal addresses for the signed account.

  Args:
    coin: Asset filter.
    page: Page number; default 1.
    limit: Records per page.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#withdraw-address-supporting-network)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if coin is not None:
    params['coin'] = coin
  if page is not None:
    params['page'] = page
  if limit is not None:
    params['limit'] = limit
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/withdraw/address', params=params)
  return self.output(r.text, adapter, validate)

withdraw_address_paged

Yield pages from withdraw_address until the response reports the final page.

Source code in pkg/src/mexc/spot/wallet/withdraw_address.py
async def withdraw_address_paged(self, *, coin: str | None = None, limit: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[WithdrawAddressResponse]:
  """Yield pages from `withdraw_address` until the response reports the final page."""
  page = 1
  while True:
    response = await self.withdraw_address(coin=coin, limit=limit, timestamp=timestamp, page=page, validate=validate)
    yield response
    if max_pages is not None and page >= max_pages:
      break
    data = response.get('data') if isinstance(response, dict) else None
    total = None
    if isinstance(data, dict):
      total = data.get('totalPage') or data.get('totalPageNum')
    if total is None and isinstance(response, dict):
      total = response.get('totalPage') or response.get('totalPageNum')
    if total is None:
      if data == [] or response == []:
        break
      if max_pages is None:
        break
      page += 1
      continue
    if total is None or page >= total:
      break
    page += 1

withdraw_apply

Deprecated previous withdrawal endpoint that submits a live asset withdrawal request.

Parameters:

Name Type Description Default
coin str

Asset to withdraw.

required
withdraw_order_id str | None

Optional client withdrawal order id.

None
network str | None

Withdrawal network identifier.

None
address str

Destination withdrawal address.

required
memo str | None

Destination memo or tag when required.

None
amount str

Withdrawal amount.

required
remark str | None

Optional withdrawal remark.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[WithdrawApplyItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/withdraw_apply.py
async def withdraw_apply(
  self,
  *,
  coin: str,
  withdraw_order_id: str | None = None,
  network: str | None = None,
  address: str,
  memo: str | None = None,
  amount: str,
  remark: str | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[WithdrawApplyItem]:
  """Deprecated previous withdrawal endpoint that submits a live asset withdrawal request.

  Args:
    coin: Asset to withdraw.
    withdraw_order_id: Optional client withdrawal order id.
    network: Withdrawal network identifier.
    address: Destination withdrawal address.
    memo: Destination memo or tag when required.
    amount: Withdrawal amount.
    remark: Optional withdrawal remark.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#withdraw-previous-offline-soon)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if coin is not None:
    params['coin'] = coin
  if withdraw_order_id is not None:
    params['withdrawOrderId'] = withdraw_order_id
  if network is not None:
    params['network'] = network
  if address is not None:
    params['address'] = address
  if memo is not None:
    params['memo'] = memo
  if amount is not None:
    params['amount'] = amount
  if remark is not None:
    params['remark'] = remark
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('POST', '/api/v3/capital/withdraw/apply', params=params)
  return self.output(r.text, adapter, validate)

withdraw_history

Returns withdrawal records for the signed account, optionally filtered by coin, status, and time window.

Parameters:

Name Type Description Default
coin str | None

Asset filter.

None
status str | None

Withdrawal status filter.

None
limit int | None

Maximum records to return; max 1000.

None
start_time Timestamp | None

Start time in milliseconds; defaults to seven days ago.

None
end_time Timestamp | None

End time in milliseconds; defaults to current time.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
list[WithdrawHistoryItem]

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/wallet/withdraw_history.py
async def withdraw_history(
  self,
  *,
  coin: str | None = None,
  status: str | None = None,
  limit: int | None = None,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> list[WithdrawHistoryItem]:
  """Returns withdrawal records for the signed account, optionally filtered by coin, status, and time window.

  Args:
    coin: Asset filter.
    status: Withdrawal status filter.
    limit: Maximum records to return; max 1000.
    start_time: Start time in milliseconds; defaults to seven days ago.
    end_time: End time in milliseconds; defaults to current time.
    timestamp: Signed request timestamp in milliseconds.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [MEXC API docs](https://mexcdevelop.github.io/apidocs/spot_v3_en/#withdraw-history-supporting-network)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if coin is not None:
    params['coin'] = coin
  if status is not None:
    params['status'] = status
  if limit is not None:
    params['limit'] = limit
  if start_time is not None:
    params['startTime'] = ts.dump_ms(start_time)
  if end_time is not None:
    params['endTime'] = ts.dump_ms(end_time)
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/capital/withdraw/history', params=params)
  return self.output(r.text, adapter, validate)