One signed REST API covering the entire TradeMire platform: public market data (markets, assets, exchanges, chains, macro indicators) and your private vaults, strategies, nodes, and orders - all authenticated with HMAC-SHA256 and paginated throughout.
Base URLhttps://trademire.ai/api/platform-api
Path prefix/v1/{apiKey}
Versionv1
AuthHMAC-SHA256
Rate limitVaries per endpoint
SDK@trademire/platform-api
GETTING STARTED · QUICK START
Quick Start
Three steps to your first signed call: install the SDK, set your credentials, and call markets.list().
1 - Install the SDK
npm install @trademire/platform-api
2 - Configure the client
import { PlatformApiClient } from "@trademire/platform-api";
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
3 - Make your first call
let res = await client.markets.list({ pagination: { page: 1, limit: 10 } });
if (!res.success) {
console.error("Auth or upstream failure:", res.message);
} else {
for (let m of res.items) {
console.log(m.pair, m.lastPrice, m.priceQuote);
}
}
The SDK signs each request, attaches the required headers, and parses the JSON response - you never touch the signing primitives. To call the API without the SDK (cURL, custom HTTP clients, other languages), see Authentication below for the manual signing recipe.
GETTING STARTED · AUTHENTICATION
Authentication
Every Platform API request is signed with HMAC-SHA256 over the raw JSON request body. Three auth headers travel with each request: an API key, the signature, and a timestamp valid for 5 minutes. Public and private endpoints use the same three headers; private endpoints are scoped to the pool your API key is bound to, so a caller-supplied poolKey in the body is ignored.
Each endpoint declares an HTTP method: GET for body-less reads, and POST for body-carrying queries (list, search, OHLC) as well as state-changing writes (set runtime profile, lifecycle actions). An empty or absent body signs as {} (never the empty string), and the /help discovery endpoints are served without authentication headers. The SDK signs and dispatches the documented method automatically; raw HTTP callers must use the verb declared on each endpoint.
What gets signed
// Generate HMAC-SHA256 signature from the raw request body as lowercase hex
signature = HMAC_SHA256(apiSecret, requestBody).toHex()
Only the raw JSON body is signed. Path, {apiKey}, query string, and timestamp are not part of the signed payload. The body must be byte-identical to what you transmit - serialize once, sign that exact string, and send it as the request body.
When you build the body, sort object keys in ascending alphabetical order (canonical JSON). Arrays keep their declared order and undefined values are dropped. The SDK applies this automatically; manual signers must match it byte for byte or the signature will not verify.
Required headers
Name
Required
Description
Content-Type
required
Must be application/json.
X-API-Key
required
Public identifier of the API key issued from the platform dashboard. Never share the matching secret.
X-API-Signature
required
Lowercase hex-encoded HMAC-SHA256 of the raw request body, computed with the API secret as key.
X-API-Timestamp
required
Request creation time in Unix epoch milliseconds. Server rejects timestamps outside a 5-minute drift window (replay protection).
Request URL
Every endpoint follows the same shape:
POST/:path
Every endpoint sits under /v1/{apiKey}. The {apiKey} path component is your public API key (the same value sent in the X-API-Key header) and is not part of the signed payload.
Signing the request
Compute the HMAC over the exact byte sequence of the body you transmit. Pick your language:
import crypto from "crypto";
// 1. Build the request body and per-request metadata
let apiKey = process.env.API_KEY;
let body = JSON.stringify({ pagination: { page: 1, limit: 50 } });
let timestamp = Date.now().toString();
// 2. Sign the raw body with HMAC-SHA256 using your API secret
let signature = crypto
.createHmac("sha256", process.env.API_SECRET)
.update(body)
.digest("hex");
// 3. Send the signed request with all four required auth headers
let res = await fetch(`https://trademire.ai/api/platform-api/${apiKey}/v1/markets/list`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": apiKey,
"X-API-Signature": signature,
"X-API-Timestamp": timestamp,
},
body,
});
For any authentication failure - missing header, malformed signature, expired timestamp, suspended key, blocked IP, or unauthorized category - the server returns the same generic MessageAccessForbidden response. The specific reason is intentionally not surfaced to the caller (prevents credential enumeration and oracle attacks). Inspect your local request before retrying:
Is the body byte-identical to the string you signed? Re-serializing can shift whitespace and key order, both of which will break the hash.
Is your local clock within 5 minutes of UTC? X-API-Timestamp is in milliseconds, not seconds.
Did you sign with the API secret (not the API key)?
Is the signature lowercase hex (0-9a-f)?
Is your IP in your key's allowlist (if you configured one in the dashboard)?
GETTING STARTED · ERRORS
Errors
These error codes apply to every endpoint. Each error response carries a rayId you can quote when contacting support.
Code
Description
MessageAccessForbidden
Returned for any authentication failure.
MessageMissingParameter
A required URL parameter (e.g. :pair on per-market endpoints) is absent, malformed, or fails the alphanumeric / length validation.
MessageRateLimitExceeded
Per-key rate limit for this endpoint has been exceeded. Inspect the Retry-After response header before retrying.
MessageInternalError
An unexpected internal error occurred. The response includes a rayId you can quote when contacting support.
PUBLIC · MARKETS
List Markets
Returns the canonical lean listing of every market currently tracked by the platform. Each entry carries the latest aggregated price across venues, the quote currency the price is denominated in, and a flag indicating whether the market is active. Use the body to apply filtering, sorting, and pagination - per-pair detail (full ticker, listing, limit, profile, OHLC) lives on the sharded /market/:pair/* endpoints.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.getTicker("BTC_USDT");
// 3. Inspect the parsed response
console.log(res);
Response schema
ticker
Field
Type
Description
isActive
boolean
Whether the market is active on the venue.
apiTrading
boolean
Whether API trading is enabled.
lastPrice
number
Last traded price.
highPrice24h
number
Highest trade price in the last 24 hours.
lowPrice24h
number
Lowest trade price in the last 24 hours.
change
number
Absolute price change over 24h (in quote currency).
Returns ticker data for the same trading pair broken out across every venue that lists it - useful for arbitrage, trust-score checks, and routing decisions.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.getTickerExchanges("BTC_USDT");
// 3. Inspect the parsed response
console.log(res);
Response schema
items[]
Each item shares the ticker shape from Get Market Ticker, with the venue identifier surfaced via the exchangeKey field.
Returns the listing-availability shape for a single market - a compact set of flags describing whether the pair is listed, active, openly tradable, and whether margin trading is supported.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.getListing("BTC_USDT");
// 3. Inspect the parsed response
console.log(res);
Returns the sanitized trading limits and fees for a single market: precision, price/quantity bounds, tick sizes, notional bounds, and maker/taker fee rates.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.getLimits("BTC_USDT");
// 3. Inspect the parsed response
console.log(res);
Returns the market profile shape: tags plus the same listing/activity metadata as Get Market Listing. Use this when you want descriptive metadata alongside availability flags in a single call.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.getProfile("BTC_USDT");
// 3. Inspect the parsed response
console.log(res);
Returns OHLC candle series for a single market. Defaults to aggLast (last-trade) candles, with aggVol available for volume candles. Timeframe and time range are passed in the body.
POST/market/:pair/ohlc
AuthHMAC-SHA256Rate limit20 req/min
Body parameters
Name
Type
Required
Description
field
string
optional
One of aggLast (default) or aggVol.
interval
string
optional
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.getOhlc("BTC_USDT", { interval: "5m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
ohlc
Field
Type
Description
pair
string
Canonical market pair key
field
string
Snapshotted field that drove the bins.
interval
string
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
Returns every computed technical indicator of a market from its price candles, built from closed candles only so a reading stays put until the next candle closes. Not every reading is offered on every candle length - a reading that is not offered is left out of the answer, and each reading present names the candles it was built from.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.indicators("BTC_USDT", { interval: "15m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
market-indicators[":pair"]
Field
Type
Description
pair
string
Canonical market pair key
interval
string
Length of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputed
number
Unix time of the calculation moment
changePct_val
number
Percentage change between the first and last candle of the window
changePct_periods
number
Candles used for the change percentage
changePct9_val
number
Percentage change over the last 9 candles
changePct9_periods
number
Candles used for the 9 candle change percentage
changePct12_val
number
Percentage change over the last 12 candles
changePct12_periods
number
Candles used for the 12 candle change percentage
changePct25_val
number
Percentage change over the last 25 candles
changePct25_periods
number
Candles used for the 25 candle change percentage
sma20_val
number
Simple moving average of the candle closes, over 20 candles
sma20_periods
number
Candles used for the 20 candle simple moving average
sma50_val
number
Simple moving average of the candle closes, over 50 candles
sma50_periods
number
Candles used for the 50 candle simple moving average
sma200_val
number
Simple moving average of the candle closes, over 200 candles, the long trend line
sma200_periods
number
Candles used for the 200 candle simple moving average
ema9_val
number
Exponential moving average of the candle closes, over 9 candles
ema9_periods
number
Candles used for the 9 candle exponential moving average
ema21_val
number
Exponential moving average of the candle closes, over 21 candles
ema21_periods
number
Candles used for the 21 candle exponential moving average
ema50_val
number
Exponential moving average of the candle closes, over 50 candles
ema50_periods
number
Candles used for the 50 candle exponential moving average
rsi9_val
number
Fast relative strength index between 0 and 100, over 9 candles
rsi9_periods
number
Candles used for the fast relative strength index
rsi14_val
number
Relative strength index between 0 and 100, over 14 candles
rsi14_periods
number
Candles used for the relative strength index
rsi21_val
number
Slow relative strength index between 0 and 100, over 21 candles
rsi21_periods
number
Candles used for the slow relative strength index
atr7_val
number
Average true range over 7 candles
atr7_periods
number
Candles used for the 7 candle average true range
atr14_val
number
Average true range over 14 candles
atr14_periods
number
Candles used for the 14 candle average true range
atr21_val
number
Average true range over 21 candles
atr21_periods
number
Candles used for the 21 candle average true range
bollinger1sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger1sd_upper
number
Bollinger upper band, the middle band plus one standard deviation
bollinger1sd_lower
number
Bollinger lower band, the middle band minus one standard deviation
bollinger1sd_periods
number
Candles used for the bollinger bands
bollinger2sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger2sd_upper
number
Bollinger upper band, the middle band plus two standard deviations
bollinger2sd_lower
number
Bollinger lower band, the middle band minus two standard deviations
bollinger2sd_periods
number
Candles used for the bollinger bands
bollinger3sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger3sd_upper
number
Bollinger upper band, the middle band plus three standard deviations
bollinger3sd_lower
number
Bollinger lower band, the middle band minus three standard deviations
bollinger3sd_periods
number
Candles used for the bollinger bands
macd_val
number
Moving average convergence divergence line, using 12, 26 and 9 candles
macd_signal
number
Signal line of the convergence divergence indicator
macd_histogram
number
Distance between the convergence divergence line and its signal line
macd_periods
number
Candles used for the convergence divergence indicator
macd535_val
number
Moving average convergence divergence line, using 5, 35 and 5 candles
macd535_signal
number
Signal line of the 5, 35 and 5 convergence divergence indicator
macd535_histogram
number
Distance between the 5, 35 and 5 convergence divergence line and its signal line
macd535_periods
number
Candles used for the 5, 35 and 5 convergence divergence indicator
relativeVolume10_val
number
Latest daily volume reading against the average of the previous 10 readings, where one means the usual pace
relativeVolume10_periods
number
Readings used for the 10 reading relative volume
relativeVolume20_val
number
Latest daily volume reading against the average of the previous 20 readings, where one means the usual pace
relativeVolume20_periods
number
Readings used for the 20 reading relative volume
relativeVolume50_val
number
Latest daily volume reading against the average of the previous 50 readings, where one means the usual pace
relativeVolume50_periods
number
Readings used for the 50 reading relative volume
rollingHigh10_val
number
Highest price seen over the last 10 candles
rollingHigh10_periods
number
Candles used for the 10 candle rolling high
rollingHigh20_val
number
Highest price seen over the last 20 candles
rollingHigh20_periods
number
Candles used for the 20 candle rolling high
rollingHigh55_val
number
Highest price seen over the last 55 candles
rollingHigh55_periods
number
Candles used for the 55 candle rolling high
rollingLow10_val
number
Lowest price seen over the last 10 candles
rollingLow10_periods
number
Candles used for the 10 candle rolling low
rollingLow20_val
number
Lowest price seen over the last 20 candles
rollingLow20_periods
number
Candles used for the 20 candle rolling low
rollingLow55_val
number
Lowest price seen over the last 55 candles
rollingLow55_periods
number
Candles used for the 55 candle rolling low
vwap_val
number
Volume weighted average price over whole days, each day weighted by what it traded
vwap_periods
number
Whole days used for the volume weighted average price
rankPct20_val
number
Share of the last 20 candles that closed at or below the latest one, from 0 to 100
rankPct20_periods
number
Candles used for the 20 candle rank
rankPct50_val
number
Share of the last 50 candles that closed at or below the latest one, from 0 to 100
Returns one computed technical indicator of a market from its price candles, built from closed candles only so a reading stays put until the next candle closes. Not every reading is offered on every candle length - a reading that is not offered is left out of the answer, and each reading present names the candles it was built from.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.indicator("BTC_USDT", "rsi14", { interval: "15m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
market-indicators[":pair"]
Field
Type
Description
pair
string
Canonical market pair key
interval
string
Length of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
Returns a structured JSON map of every endpoint in the Markets category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.markets.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
Canonical lean listing of every asset tracked by the platform - last aggregated price, asset type, and listing status. Filtering, sorting, and pagination are supported.
POST/assets/list
AuthHMAC-SHA256Rate limit15 req/minPagination
Body parameters
Same shape as List Markets: filtering, sorting, pagination. The search term is matched against the asset symbol and name fields.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.assets.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.assets.get("BTC");
// 3. Inspect the parsed response
console.log(res);
Response schema
asset
Field
Type
Description
assetType / isListed
string / bool
Type and listing flag.
lastPrice / priceQuote
number / string
Latest aggregated price and its quote currency.
volume24h / change24h / dominance
number
24h volume, percent change, and market dominance share.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.assets.getProfile("BTC");
// 3. Inspect the parsed response
console.log(res);
Response schema
profile
Field
Type
Description
description
string
Asset description text.
supplyCirculating / supplyTotal / supplyMax
number
Supply figures.
urls
array
Array of { key, value } URL entries (social, web, explorer).
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.assets.getOhlc("BTC", { interval: "5m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
asset-ohlc[":symbol"]
Field
Type
Description
symbol
string
Global asset symbol
interval
string
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
Returns every computed technical indicator of an asset from its price candles, built from closed candles only so a reading stays put until the next candle closes. Not every reading is offered on every candle length - a reading that is not offered is left out of the answer, and each reading present names the candles it was built from.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.assets.indicators("BTC", { interval: "15m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
asset-indicators[":symbol"]
Field
Type
Description
symbol
string
Asset symbol
interval
string
Length of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputed
number
Unix time of the calculation moment
changePct_val
number
Percentage change between the first and last candle of the window
changePct_periods
number
Candles used for the change percentage
changePct9_val
number
Percentage change over the last 9 candles
changePct9_periods
number
Candles used for the 9 candle change percentage
changePct12_val
number
Percentage change over the last 12 candles
changePct12_periods
number
Candles used for the 12 candle change percentage
changePct25_val
number
Percentage change over the last 25 candles
changePct25_periods
number
Candles used for the 25 candle change percentage
sma20_val
number
Simple moving average of the candle closes, over 20 candles
sma20_periods
number
Candles used for the 20 candle simple moving average
sma50_val
number
Simple moving average of the candle closes, over 50 candles
sma50_periods
number
Candles used for the 50 candle simple moving average
sma200_val
number
Simple moving average of the candle closes, over 200 candles, the long trend line
sma200_periods
number
Candles used for the 200 candle simple moving average
ema9_val
number
Exponential moving average of the candle closes, over 9 candles
ema9_periods
number
Candles used for the 9 candle exponential moving average
ema21_val
number
Exponential moving average of the candle closes, over 21 candles
ema21_periods
number
Candles used for the 21 candle exponential moving average
ema50_val
number
Exponential moving average of the candle closes, over 50 candles
ema50_periods
number
Candles used for the 50 candle exponential moving average
rsi9_val
number
Fast relative strength index between 0 and 100, over 9 candles
rsi9_periods
number
Candles used for the fast relative strength index
rsi14_val
number
Relative strength index between 0 and 100, over 14 candles
rsi14_periods
number
Candles used for the relative strength index
rsi21_val
number
Slow relative strength index between 0 and 100, over 21 candles
rsi21_periods
number
Candles used for the slow relative strength index
atr7_val
number
Average true range over 7 candles
atr7_periods
number
Candles used for the 7 candle average true range
atr14_val
number
Average true range over 14 candles
atr14_periods
number
Candles used for the 14 candle average true range
atr21_val
number
Average true range over 21 candles
atr21_periods
number
Candles used for the 21 candle average true range
bollinger1sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger1sd_upper
number
Bollinger upper band, the middle band plus one standard deviation
bollinger1sd_lower
number
Bollinger lower band, the middle band minus one standard deviation
bollinger1sd_periods
number
Candles used for the bollinger bands
bollinger2sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger2sd_upper
number
Bollinger upper band, the middle band plus two standard deviations
bollinger2sd_lower
number
Bollinger lower band, the middle band minus two standard deviations
bollinger2sd_periods
number
Candles used for the bollinger bands
bollinger3sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger3sd_upper
number
Bollinger upper band, the middle band plus three standard deviations
bollinger3sd_lower
number
Bollinger lower band, the middle band minus three standard deviations
bollinger3sd_periods
number
Candles used for the bollinger bands
macd_val
number
Moving average convergence divergence line, using 12, 26 and 9 candles
macd_signal
number
Signal line of the convergence divergence indicator
macd_histogram
number
Distance between the convergence divergence line and its signal line
macd_periods
number
Candles used for the convergence divergence indicator
macd535_val
number
Moving average convergence divergence line, using 5, 35 and 5 candles
macd535_signal
number
Signal line of the 5, 35 and 5 convergence divergence indicator
macd535_histogram
number
Distance between the 5, 35 and 5 convergence divergence line and its signal line
macd535_periods
number
Candles used for the 5, 35 and 5 convergence divergence indicator
relativeVolume10_val
number
Latest daily volume reading against the average of the previous 10 readings, where one means the usual pace
relativeVolume10_periods
number
Readings used for the 10 reading relative volume
relativeVolume20_val
number
Latest daily volume reading against the average of the previous 20 readings, where one means the usual pace
relativeVolume20_periods
number
Readings used for the 20 reading relative volume
relativeVolume50_val
number
Latest daily volume reading against the average of the previous 50 readings, where one means the usual pace
relativeVolume50_periods
number
Readings used for the 50 reading relative volume
rollingHigh10_val
number
Highest price seen over the last 10 candles
rollingHigh10_periods
number
Candles used for the 10 candle rolling high
rollingHigh20_val
number
Highest price seen over the last 20 candles
rollingHigh20_periods
number
Candles used for the 20 candle rolling high
rollingHigh55_val
number
Highest price seen over the last 55 candles
rollingHigh55_periods
number
Candles used for the 55 candle rolling high
rollingLow10_val
number
Lowest price seen over the last 10 candles
rollingLow10_periods
number
Candles used for the 10 candle rolling low
rollingLow20_val
number
Lowest price seen over the last 20 candles
rollingLow20_periods
number
Candles used for the 20 candle rolling low
rollingLow55_val
number
Lowest price seen over the last 55 candles
rollingLow55_periods
number
Candles used for the 55 candle rolling low
vwap_val
number
Volume weighted average price over whole days, each day weighted by what it traded
vwap_periods
number
Whole days used for the volume weighted average price
rankPct20_val
number
Share of the last 20 candles that closed at or below the latest one, from 0 to 100
rankPct20_periods
number
Candles used for the 20 candle rank
rankPct50_val
number
Share of the last 50 candles that closed at or below the latest one, from 0 to 100
Returns one computed technical indicator of an asset from its price candles, built from closed candles only so a reading stays put until the next candle closes. Not every reading is offered on every candle length - a reading that is not offered is left out of the answer, and each reading present names the candles it was built from.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.assets.indicator("BTC", "rsi14", { interval: "15m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
asset-indicators[":symbol"]
Field
Type
Description
symbol
string
Asset symbol
interval
string
Length of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
Returns a structured JSON map of every endpoint in the Assets category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.assets.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
Returns all tracked exchanges with unified listing data: number of assets and markets, 24h volume, trust score and rank, country, year established, capabilities, and dominance.
POST/exchanges/list
AuthHMAC-SHA256Rate limit15 req/minPagination
Body parameters
Name
Type
Required
Description
filtering
object
optional
Filter object: { term?: string }. Free-text term matched against the listing.
sorting
object
optional
Sort object: { field, direction }. Direction is asc or desc.
pagination
object
optional
Page-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.get("binance");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getProfile("binance");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getOhlc("binance", { interval: "5m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
exchange-ohlc[":exchangeKey"]
Field
Type
Description
exchangeKey
string
Exchange short key
field
string
Snapshotted field: aggVol (default) or aggDom
interval
string
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.listMarkets("binance", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.listMarketsTickers("binance", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
Response schema
items[]
Each item carries marketKey, localPair, baseSymbol, quoteSymbol, lastPrice, highPrice24h, lowPrice24h, change, volume, bidPrice, askPrice, spread, and isActive.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getMarketsOhlc("binance", { pagination: { page: 1, limit: 50 }, interval: "5m" });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.listMarketsLimits("binance", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getMarket("binance", "BTC_USDT");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getMarketTicker("binance", "BTC_USDT");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getMarketProfile("binance", "BTC_USDT");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getMarketOhlc("binance", "BTC_USDT", { interval: "5m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
exchange-market-ohlc[":marketKey"]
Field
Type
Description
exchangeKey
string
Exchange short key
marketKey
string
Global pair symbol
interval
string
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.listAssets("binance", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.listAssetsTickers("binance", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.listAssetsLimits("binance", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getAsset("binance", "BTC");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getAssetProfile("binance", "BTC");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getAssetOhlc("binance", "BTC", { interval: "5m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
exchange-asset-ohlc[":assetKey"]
Field
Type
Description
exchangeKey
string
Exchange short key
assetKey
string
Global asset symbol
interval
string
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
Returns every computed technical indicator of an asset on one exchange from its price candles, built from closed candles only so a reading stays put until the next candle closes. Not every reading is offered on every candle length - a reading that is not offered is left out of the answer, and each reading present names the candles it was built from.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getAssetIndicators("binance", "BTC", { interval: "15m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
exchange-asset-indicators[":assetKey"]
Field
Type
Description
exchangeKey
string
Exchange short key
assetKey
string
Global asset symbol
interval
string
Length of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputed
number
Unix time of the calculation moment
changePct_val
number
Percentage change between the first and last candle of the window
changePct_periods
number
Candles used for the change percentage
changePct9_val
number
Percentage change over the last 9 candles
changePct9_periods
number
Candles used for the 9 candle change percentage
changePct12_val
number
Percentage change over the last 12 candles
changePct12_periods
number
Candles used for the 12 candle change percentage
changePct25_val
number
Percentage change over the last 25 candles
changePct25_periods
number
Candles used for the 25 candle change percentage
sma20_val
number
Simple moving average of the candle closes, over 20 candles
sma20_periods
number
Candles used for the 20 candle simple moving average
sma50_val
number
Simple moving average of the candle closes, over 50 candles
sma50_periods
number
Candles used for the 50 candle simple moving average
sma200_val
number
Simple moving average of the candle closes, over 200 candles, the long trend line
sma200_periods
number
Candles used for the 200 candle simple moving average
ema9_val
number
Exponential moving average of the candle closes, over 9 candles
ema9_periods
number
Candles used for the 9 candle exponential moving average
ema21_val
number
Exponential moving average of the candle closes, over 21 candles
ema21_periods
number
Candles used for the 21 candle exponential moving average
ema50_val
number
Exponential moving average of the candle closes, over 50 candles
ema50_periods
number
Candles used for the 50 candle exponential moving average
rsi9_val
number
Fast relative strength index between 0 and 100, over 9 candles
rsi9_periods
number
Candles used for the fast relative strength index
rsi14_val
number
Relative strength index between 0 and 100, over 14 candles
rsi14_periods
number
Candles used for the relative strength index
rsi21_val
number
Slow relative strength index between 0 and 100, over 21 candles
rsi21_periods
number
Candles used for the slow relative strength index
atr7_val
number
Average true range over 7 candles
atr7_periods
number
Candles used for the 7 candle average true range
atr14_val
number
Average true range over 14 candles
atr14_periods
number
Candles used for the 14 candle average true range
atr21_val
number
Average true range over 21 candles
atr21_periods
number
Candles used for the 21 candle average true range
bollinger1sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger1sd_upper
number
Bollinger upper band, the middle band plus one standard deviation
bollinger1sd_lower
number
Bollinger lower band, the middle band minus one standard deviation
bollinger1sd_periods
number
Candles used for the bollinger bands
bollinger2sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger2sd_upper
number
Bollinger upper band, the middle band plus two standard deviations
bollinger2sd_lower
number
Bollinger lower band, the middle band minus two standard deviations
bollinger2sd_periods
number
Candles used for the bollinger bands
bollinger3sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger3sd_upper
number
Bollinger upper band, the middle band plus three standard deviations
bollinger3sd_lower
number
Bollinger lower band, the middle band minus three standard deviations
bollinger3sd_periods
number
Candles used for the bollinger bands
macd_val
number
Moving average convergence divergence line, using 12, 26 and 9 candles
macd_signal
number
Signal line of the convergence divergence indicator
macd_histogram
number
Distance between the convergence divergence line and its signal line
macd_periods
number
Candles used for the convergence divergence indicator
macd535_val
number
Moving average convergence divergence line, using 5, 35 and 5 candles
macd535_signal
number
Signal line of the 5, 35 and 5 convergence divergence indicator
macd535_histogram
number
Distance between the 5, 35 and 5 convergence divergence line and its signal line
macd535_periods
number
Candles used for the 5, 35 and 5 convergence divergence indicator
relativeVolume10_val
number
Latest daily volume reading against the average of the previous 10 readings, where one means the usual pace
relativeVolume10_periods
number
Readings used for the 10 reading relative volume
relativeVolume20_val
number
Latest daily volume reading against the average of the previous 20 readings, where one means the usual pace
relativeVolume20_periods
number
Readings used for the 20 reading relative volume
relativeVolume50_val
number
Latest daily volume reading against the average of the previous 50 readings, where one means the usual pace
relativeVolume50_periods
number
Readings used for the 50 reading relative volume
rollingHigh10_val
number
Highest price seen over the last 10 candles
rollingHigh10_periods
number
Candles used for the 10 candle rolling high
rollingHigh20_val
number
Highest price seen over the last 20 candles
rollingHigh20_periods
number
Candles used for the 20 candle rolling high
rollingHigh55_val
number
Highest price seen over the last 55 candles
rollingHigh55_periods
number
Candles used for the 55 candle rolling high
rollingLow10_val
number
Lowest price seen over the last 10 candles
rollingLow10_periods
number
Candles used for the 10 candle rolling low
rollingLow20_val
number
Lowest price seen over the last 20 candles
rollingLow20_periods
number
Candles used for the 20 candle rolling low
rollingLow55_val
number
Lowest price seen over the last 55 candles
rollingLow55_periods
number
Candles used for the 55 candle rolling low
vwap_val
number
Volume weighted average price over whole days, each day weighted by what it traded
vwap_periods
number
Whole days used for the volume weighted average price
rankPct20_val
number
Share of the last 20 candles that closed at or below the latest one, from 0 to 100
rankPct20_periods
number
Candles used for the 20 candle rank
rankPct50_val
number
Share of the last 50 candles that closed at or below the latest one, from 0 to 100
Returns one computed technical indicator of an asset on one exchange from its price candles, built from closed candles only so a reading stays put until the next candle closes. Not every reading is offered on every candle length - a reading that is not offered is left out of the answer, and each reading present names the candles it was built from.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getAssetIndicator("binance", "BTC", "rsi14", { interval: "15m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
exchange-asset-indicators[":assetKey"]
Field
Type
Description
exchangeKey
string
Exchange short key
assetKey
string
Global asset symbol
interval
string
Length of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
Returns every computed technical indicator of a market on one exchange from its price candles, built from closed candles only so a reading stays put until the next candle closes. Not every reading is offered on every candle length - a reading that is not offered is left out of the answer, and each reading present names the candles it was built from.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getMarketIndicators("binance", "BTC_USDT", { interval: "15m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
exchange-market-indicators[":marketKey"]
Field
Type
Description
exchangeKey
string
Exchange short key
marketKey
string
Global market pair key
interval
string
Length of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputed
number
Unix time of the calculation moment
changePct_val
number
Percentage change between the first and last candle of the window
changePct_periods
number
Candles used for the change percentage
changePct9_val
number
Percentage change over the last 9 candles
changePct9_periods
number
Candles used for the 9 candle change percentage
changePct12_val
number
Percentage change over the last 12 candles
changePct12_periods
number
Candles used for the 12 candle change percentage
changePct25_val
number
Percentage change over the last 25 candles
changePct25_periods
number
Candles used for the 25 candle change percentage
sma20_val
number
Simple moving average of the candle closes, over 20 candles
sma20_periods
number
Candles used for the 20 candle simple moving average
sma50_val
number
Simple moving average of the candle closes, over 50 candles
sma50_periods
number
Candles used for the 50 candle simple moving average
sma200_val
number
Simple moving average of the candle closes, over 200 candles, the long trend line
sma200_periods
number
Candles used for the 200 candle simple moving average
ema9_val
number
Exponential moving average of the candle closes, over 9 candles
ema9_periods
number
Candles used for the 9 candle exponential moving average
ema21_val
number
Exponential moving average of the candle closes, over 21 candles
ema21_periods
number
Candles used for the 21 candle exponential moving average
ema50_val
number
Exponential moving average of the candle closes, over 50 candles
ema50_periods
number
Candles used for the 50 candle exponential moving average
rsi9_val
number
Fast relative strength index between 0 and 100, over 9 candles
rsi9_periods
number
Candles used for the fast relative strength index
rsi14_val
number
Relative strength index between 0 and 100, over 14 candles
rsi14_periods
number
Candles used for the relative strength index
rsi21_val
number
Slow relative strength index between 0 and 100, over 21 candles
rsi21_periods
number
Candles used for the slow relative strength index
atr7_val
number
Average true range over 7 candles
atr7_periods
number
Candles used for the 7 candle average true range
atr14_val
number
Average true range over 14 candles
atr14_periods
number
Candles used for the 14 candle average true range
atr21_val
number
Average true range over 21 candles
atr21_periods
number
Candles used for the 21 candle average true range
bollinger1sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger1sd_upper
number
Bollinger upper band, the middle band plus one standard deviation
bollinger1sd_lower
number
Bollinger lower band, the middle band minus one standard deviation
bollinger1sd_periods
number
Candles used for the bollinger bands
bollinger2sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger2sd_upper
number
Bollinger upper band, the middle band plus two standard deviations
bollinger2sd_lower
number
Bollinger lower band, the middle band minus two standard deviations
bollinger2sd_periods
number
Candles used for the bollinger bands
bollinger3sd_val
number
Bollinger middle band over 20 candles, the simple average of the recent closes
bollinger3sd_upper
number
Bollinger upper band, the middle band plus three standard deviations
bollinger3sd_lower
number
Bollinger lower band, the middle band minus three standard deviations
bollinger3sd_periods
number
Candles used for the bollinger bands
macd_val
number
Moving average convergence divergence line, using 12, 26 and 9 candles
macd_signal
number
Signal line of the convergence divergence indicator
macd_histogram
number
Distance between the convergence divergence line and its signal line
macd_periods
number
Candles used for the convergence divergence indicator
macd535_val
number
Moving average convergence divergence line, using 5, 35 and 5 candles
macd535_signal
number
Signal line of the 5, 35 and 5 convergence divergence indicator
macd535_histogram
number
Distance between the 5, 35 and 5 convergence divergence line and its signal line
macd535_periods
number
Candles used for the 5, 35 and 5 convergence divergence indicator
relativeVolume10_val
number
Latest daily volume reading against the average of the previous 10 readings, where one means the usual pace
relativeVolume10_periods
number
Readings used for the 10 reading relative volume
relativeVolume20_val
number
Latest daily volume reading against the average of the previous 20 readings, where one means the usual pace
relativeVolume20_periods
number
Readings used for the 20 reading relative volume
relativeVolume50_val
number
Latest daily volume reading against the average of the previous 50 readings, where one means the usual pace
relativeVolume50_periods
number
Readings used for the 50 reading relative volume
rollingHigh10_val
number
Highest price seen over the last 10 candles
rollingHigh10_periods
number
Candles used for the 10 candle rolling high
rollingHigh20_val
number
Highest price seen over the last 20 candles
rollingHigh20_periods
number
Candles used for the 20 candle rolling high
rollingHigh55_val
number
Highest price seen over the last 55 candles
rollingHigh55_periods
number
Candles used for the 55 candle rolling high
rollingLow10_val
number
Lowest price seen over the last 10 candles
rollingLow10_periods
number
Candles used for the 10 candle rolling low
rollingLow20_val
number
Lowest price seen over the last 20 candles
rollingLow20_periods
number
Candles used for the 20 candle rolling low
rollingLow55_val
number
Lowest price seen over the last 55 candles
rollingLow55_periods
number
Candles used for the 55 candle rolling low
vwap_val
number
Volume weighted average price over whole days, each day weighted by what it traded
vwap_periods
number
Whole days used for the volume weighted average price
rankPct20_val
number
Share of the last 20 candles that closed at or below the latest one, from 0 to 100
rankPct20_periods
number
Candles used for the 20 candle rank
rankPct50_val
number
Share of the last 50 candles that closed at or below the latest one, from 0 to 100
Returns one computed technical indicator of a market on one exchange from its price candles, built from closed candles only so a reading stays put until the next candle closes. Not every reading is offered on every candle length - a reading that is not offered is left out of the answer, and each reading present names the candles it was built from.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.getMarketIndicator("binance", "BTC_USDT", "rsi14", { interval: "15m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
exchange-market-indicators[":marketKey"]
Field
Type
Description
exchangeKey
string
Exchange short key
marketKey
string
Global market pair key
interval
string
Length of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
Returns a structured JSON map of every endpoint in the Exchanges category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.exchanges.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.get("ethereum");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.getProfile("ethereum");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.listGasPrices();
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.getGasPrice("ethereum");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.getGasOhlc("ethereum", { interval: "5m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
chain-gas-ohlc[":chainId"]
Field
Type
Description
chainKey
string
Chain short key (e.g. eth)
interval
string
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
Returns the token list for a specific chain, including ERC-20-style metadata. Filtering, sorting, and pagination supported.
POST/chain/:chainId/tokens
AuthHMAC-SHA256Rate limit10 req/minPagination
Body parameters
Name
Type
Required
Description
filtering
object
optional
Filter object: { term?: string }. Free-text term matched against the listing.
sorting
object
optional
Sort object: { field, direction }. Direction is asc or desc.
pagination
object
optional
Page-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.
Related endpoints
Single token: POST /v1/chain/:chainId/token/:tokenAddress
Holders: POST /v1/chain/:chainId/token/:tokenAddress/holders
Transfers: POST /v1/chain/:chainId/token/:tokenAddress/transfers
Wallet portfolio: POST /v1/chain/:chainId/wallet/:walletAddress/portfolio
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.listTokens("ethereum", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.getToken("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.listTokenHolders("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.getTokenHolder("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.listTokenTransfers("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.getTokenTransfer("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0x1234abcd5678ef901234567890abcdef1234567890abcdef1234567890abcdef");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.getWalletPortfolio("ethereum", "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.getWalletBalance("ethereum", "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48");
// 3. Inspect the parsed response
console.log(res);
Returns a structured JSON map of every endpoint in the Chains category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.chains.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
Returns every macro indicator type tracked by the platform (e.g. reference rates, volatility indices). Use the returned macroType keys with the values and OHLC endpoints below.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.macro.listTypes();
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.macro.listValues("policy_rate", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.macro.getValue("policy_rate", { country: "YOUR_COUNTRY" });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.macro.getOhlc("policy_rate", { interval: "5m", country: "TR" });
// 3. Inspect the parsed response
console.log(res);
Response schema
macro-ohlc[":macroType"]
Field
Type
Description
macroType
string
Macro type the series belongs to
country
string
Country code the series belongs to
summary
object
Aggregate change summary over the window
interval
string
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
series
array
OHLC bars: {tOpen, tClose, open, high, low, close}. For sparse macro observations the bar is degenerate (open = high = low = close = value).
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.macro.listIndexes({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
Response schema
macro-index-list[":indexKey"]
Field
Type
Description
indexKey
string
Unique index key
name
string
Human readable index name
lastValue
number
Latest index value
change24h
number
Move since the previous reading, in index points on a bounded scale and as a percentage otherwise
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.macro.getIndex("fearGreed");
// 3. Inspect the parsed response
console.log(res);
Response schema
macro-index-get[":indexKey"]
Field
Type
Description
indexKey
string
Unique index key
name
string
Human readable index name
description
string
What the index measures and how to read it
methodology
string
How the index is built: equal weight, market cap weight, or external when it is published by another party and read as is
source
string
Publisher an externally sourced index is credited to, absent when the platform computes the index itself
lastValue
number
Latest index value
change24h
number
Move since the previous reading, in index points on a bounded scale and as a percentage otherwise. Measured against the last available reading, so a skipped day is not read as no change
nrOfConstituents
number
Number of assets composing the index, absent for indexes that are not built from a basket
tComputed
number
Unix time the latest value last moved, so a source that went quiet shows as stale rather than freshly published
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.macro.getIndexOhlc("fearGreed", { interval: "5m" });
// 3. Inspect the parsed response
console.log(res);
Response schema
macro-index-ohlc[":indexKey"]
Field
Type
Description
indexKey
string
Unique index key
interval
string
Length of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
series
array
Sorted OHLC bins: { tOpen, tClose, open, high, low, close }. History is recorded from the moment an index starts being tracked, so the longer candles fill in over time rather than reaching back before that point
Returns a structured JSON map of every endpoint in the Macro category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.macro.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.pools.directives.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
Response schema
directive-value[":directiveKey"]
Field
Type
Description
directiveKey
string
Short name the pool gave this directive
kind
number
Which kind of control this directive is
raw
object
The value as it is stored, wrapped so any kind of value fits
entries
object
The named entries of a directive that holds a set, such as one reading per asset. Name the entry to read one of them; empty for every other kind of directive
number
number
The value as a plain number, when the directive holds one
text
string
The value written out as a short line of text
hash
string
Fingerprint of the current value, quoted back on a write so nobody is overwritten
updatedOn
number
When the value last changed, as a stamp
updatedVia
number
Which door the last change came through - the browser, this api, an assistant, or the platform itself
The kind decides which field carries a usable value. Switch 10 answers 1 or 0 in number and its on or off label in text; slider 20 and number 30 answer the figure in number and the figure with its unit in text; text 40 and select 50 answer only text, and a select answers the label of the choice rather than its key; map 60 answers its named entries in entries, with text holding only a short summary of the first few. updatedVia says which door the change came through - 10 the browser, 20 this interface, 30 an assistant, 40 the platform itself. A directive the pool never opened for reading is left out of the listing entirely. For how each one is designed, see List Directive Definitions.
PRIVATE · POOLS
List Directive Definitions
How every directive a pool exposes is designed. A design changes very rarely, so this is worth remembering rather than asking again.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.pools.directives.listDefs({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
Response schema
directive-definition[":directiveKey"]
Field
Type
Description
directiveKey
string
Short name the pool gave this directive
kind
number
Which kind of control this directive is
label
string
Readable name shown for the directive
description
string
What the directive is for, in the words of whoever created it
details
object
How the directive is defined - its bounds, steps, choices or named entries
allowExternalWrite
boolean
Whether the owner of the directive lets an outside caller change its value
updatedOn
number
When the definition last changed, as a stamp
relPoolKey
string
The pool this directive belongs to
Response Example
200 OKAPPLICATION/JSON
{
"success": true,
"items": [
{
"directiveKey": "greed_xckdf1",
"kind": 20,
"label": "Risk Appetite",
"description": "How much risk the pool is willing to carry right now",
"details": {
"kind": 20,
"label": "Risk Appetite",
"description": "How much risk the pool is willing to carry right now",
"icon": "pace",
"defSlider": {
"min": 0,
"max": 100,
"step": 1,
"valUnit": "%",
"valDefault": 50
}
},
"raw": { "v": 35 },
"entries": {},
"number": 35,
"text": "35%",
"hash": "b70e4d2c8f1a63950dc7e21b845f3a06c9d18e47b2306fa5e8c14d97b0532fae",
"allowExternalWrite": true,
"updatedOn": 1756555200000,
"updatedVia": 20,
"relPoolKey": "pl-9df31a"
}
],
"pagination": {
"currentPage": 1,
"totalPages": 1,
"pageSize": 50,
"totalRows": 1
}
}
The shape of details follows the kind. A switch carries defSwitch with its default and its two labels; a slider carries defSlider with min, max, step and valUnit; a number carries defNumber; a text carries defText with maxLength and an optional pattern; a select carries defSelect with its declared options; and a map carries defMap with keyMaxLength, maxEntries, its valKind and, for a choice-valued map, its valOptions. Only one of the six is ever present. A design changes very rarely, so remember this answer rather than asking for it every round - the current value belongs to List Directive Values, which is the address to poll. Note that updatedOn here is when the design last changed, not the value.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.pools.directives.get("greed_xckdf1");
// 3. Inspect the parsed response
console.log(res);
Response schema
directive-value[":directiveKey"]
Field
Type
Description
directiveKey
string
Short name the pool gave this directive
kind
number
Which kind of control this directive is
raw
object
The value as it is stored, wrapped so any kind of value fits
entries
object
The named entries of a directive that holds a set, such as one reading per asset. Name the entry to read one of them; empty for every other kind of directive
number
number
The value as a plain number, when the directive holds one
text
string
The value written out as a short line of text
hash
string
Fingerprint of the current value, quoted back on a write so nobody is overwritten
updatedOn
number
When the value last changed, as a stamp
updatedVia
number
Which door the last change came through - the browser, this api, an assistant, or the platform itself
A directive the pool never opened for reading answers exactly like one that does not exist - success: false with isEntityNotFound - so no caller can map a pool's directives by comparing failures. Carry the hash into Set Directive Value as expectedHash and a change somebody else made in the meantime is reported instead of being overwritten.
PRIVATE · POOLS
Get Directive Definition
Returns how one directive is designed - its bounds, steps, choices or named entries, and whether an outside caller may change it.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.pools.directives.getDef("greed_xckdf1");
// 3. Inspect the parsed response
console.log(res);
Response schema
directive-definition[":directiveKey"]
Field
Type
Description
directiveKey
string
Short name the pool gave this directive
kind
number
Which kind of control this directive is
label
string
Readable name shown for the directive
description
string
What the directive is for, in the words of whoever created it
details
object
How the directive is defined - its bounds, steps, choices or named entries
allowExternalWrite
boolean
Whether the owner of the directive lets an outside caller change its value
Read allowExternalWrite before trying to write. It is false here, so Set Directive Value on this directive is refused with isPermissionDenied however the credential is scoped. The bounds in details are what a value is checked against: a map entry has to match keyPattern and be one of valOptions, and the whole set has to stay within maxEntries.
PRIVATE · POOLS
List Directive Changes
List of the recorded changes of one directive, newest first, with who made each one.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.pools.directives.listRevs("greed_xckdf1", { pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
Response schema
directive-revision[":directiveKey"]
Field
Type
Description
directiveKey
string
Short name the pool gave this directive
revNr
number
Where this change sits in the trail of the directive, counting up
revKind
number
What the change was about - a new directive, a new value, a new definition or a removal
raw
object
The value this change stored, as it is kept
number
number
The value this change stored, as a plain number
entries
object
The named entries of a directive that holds a set, such as one reading per asset. Name the entry to read one of them; empty for every other kind of directive
text
string
The value this change stored, written out as text
changedVia
number
Which door the change came through, such as the browser or this interface
changedBy
string
The person the change is credited to, when there is one
changedOn
number
When the change was recorded, as a stamp
changeNote
string
The reason given for the change, when one was given
revKind says what the change was about - 10 the directive being created, 20 a new value, 30 a new design, 40 a removal. Newest first. A trail is kept to the last 500 changes of a directive, so a busy directive loses its oldest entries. The person credited in changedBy is present only when a change had one behind it, so a change made by the platform itself carries none. Neither the address a change came from nor the client that made it is ever published here.
PRIVATE · POOLS
Set Directive Value
Stores a new value for one directive. Quote the fingerprint of the value you read as expectedHash and a change made by somebody else is reported instead of being overwritten.
Directive name chosen by the pool (e.g. greed_xckdf1, kill_switch).
Body parameters
Name
Type
Required
Description
value
any
required
The value to store. Its shape follows the kind of the directive - a yes or no, a number, a line of text, one of the declared choices, or a set of named entries.
expectedHash
string
optional
Fingerprint of the version you read, quoted back so a change somebody else made is reported instead of overwritten.
note
string
optional
Reason recorded beside the change, up to 256 characters.
Request Example
cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/pool/directive/greed_xckdf1/set" \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-H "X-API-Signature: $SIG" \
-H "X-API-Timestamp: $TS" \
--data '{"value":35,"expectedHash":"$HASH","note":"Trimmed ahead of the rate decision"}'
Node.js
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.pools.directives.set("greed_xckdf1", 35);
// 3. Inspect the parsed response
console.log(res);
Response schema
Field
Type
Description
success
boolean
Whether the value was stored.
isUnchanged
boolean
Present and true when the value sent was the one already stored. Nothing is written and no change is recorded.
item
object
The stored value afterwards, in the same shape as Get Directive Value - including the new hash to carry into the next write.
isConflict
boolean
The value moved since the expectedHash you quoted was read. Nothing was written; read it again and decide.
isPermissionDenied
boolean
The directive exists and is readable, but its owner has not opened it for outside writing.
isInvalidValue
boolean
The value does not fit what the directive accepts. message says why.
And the same call refused, because the value moved after the expectedHash was read:
200 OKAPPLICATION/JSON
{
"success": false,
"isConflict": true,
"message": "The value changed since it was read, please look again"
}
A refusal is an ordinary answer, not an error. The call still returns 200 with success: false and one of the three flags above, so a caller reads the flag rather than a status code. expectedHash is optional and is how you avoid overwriting somebody: quote the hash you read, and a value that moved in between is reported instead. Sending the value that is already stored is not a refusal - it answers isUnchanged, writes nothing and leaves the trail alone. The shape value takes follows the directive's kind, so check its design at Get Directive Definition first: true or false for a switch, a figure inside the declared bounds and on the declared step for a slider or a number, a line of text within its length for a text, one of the declared option keys for a select, and a plain object of named entries for a map. A value that fits none of these is refused with isInvalidValue rather than being rounded into shape.
PRIVATE · POOLS
Set Directive Values
Stores a new value for several directives in one call. The items bag holds one entry per directive key, and each entry is an object carrying value, and optionally expectedHash and note.
POST/pool/directives/set
AuthHMAC + pool-bound keyRate limit10 req/min
Body parameters
Name
Type
Required
Description
items
object
required
One entry per directive, keyed by its name: { "<directiveKey>": { "value": ..., "expectedHash": "...", "note": "..." } }. Only value is needed; expectedHash and note are optional per entry, exactly as on the single write. Up to 20 entries in one call.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.pools.directives.setMany({ "greed_xckdf1": { value: 35 }, "kill_switch": { value: false, note: "Halting for maintenance" } });
// 3. Inspect the parsed response
console.log(res);
Response schema
Field
Type
Description
success
boolean
Whether the call itself was accepted. It is true even when some rows were refused - each row carries its own outcome.
items
object
One outcome per directive key you sent, keyed the same way.
items[key].success
boolean
Whether that row was stored.
items[key].isUnchanged
boolean
That row already held the value sent, so nothing was written.
items[key].item
object
The stored value of that row afterwards, in the same shape as Get Directive Value.
items[key].isEntityNotFound
boolean
No such directive, or one the pool never opened for reading.
items[key].isConflict
boolean
That row quoted an expectedHash that no longer matches.
items[key].isPermissionDenied
boolean
That directive is not open to outside writing.
items[key].isInvalidValue
boolean
That value does not fit what the directive accepts.
Rows are settled one at a time and a refused row never stops the rest. That is why the call answers success: true while a row inside it failed - read each row's own success rather than the one at the top. A row sent without a value key is refused as an invalid value rather than being treated as a request to clear the directive. The allowance is 10 calls a minute whether you send one directive or twenty, so a batch is the cheaper way to move several at once.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.pools.directives.help();
// 3. Inspect the parsed response
console.log(res);
Response schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
Response Example
200 OKAPPLICATION/JSON
{
"success": true,
"category": "pools",
"help": {
"paths": {
"/pool/directives/list": {
"method": "ALL",
"description": "Current value of every directive a pool exposes, or only of the ones named. This is the address a strategy asks repeatedly, so it stays small",
"rateLimit": 60,
"nominalRefreshSecs": 5,
"params": {
"required": [],
"optional": ["directiveKeys", "filtering", "sorting", "pagination"]
},
"isListing": true,
"fieldGroups": ["directive-value[\":directiveKey\"]"]
}
},
"fieldGroups": {
"directive-value[\":directiveKey\"]": {
"number": {
"type": "number",
"description": "The value as a plain number, when the directive holds one",
"supportsMetrics": true,
"canonicalPath": "pools.directiveValue.number",
"supportsVenue": false,
"params": [
{
"name": "directiveKey",
"kind": "selector",
"isRequired": false,
"description": "Short name the pool gave this directive"
}
]
}
}
}
}
}
This is the one pools address served without authentication, like every other help map, so it can be read before a key exists. It only describes the category - it never names a pool or any of its directives. The answer is trimmed above: the real one carries all eight paths and all three field groups. Since a design changes very rarely, read it once at start-up rather than each round.
Strategy metric names
A strategy running on the platform can read a directive as a metric instead of calling these addresses itself. Every name below is published in the help map above, alongside the reduction it needs: a number is used as it stands, a line of text has to be reduced to one, and a grouped value has to be routed into first. The directive is named on the metric itself, since each of the three bundles is indexed by it.
Metric name
Type
Description
pools.directiveValue.number
number
The value as a plain number. A switch reads as one or zero, so a strategy can gate on it directly.
pools.directiveValue.text
string
The value in its readable form - a choice shows its name and a switch its on or off wording. Reduce it with equals, oneOf, length or toNumber, and remember a name can be reworded.
pools.directiveValue.entries
object
The named entries of a directive that holds a set. Route into one by name, such as the entry for an asset.
pools.directiveValue.raw
object
The stored value in its wrapper. Route through the wrapper key to reach it, which is the way to read the key behind a choice rather than its name.
pools.directiveValue.hash
string
Fingerprint of the current value.
pools.directiveValue.updatedOn
number
When the value last changed, as a stamp in milliseconds. Useful for ignoring an instruction nobody has touched for too long.
pools.directiveValue.updatedVia
number
Which door the last change came through.
pools.directiveDefinition.label
string
Readable name of the directive.
pools.directiveDefinition.description
string
What the directive is for.
pools.directiveDefinition.details
object
How the directive is defined - its bounds, steps, choices or named entries.
pools.directiveDefinition.allowExternalWrite
boolean
Whether an outside caller may change the value.
pools.directiveDefinition.updatedOn
number
When the definition last changed, as a stamp in milliseconds.
pools.directiveRevision.revNr
number
Where a change sits in the trail of the directive, counting up.
pools.directiveRevision.revKind
number
What the change was about.
pools.directiveRevision.number
number
The value a change stored, as a plain number.
pools.directiveRevision.text
string
The value a change stored, as text.
pools.directiveRevision.entries
object
The named entries a change stored.
pools.directiveRevision.raw
object
The value a change stored, in its wrapper.
pools.directiveRevision.changedVia
number
Which door a change came through.
pools.directiveRevision.changedBy
string
The person a change is credited to.
pools.directiveRevision.changedOn
number
When a change was recorded, as a stamp in milliseconds.
pools.directiveRevision.changeNote
string
The reason given for a change.
Two values the answers carry are not offered as metric names. The name of a directive is the pool's own choice, so reading it back would only return what the caller supplied; and the kind of a directive says how its value should be read rather than being a reading itself.
PRIVATE · VAULTS
List Vaults
Returns the lean summary list of every vault belonging to a pool: identifier, name, and status. Sorting, search, and pagination supported.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.vaults.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.vaults.getSummary("vlt-abc123");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.vaults.get("vlt-abc123");
// 3. Inspect the parsed response
console.log(res);
Returns the runtime profile for a vault as { profile: object, hash: string }. The hash lets clients short-circuit re-rendering when the profile is unchanged.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.vaults.getRuntimeProfile("vlt-abc123");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.vaults.setRuntimeProfile("vlt-abc123", { profile: {} });
// 3. Inspect the parsed response
console.log(res);
Response Example
200 OKAPPLICATION/JSON
{
"success": true
}
PRIVATE · VAULTS
Vault Actions
Dispatches an action verb for one or more vaults (deploy|start|stop|undeploy|reconfigure|unpark|reply-to-prompt|execute-flow|cancel-flow|query-flow).
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.vaults.action("deploy", { items: { "vlt-abc123": {} } });
// 3. Inspect the parsed response
console.log(res);
Returns a structured JSON map of every endpoint in the Vaults category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.vaults.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.strategies.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.strategies.getSummary("str-abc123");
// 3. Inspect the parsed response
console.log(res);
Returns the full strategy detail by id - configuration, signal pipeline, exposure rules, and runtime status. Pair with POST /v1/strategy/:strategyId/runtime-profile to fetch the runtime side.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.strategies.get("str-abc123");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.strategies.getRuntimeProfile("str-abc123");
// 3. Inspect the parsed response
console.log(res);
Response schema
strategy-runtime-profile[":strategyId"]
Field
Type
Description
profile
object
Runtime profile JSON payload
hash
string
Content hash for optimistic concurrency
controlDetails
object
Control details blob from the parent strategy row
tuneProfile
boolean
Whether the strategy has profile tuning capabilities activated. When false, runtime profile updates are rejected.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.strategies.setRuntimeProfile("str-abc123", { profile: {} });
// 3. Inspect the parsed response
console.log(res);
Response Example
200 OKAPPLICATION/JSON
{
"success": true
}
PRIVATE · STRATEGIES
Strategy Actions
Dispatches an action verb for one or more strategies (deploy|start|stop|undeploy|reconfigure|hard-restart|enable-console|disable-console|unpark|execute-flow|cancel-flow|query-flow).
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.strategies.action("deploy", { items: { "str-abc123": {} } });
// 3. Inspect the parsed response
console.log(res);
Returns a structured JSON map of every endpoint in the Strategies category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.strategies.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.nodes.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.nodes.getSummary("nod-abc123");
// 3. Inspect the parsed response
console.log(res);
Returns the full node detail by id - configuration, attached strategies, and runtime status. Use POST /v1/nodes/action to drive lifecycle (start, stop, restart) on the node.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.nodes.get("nod-abc123");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.nodes.getRuntimeProfile("nod-abc123");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.nodes.setRuntimeProfile("nod-abc123", { profile: {} });
// 3. Inspect the parsed response
console.log(res);
Response Example
200 OKAPPLICATION/JSON
{
"success": true
}
PRIVATE · NODES
Node Actions
Dispatches an action verb for one or more nodes (deploy|start|stop|undeploy|hard-restart|reconfigure|enable-console|disable-console|park|unpark|custom|execute-flow|cancel-flow|query-flow).
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.nodes.action("deploy", { items: { "nod-abc123": {} } });
// 3. Inspect the parsed response
console.log(res);
Returns a structured JSON map of every endpoint in the Nodes category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.nodes.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.servers.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.servers.getSummary("srv-abc123");
// 3. Inspect the parsed response
console.log(res);
Returns the full server details by id - hardware profile, network state, and runtime status. Pair with POST /v1/servers/action for lifecycle operations.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.servers.get("srv-abc123");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.servers.getRuntimeProfile("srv-abc123");
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.servers.setRuntimeProfile("srv-abc123", { profile: {} });
// 3. Inspect the parsed response
console.log(res);
Response Example
200 OKAPPLICATION/JSON
{
"success": true
}
PRIVATE · SERVERS
Server Actions
Dispatches an action verb for one or more servers (deploy|start|stop|undeploy|hard-restart|reconfigure|enable-console|disable-console|spawn-node|kill-node|park|unpark|custom).
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.servers.action("deploy", { items: { "srv-abc123": {} } });
// 3. Inspect the parsed response
console.log(res);
Returns a structured JSON map of every endpoint in the Servers category - HTTP method, description, rate limit, required and optional parameters, plus the field groups each endpoint returns. Useful for SDK and agent introspection.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.servers.help();
// 3. Inspect the parsed response
console.log(res);
Response Schema
Field
Type
Description
success
boolean
Whether the call succeeded.
category
string
The category this help map describes.
help
object
Help map container. paths maps each endpoint path to its metadata (HTTP method, description, rate limit, required and optional parameters, isListing flag when applicable, and the field groups it references). fieldGroups maps each group name to its field descriptors (type and description) referenced from the path entries.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.trading.help();
// 3. Inspect the parsed response
console.log(res);
PRIVATE · TRADING
List Positions
List of open futures positions for a pool (per contract per account type).
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.positions.list({ pagination: { page: 1, limit: 50 } });
// 3. Inspect the parsed response
console.log(res);
Response schema
position[":contractSymbol"]
Field
Type
Description
contractSymbol
string
Futures contract identifier (e.g. BTCUSDT)
side
number
Position side (OneWay / Long / Short, see PositionSide enum)
quantity
number
Position size in contracts
entryPrice
number
Average entry price
markPrice
number
Current mark price
liquidationPrice
number
Estimated liquidation price (0 when not provided)
leverage
number
Position leverage
isIsolated
boolean
Margin mode (true = isolated, false = cross)
marginAmount
number
Margin allocated to the position (isolated only)
unrealizedPnl
number
Unrealized profit and loss
timestampOpened
number
When the position was opened (ms epoch)
accType
number
Account type (one of the futures family values)
PRIVATE · TRADING
List Orders
Returns the order history for a pool, scoped by the bound API key permissions. Supports search, sorting, and pagination; use the filter object to scope by status, market, or date range.
POST/orders/list
AuthHMAC + pool-bound keyRate limit30 req/min
Body parameters
Name
Type
Required
Description
filtering
object
optional
Filter object: { term?: string }. Free-text term matched against the listing.
sorting
object
optional
Sort object: { field, direction }. Direction is asc or desc.
pagination
object
optional
Page-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.trading.orders.list();
// 3. Inspect the parsed response
console.log(res);
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.trading.orders.get("ord-abc123");
// 3. Inspect the parsed response
console.log(res);
Returns the trade history for a pool. Each item is a fill (maker or taker) with price, quantity, fee, role, and the parent order id. Standard search / sort / pagination supported.
POST/trades/list
AuthHMAC + pool-bound keyRate limit30 req/min
Body parameters
Name
Type
Required
Description
filtering
object
optional
Filter object: { term?: string }. Free-text term matched against the listing.
sorting
object
optional
Sort object: { field, direction }. Direction is asc or desc.
pagination
object
optional
Page-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.trading.trades.list();
// 3. Inspect the parsed response
console.log(res);
Returns balances per asset for a pool. Each item carries available (free for new orders), locked (reserved by open orders), and total. Standard search / sort / pagination supported.
POST/balances/list
AuthHMAC + pool-bound keyRate limit30 req/min
Body parameters
Name
Type
Required
Description
filtering
object
optional
Filter object: { term?: string }. Free-text term matched against the listing.
sorting
object
optional
Sort object: { field, direction }. Direction is asc or desc.
pagination
object
optional
Page-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.trading.balances.list();
// 3. Inspect the parsed response
console.log(res);
Returns the on/off-ramp ledger for a pool: deposits, withdrawals, and platform fees. Each item carries type, asset, amount, status, and an optional on-chain tx hash. Standard search / sort / pagination supported.
POST/transactions/list
AuthHMAC + pool-bound keyRate limit30 req/min
Body parameters
Name
Type
Required
Description
filtering
object
optional
Filter object: { term?: string }. Free-text term matched against the listing.
sorting
object
optional
Sort object: { field, direction }. Direction is asc or desc.
pagination
object
optional
Page-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.
import { PlatformApiClient } from "@trademire/platform-api";
// 1. Configure the client with your API credentials
let client = new PlatformApiClient({
baseUrl: "https://trademire.ai/api/platform-api",
apiKey: process.env.API_KEY!,
apiSecret: process.env.API_SECRET!,
});
// 2. Send the signed request through the typed SDK method
let res = await client.trading.transactions.list();
// 3. Inspect the parsed response
console.log(res);
Response schema
transaction[":transactionId"]
Field
Type
Description
type
string
Transaction type (deposit, withdrawal, fee, ...)
symbol
string
Asset symbol
amount
number
Transaction amount
fee
number
Network or platform fee
status
string
Transaction status (pending, confirmed, failed, ...)