Skip to contents

Fetches detailed ledger records for spot and margin accounts from the KuCoin API asynchronously with pagination. This internal function is designed for use within an R6 class and is not intended for direct end-user consumption, aggregating transaction histories into a data.table.

Usage

get_spot_ledger_impl(
  keys = get_api_keys(),
  base_url = get_base_url(),
  query = list(),
  page_size = 50,
  max_pages = Inf,
  .__coro_env_parent__ = <environment>
)

Arguments

keys

List containing API configuration parameters from get_api_keys(), including:

  • api_key: Character string; your KuCoin API key.

  • api_secret: Character string; your KuCoin API secret.

  • api_passphrase: Character string; your KuCoin API passphrase.

  • key_version: Character string; API key version (e.g., "2"). Defaults to get_api_keys().

base_url

Character string representing the base URL for the API. Defaults to get_base_url().

query

Named list of query parameters (excluding pagination):

  • currency (character, optional): Filter by currency (up to 10).

  • direction (character, optional): "in" or "out".

  • bizType (character, optional): Business type (e.g., "DEPOSIT", "TRANSFER").

  • startAt (integer, optional): Start time in milliseconds.

  • endAt (integer, optional): End time in milliseconds.

page_size

Integer; number of results per page (10–500, default 50).

max_pages

Numeric; maximum number of pages to fetch (default Inf for all pages).

Value

Promise resolving to a data.table containing:

  • id (character): Ledger record ID.

  • currency (character): Currency.

  • amount (character): Transaction amount.

  • fee (character): Transaction fee.

  • balance (character): Post-transaction balance.

  • accountType (character): Account type.

  • bizType (character): Business type.

  • direction (character): Transaction direction.

  • createdAt (integer): Timestamp in milliseconds.

  • createdAtDatetime (POSIXct): Converted datetime.

  • context (character): Transaction context.

  • currentPage (integer): Current page number.

  • pageSize (integer): Page size.

  • totalNum (integer): Total records.

  • totalPage (integer): Total pages.

Details

Workflow Overview

  1. URL Construction: Combines the base URL (from get_base_url() or provided base_url) with /api/v1/accounts/ledgers, merging query parameters with pagination settings.

  2. Header Preparation: Constructs authentication headers using build_headers() within an inner async function.

  3. API Request: Utilises auto_paginate to fetch all pages asynchronously via an inner fetch_page function.

  4. Response Processing: Aggregates "items" from each page into a data.table with data.table::rbindlist(), adding a createdAtDatetime column via time_convert_from_kucoin().

API Endpoint

GET https://api.kucoin.com/api/v1/accounts/ledgers

Usage

Utilised internally by KucoinAccountAndFunding to retrieve ledger records for spot and margin accounts.

Examples

if (FALSE) { # \dontrun{
keys <- get_api_keys()
base_url <- "https://api.kucoin.com"
query <- list(
  currency = "BTC",
  direction = "in",
  bizType = "TRANSFER",
  startAt = 1728663338000L,
  endAt = 1728692138000L
)
main_async <- coro::async(function() {
  dt <- await(get_spot_ledger_impl(
    keys = keys,
    base_url = base_url,
    query = query,
    page_size = 50L,
    max_pages = 10
  ))
  print(dt)
})
main_async()
while (!later::loop_empty()) later::run_now()
} # }