Skip to content

spot.rebate

Public methods exposed through client.spot.rebate.

affiliate_campaign

Affiliate-only endpoint returning campaign-level referral, deposit, trading, and commission metrics.

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

Result page.

None
page_size int | None

Records per page; defaults to 10.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
AffiliateCampaignResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/affiliate_campaign.py
async def affiliate_campaign(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  page: int | None = None,
  page_size: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> AffiliateCampaignResponse:
  """Affiliate-only endpoint returning campaign-level referral, deposit, trading, and commission metrics.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    page: Result page.
    page_size: Records per page; defaults to 10.
    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-affiliate-campaign-data-affiliate-only)
  """
  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 page_size is not None:
    params['pageSize'] = page_size
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/affiliate/campaign', params=params)
  return self.output(r.text, adapter, validate)

affiliate_campaign_paged

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

Source code in pkg/src/mexc/spot/rebate/affiliate_campaign.py
async def affiliate_campaign_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, page_size: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[AffiliateCampaignResponse]:
  """Yield pages from `affiliate_campaign` until the response reports the final page."""
  page = 1
  while True:
    response = await self.affiliate_campaign(start_time=start_time, end_time=end_time, page_size=page_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

affiliate_commission

Affiliate-only endpoint returning invitee-level commission totals for the signed affiliate account.

Parameters:

Name Type Description Default
start_time Timestamp | None

Start time in milliseconds.

None
end_time Timestamp | None

End time in milliseconds.

None
invite_code str | None

Invite code filter.

None
page int | None

Result page.

None
page_size int | None

Records per page; defaults to 10.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
AffiliateCommissionResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/affiliate_commission.py
async def affiliate_commission(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  invite_code: str | None = None,
  page: int | None = None,
  page_size: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> AffiliateCommissionResponse:
  """Affiliate-only endpoint returning invitee-level commission totals for the signed affiliate account.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    invite_code: Invite code filter.
    page: Result page.
    page_size: Records per page; defaults to 10.
    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-affiliate-commission-record-affiliate-only)
  """
  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 invite_code is not None:
    params['inviteCode'] = invite_code
  if page is not None:
    params['page'] = page
  if page_size is not None:
    params['pageSize'] = page_size
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/affiliate/commission', params=params)
  return self.output(r.text, adapter, validate)

affiliate_commission_paged

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

Source code in pkg/src/mexc/spot/rebate/affiliate_commission.py
async def affiliate_commission_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, invite_code: str | None = None, page_size: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[AffiliateCommissionResponse]:
  """Yield pages from `affiliate_commission` until the response reports the final page."""
  page = 1
  while True:
    response = await self.affiliate_commission(start_time=start_time, end_time=end_time, invite_code=invite_code, page_size=page_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

affiliate_commission_detail

Affiliate-only endpoint returning detailed commission records by type, source, date, user, and asset.

Parameters:

Name Type Description Default
start_time Timestamp | None

Start time in milliseconds.

None
end_time Timestamp | None

End time in milliseconds.

None
invite_code str | None

Invite code filter.

None
page int | None

Result page.

None
page_size int | None

Records per page; defaults to 10.

None
type_ int | None

Commission type: 1 spot, 2 futures, 3 ETF.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
AffiliateCommissionDetailResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/affiliate_commission_detail.py
async def affiliate_commission_detail(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  invite_code: str | None = None,
  page: int | None = None,
  page_size: int | None = None,
  type_: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> AffiliateCommissionDetailResponse:
  """Affiliate-only endpoint returning detailed commission records by type, source, date, user, and asset.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    invite_code: Invite code filter.
    page: Result page.
    page_size: Records per page; defaults to 10.
    type_: Commission type: 1 spot, 2 futures, 3 ETF.
    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-affiliate-commission-detail-record-affiliate-only)
  """
  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 invite_code is not None:
    params['inviteCode'] = invite_code
  if page is not None:
    params['page'] = page
  if page_size is not None:
    params['pageSize'] = page_size
  if type_ is not None:
    params['type'] = type_
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/affiliate/commission/detail', params=params)
  return self.output(r.text, adapter, validate)

affiliate_commission_detail_paged

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

Source code in pkg/src/mexc/spot/rebate/affiliate_commission_detail.py
async def affiliate_commission_detail_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, invite_code: str | None = None, page_size: int | None = None, type_: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[AffiliateCommissionDetailResponse]:
  """Yield pages from `affiliate_commission_detail` until the response reports the final page."""
  page = 1
  while True:
    response = await self.affiliate_commission_detail(start_time=start_time, end_time=end_time, invite_code=invite_code, page_size=page_size, type_=type_, 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

affiliate_referral

Affiliate-only endpoint returning referred-user deposit, trading, commission, asset-band, and identification data.

Parameters:

Name Type Description Default
start_time Timestamp | None

Start time in milliseconds.

None
end_time Timestamp | None

End time in milliseconds.

None
uid str | None

Referral user id filter.

None
invite_code str | None

Invite code filter.

None
page int | None

Result page.

None
page_size int | None

Records per page; defaults to 10.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
AffiliateReferralResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/affiliate_referral.py
async def affiliate_referral(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  uid: str | None = None,
  invite_code: str | None = None,
  page: int | None = None,
  page_size: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> AffiliateReferralResponse:
  """Affiliate-only endpoint returning referred-user deposit, trading, commission, asset-band, and identification data.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    uid: Referral user id filter.
    invite_code: Invite code filter.
    page: Result page.
    page_size: Records per page; defaults to 10.
    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-affiliate-referral-data-affiliate-only)
  """
  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 uid is not None:
    params['uid'] = uid
  if invite_code is not None:
    params['inviteCode'] = invite_code
  if page is not None:
    params['page'] = page
  if page_size is not None:
    params['pageSize'] = page_size
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/affiliate/referral', params=params)
  return self.output(r.text, adapter, validate)

affiliate_referral_paged

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

Source code in pkg/src/mexc/spot/rebate/affiliate_referral.py
async def affiliate_referral_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, uid: str | None = None, invite_code: str | None = None, page_size: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[AffiliateReferralResponse]:
  """Yield pages from `affiliate_referral` until the response reports the final page."""
  page = 1
  while True:
    response = await self.affiliate_referral(start_time=start_time, end_time=end_time, uid=uid, invite_code=invite_code, page_size=page_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

affiliate_subaffiliates

Affiliate-only endpoint returning sub-affiliate activation, registration, deposit, campaign, and commission data.

Parameters:

Name Type Description Default
start_time Timestamp | None

Start time in milliseconds.

None
end_time Timestamp | None

End time in milliseconds.

None
invite_code str | None

Invite code filter.

None
page int | None

Result page.

None
page_size int | None

Records per page; defaults to 10.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
AffiliateSubaffiliatesResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/affiliate_subaffiliates.py
async def affiliate_subaffiliates(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  invite_code: str | None = None,
  page: int | None = None,
  page_size: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> AffiliateSubaffiliatesResponse:
  """Affiliate-only endpoint returning sub-affiliate activation, registration, deposit, campaign, and commission data.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    invite_code: Invite code filter.
    page: Result page.
    page_size: Records per page; defaults to 10.
    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-subaffiliates-data-affiliate-only)
  """
  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 invite_code is not None:
    params['inviteCode'] = invite_code
  if page is not None:
    params['page'] = page
  if page_size is not None:
    params['pageSize'] = page_size
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/affiliate/subaffiliates', params=params)
  return self.output(r.text, adapter, validate)

affiliate_subaffiliates_paged

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

Source code in pkg/src/mexc/spot/rebate/affiliate_subaffiliates.py
async def affiliate_subaffiliates_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, invite_code: str | None = None, page_size: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[AffiliateSubaffiliatesResponse]:
  """Yield pages from `affiliate_subaffiliates` until the response reports the final page."""
  page = 1
  while True:
    response = await self.affiliate_subaffiliates(start_time=start_time, end_time=end_time, invite_code=invite_code, page_size=page_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

affiliate_withdraw

Affiliate-only endpoint returning affiliate commission withdrawal records.

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

Result page.

None
page_size int | None

Records per page; defaults to 10.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
AffiliateWithdrawResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/affiliate_withdraw.py
async def affiliate_withdraw(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  page: int | None = None,
  page_size: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> AffiliateWithdrawResponse:
  """Affiliate-only endpoint returning affiliate commission withdrawal records.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    page: Result page.
    page_size: Records per page; defaults to 10.
    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-affiliate-withdraw-record-affiliate-only)
  """
  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 page_size is not None:
    params['pageSize'] = page_size
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/affiliate/withdraw', params=params)
  return self.output(r.text, adapter, validate)

affiliate_withdraw_paged

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

Source code in pkg/src/mexc/spot/rebate/affiliate_withdraw.py
async def affiliate_withdraw_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, page_size: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[AffiliateWithdrawResponse]:
  """Yield pages from `affiliate_withdraw` until the response reports the final page."""
  page = 1
  while True:
    response = await self.affiliate_withdraw(start_time=start_time, end_time=end_time, page_size=page_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

detail

Returns rebate records generated by invited users and their sub-accounts across spot and futures transactions.

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

Result page; defaults to 1.

None
recv_window int | None

Optional receive window in milliseconds.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
DetailResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/detail.py
async def detail(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  page: int | None = None,
  recv_window: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> DetailResponse:
  """Returns rebate records generated by invited users and their sub-accounts across spot and futures transactions.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    page: Result page; defaults to 1.
    recv_window: Optional receive window in milliseconds.
    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-rebate-records-detail)
  """
  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 recv_window is not None:
    params['recvWindow'] = recv_window
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/detail', params=params)
  return self.output(r.text, adapter, validate)

detail_paged

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

Source code in pkg/src/mexc/spot/rebate/detail.py
async def detail_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, recv_window: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[DetailResponse]:
  """Yield pages from `detail` until the response reports the final page."""
  page = 1
  while True:
    response = await self.detail(start_time=start_time, end_time=end_time, recv_window=recv_window, 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

history

Returns aggregated rebate history for users invited by 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

Result page; defaults to 1.

None
recv_window int | None

Optional receive window in milliseconds.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
HistoryResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/history.py
async def history(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  page: int | None = None,
  recv_window: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> HistoryResponse:
  """Returns aggregated rebate history for users invited by the signed account.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    page: Result page; defaults to 1.
    recv_window: Optional receive window in milliseconds.
    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-rebate-history-records)
  """
  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 recv_window is not None:
    params['recvWindow'] = recv_window
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/taxQuery', params=params)
  return self.output(r.text, adapter, validate)

history_paged

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

Source code in pkg/src/mexc/spot/rebate/history.py
async def history_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, recv_window: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[HistoryResponse]:
  """Yield pages from `history` until the response reports the final page."""
  page = 1
  while True:
    response = await self.history(start_time=start_time, end_time=end_time, recv_window=recv_window, 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

refer_code

Returns the referral code associated with the signed account.

Parameters:

Name Type Description Default
recv_window int | None

Optional receive window in milliseconds.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
ReferCodeResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/refer_code.py
async def refer_code(
  self,
  *,
  recv_window: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> ReferCodeResponse:
  """Returns the referral code associated with the signed account.

  Args:
    recv_window: Optional receive window in milliseconds.
    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-refercode)
  """
  if timestamp is None:
    timestamp = ts.now()
  params = {}
  if recv_window is not None:
    params['recvWindow'] = recv_window
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/referCode', params=params)
  return self.output(r.text, adapter, validate)

self_detail

Returns self-commission rebate records generated from invited friends trading spot or futures.

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

Result page; defaults to 1.

None
recv_window int | None

Optional receive window in milliseconds.

None
timestamp Timestamp | None

Signed request timestamp in milliseconds.

None
validate bool | None

Validation override for this request.

None

Returns:

Type Description
SelfDetailResponse

The validated endpoint response.

References
Source code in pkg/src/mexc/spot/rebate/self_detail.py
async def self_detail(
  self,
  *,
  start_time: Timestamp | None = None,
  end_time: Timestamp | None = None,
  page: int | None = None,
  recv_window: int | None = None,
  timestamp: Timestamp | None = None,
  validate: bool | None = None
) -> SelfDetailResponse:
  """Returns self-commission rebate records generated from invited friends trading spot or futures.

  Args:
    start_time: Start time in milliseconds.
    end_time: End time in milliseconds.
    page: Result page; defaults to 1.
    recv_window: Optional receive window in milliseconds.
    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-self-rebate-records-detail)
  """
  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 recv_window is not None:
    params['recvWindow'] = recv_window
  if timestamp is not None:
    params['timestamp'] = ts.dump_ms(timestamp)
  r = await self.signed_request('GET', '/api/v3/rebate/detail/kickback', params=params)
  return self.output(r.text, adapter, validate)

self_detail_paged

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

Source code in pkg/src/mexc/spot/rebate/self_detail.py
async def self_detail_paged(self, *, start_time: Timestamp | None = None, end_time: Timestamp | None = None, recv_window: int | None = None, timestamp: Timestamp | None = None, max_pages: int | None = None, validate: bool | None = None) -> AsyncIterator[SelfDetailResponse]:
  """Yield pages from `self_detail` until the response reports the final page."""
  page = 1
  while True:
    response = await self.self_detail(start_time=start_time, end_time=end_time, recv_window=recv_window, 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