OpenAPI 0.128.37 and AsyncAPI 0.3.0. This table maps every REST operation to its generated client and SDK entry point. Workflow stages have no standalone high-level method: the SDK owns their temporary identifiers, polling and cancellation. The generated client remains available when an application needs those lower-level calls directly.
| Operation ID | Generated client | SDK entry point or deliberate boundary | Guide |
|---|---|---|---|
authenticate |
AuthApi.authenticate |
QTSurfer.authenticate; AuthenticatedClient.refresh | auth |
getAccount |
AccountApi.getAccount |
getAccount; includes scopes and import-range limits | account |
getAccountUsage |
AccountApi.getAccountUsage |
getAccountUsage | account |
listExchanges |
ExchangeApi.listExchanges |
getExchanges; venueType, segments and liveSegments | market_data |
listInstruments |
ExchangeApi.listInstruments |
getInstruments(exchangeId) for CEX; getPools(exchangeId) for DEX | market_data |
listSegmentInstruments |
ExchangeApi.listSegmentInstruments |
getInstruments(exchangeId, segment); getPools(exchangeId, protocol) | market_data |
downloadTickers |
ExchangeApi.downloadTickers |
downloadTickers; downloadTickersWithMetadata uses the binary-safe streaming adapter | market_data |
downloadKlines |
ExchangeApi.downloadKlines |
downloadKlines; downloadKlinesWithMetadata uses the binary-safe streaming adapter | market_data |
listStrategies |
StrategyApi.listStrategies |
getStrategies(includeDeleted); default active entries only | strategy |
compileStrategy |
StrategyApi.compileStrategy |
compile creates a reusable Strategy; Java source is sent as text | strategy |
validateStrategy |
StrategyApi.validateStrategy |
validateStrategy; pending validation is a typed outcome | strategy |
getStrategy |
StrategyApi.getStrategy |
getStrategyState | strategy |
deleteStrategy |
StrategyApi.deleteStrategy |
deleteStrategy | strategy |
getStrategyCode |
StrategyApi.getStrategyCode |
getStrategyCode | strategy |
prepareBacktest |
BacktestingApi.prepareBacktest |
Internal stage of executeBacktest, Strategy.backtest and sweep; no standalone SDK method | backtesting |
getPrepareStatus |
BacktestingApi.getPrepareStatus |
Internal preparation polling; workflows interpret coverage before execution | backtesting |
executeSweep |
BacktestingApi.executeSweep |
sweep returns a Sweep handle | backtesting |
getSweepResult |
BacktestingApi.getSweepResult |
Sweep.getResults; Sweep.await | backtesting |
cancelSweep |
BacktestingApi.cancelSweep |
Sweep.cancel; await waits for pending shards to settle | backtesting |
getSweepSensitivity |
BacktestingApi.getSweepSensitivity |
Sweep.getSensitivity | backtesting |
getSweepRunEquityCurve |
BacktestingApi.getSweepRunEquityCurve |
getSweepRunEquityCurve; getBoundedSweepRunEquityCurve provides normalized bounded points | backtesting |
executeBacktest |
BacktestingApi.executeBacktest |
executeBacktest; Strategy.backtest manages compile, preparation and execution | backtesting |
cancelBacktest |
BacktestingApi.cancelBacktest |
Backtest.cancel on the handle from Strategy.backtest | backtesting |
getBacktestResult |
BacktestingApi.getBacktestResult |
getBacktestResult reads an owned job; Backtest.await polls a submitted job | backtesting |
createDataset |
DatasetApi.createDataset |
createDataset returns initial metadata and its first upload session | datasets |
listDatasets |
DatasetApi.listDatasets |
getDatasets(includeDeleted); default active entries only | datasets |
getDataset |
DatasetApi.getDataset |
getDataset | datasets |
deleteDataset |
DatasetApi.deleteDataset |
deleteDataset | datasets |
openDatasetUpload |
DatasetApi.openDatasetUpload |
openDatasetUpload; uploadDatasetFile streams bytes to storage without API credentials | datasets |
finalizeDatasetUpload |
DatasetApi.finalizeDatasetUpload |
finalizeDatasetUpload starts asynchronous ingest after transfer | datasets |
getDatasetUpload |
DatasetApi.getDatasetUpload |
getDatasetUpload | datasets |
importDataset |
DatasetApi.importDataset |
importDataset accepts typed CEX/DEX blocks and optional cadence | datasets |
getDatasetImport |
DatasetApi.getDatasetImport |
getDatasetImport; poll fetching/ingesting until ready or failed | datasets |
startLive |
LiveExecutionApi.startLive |
startLive; CEX feeds or one DEX pool, with start-only warmup | live |
getLive |
LiveExecutionApi.getLive |
getLive(strategyId) reads the strategy's latest run | live |
stopLive |
LiveExecutionApi.stopLive |
stopLive(strategyId) requests a stop; inspect actual state afterward | live |
listLive |
LiveExecutionApi.listLive |
listLive(cursor, limit) lists owned runs | live |
listPublicLive |
LiveExecutionApi.listPublicLive |
listPublicLive(cursor, limit) browses public running entries | live |
getLiveRun |
LiveExecutionApi.getLiveRun |
getLiveRun(runId) reads an owned run by canonical id | live |
updateLive |
LiveExecutionApi.updateLive |
updateLive changes visibility and metadata | live |
updateLiveParams |
LiveExecutionApi.updateLiveParams |
updateLiveParams; fluent UpdateLiveParamsRequestBuilder or generated request | live |
sendLiveCommand |
LiveExecutionApi.sendLiveCommand |
sendLiveCommand; fluent LiveCommandRequestBuilder or generated request | live |
rotateLiveStream |
LiveExecutionApi.rotateLiveStream |
rotateLiveStream replaces the secret stream URL | live |
revokeLiveStream |
LiveExecutionApi.revokeLiveStream |
revokeLiveStream permanently disables the URL for that run | live |
getLiveRunSignals |
LiveExecutionApi.getLiveRunSignals |
getLiveSignals; getNextLiveSignals preserves pagination filters | live |
getLiveRunPaper |
LiveExecutionApi.getLiveRunPaper |
getLiveRunPaper; paper simulation must have been enabled at start | live |
getLiveRunPaperEquity |
LiveExecutionApi.getLiveRunPaperEquity |
getLiveRunPaperEquity; getNextLiveRunPaperEquity follows continuation | live |
mintLiveConnectionToken |
LiveExecutionApi.mintLiveConnectionToken |
Internal to connectLive, including renewal; no standalone token-management API | live |
Both QTSurfer and API-key-backed AuthenticatedClient expose catalogue, dataset, account and live
methods. AuthenticatedClient also handles JWT renewal. Binary downloads use the manual
ExchangeBinaryDownloads.getTickersHour / getKlinesHour streaming adapter because the generated
native HTTP methods do not preserve binary response bodies. Metadata overloads preserve units and
provisional-data boundaries.
The REST client has no AsyncAPI generator. LiveConnection uses the official Centrifugo client
for transport and protocol management; see the live guide for replay and recovery.
| AsyncAPI operation | SDK support or deliberate boundary |
|---|---|
connect |
connectLive(runId, options) obtains a REST token and establishes the connection |
subscribe |
The connection subscribes to sig:<runId> and resubscribes after reconnecting |
history |
LiveConnection.history returns recent sandbox signals and an epoch-aware position |
liveParams |
LiveConnection.updateParams sends the parameter update command |
refresh |
The connection renews its token through the managed token supplier |
receiveSignal |
Typed signal callbacks supplied through LiveConnectionOptions |
receiveUnsubscribe |
Subscription rejection reaches LiveConnectionOptions.onError; a server-ended subscription is not automatically resumed |
ping |
The Centrifugo transport handles ping/pong automatically |
Subscribing never replays signals automatically. WebSocket history retains at most 300 recent
sandbox signals until five minutes after the last signal; recover older or live-stage retained signals with REST
getLiveSignals. The MCP server deliberately uses REST request/response tools rather than opening
a managed WebSocket: get_live_signals provides its retained-history path. New SDK pool discovery
maps to MCP list_pools; metadata downloads map to download_tickers and download_klines.