TradeMire TradeMire
List Markets
API REFERENCE

The TradeMire Platform API

v1 · Initial release · Apr 2026

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 URL https://trademire.ai/api/platform-api
Path prefix /v1/{apiKey}
Version v1
Auth HMAC-SHA256
Rate limit Varies 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,
});
BODY='{"pagination":{"page":1,"limit":50}}'
TS=$(date +%s%3N)
SIG=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | awk '{print $2}')
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/markets/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data "$BODY"

Public vs Private endpoints

Scope HMAC headers Body shape Examples
PUBLIC required Only listing/filter/sort/pagination fields. /markets/list, /asset/:symbol, /exchanges/list, /chains/list, /macro/types
PRIVATE required Scoped to the pool your API key is bound to at creation - a poolKey field in the body is ignored. /vaults/list, /strategies/list, /orders/list, /trades/list

Auth failure behaviour

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.

POST /markets/list
Auth HMAC-SHA256 Rate limit 15 req/min Pagination Content application/json

Body Parameters

Name In Type Required Description
REQUEST BODY
filtering body object optional Filter object: { term?: string }. The term is matched against the pair, base symbol, and quote symbol fields.
sorting body object optional Sort object: { field, direction }. Common fields are pair, lastPrice, and isActive. Direction is asc or desc.
pagination body object optional Page-based pagination: { page: number, limit: number }. page is 1-based; limit is 10-100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Response Schema

items[]
Field Type Description
pair string Canonical market pair key in BASE_QUOTE form (e.g. BTC_USDT).
baseSymbol string Base asset symbol of the market.
quoteSymbol string Quote asset symbol of the market.
isActive boolean Whether the market is currently active and trading on at least one tracked venue.
lastPrice number Latest aggregated price across venues, denominated in priceQuote.
priceQuote string Quote currency the lastPrice is denominated in (typically USDT or USD).
sourceDelaySecs number How far behind the live market this price is, in seconds. Absent when the price is live, which is the case for coins.
pagination
Field Type Description
currentPage integer 1-based index of the page returned by this response.
totalPages integer Total number of pages available for the current filter and limit.
pageSize integer Effective page size applied by the server (may be lower than the requested limit).
totalRows integer Total number of rows matching the filter across all pages.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "pair": "BTC_USDT",
      "baseSymbol": "BTC",
      "quoteSymbol": "USDT",
      "isActive": true,
      "lastPrice": 64803.7,
      "priceQuote": "USDT"
    },
    {
      "pair": "ETH_USDT",
      "baseSymbol": "ETH",
      "quoteSymbol": "USDT",
      "isActive": true,
      "lastPrice": 3421.18,
      "priceQuote": "USDT"
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 5,
    "pageSize": 50,
    "totalRows": 247
  }
}
PUBLIC · MARKETS

Get Market Ticker

Returns the live ticker shape for a single trading pair: last price, 24h high/low, change, bid/ask with sizes, and base/quote volume.

GET /market/:pair/ticker
Auth HMAC-SHA256 Rate limit 60 req/min URL param :pair

URL parameters

NameRequiredDescription
pairrequiredCanonical pair key in BASE_QUOTE form (e.g. BTC_USDT). Alphanumeric, underscore and dash only, max 64 chars.

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/market/BTC_USDT/ticker" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.markets.getTicker("BTC_USDT");

// 3. Inspect the parsed response
console.log(res);

Response schema

ticker
FieldTypeDescription
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).
bidPrice number Current best bid price.
askPrice number Current best ask price.
bidQuantity number Quantity available at the best bid.
askQuantity number Quantity available at the best ask.
volume number 24h base-currency volume.
quoteVolume number 24h quote-currency volume.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "isActive": true,
    "apiTrading": true,
    "lastPrice": 67234.5,
    "highPrice24h": 68500,
    "lowPrice24h": 66800,
    "change": 1.23,
    "bidPrice": 67230,
    "askPrice": 67235,
    "bidQuantity": 0.5,
    "askQuantity": 0.3,
    "volume": 12500.5,
    "quoteVolume": 845000000
  }
}
PUBLIC · MARKETS

Ticker per Exchange

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.

GET /market/ticker/:pair/exchanges
Auth HMAC-SHA256 Rate limit 60 req/min Returns listing Pagination

URL parameters

NameRequiredDescription
pairrequiredCanonical pair key (BASE_QUOTE).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/market/ticker/BTC_USDT/exchanges" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "isActive": true,
      "apiTrading": true,
      "lastPrice": 67234.5,
      "highPrice24h": 68500,
      "lowPrice24h": 66800,
      "change": 1.23,
      "bidPrice": 67230,
      "askPrice": 67235,
      "bidQuantity": 0.5,
      "askQuantity": 0.3,
      "volume": 12500.5,
      "quoteVolume": 845000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · MARKETS

Get Market Listing

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.

GET /market/:pair/listing
Auth HMAC-SHA256 Rate limit 60 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/market/BTC_USDT/listing" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.markets.getListing("BTC_USDT");

// 3. Inspect the parsed response
console.log(res);

Response schema

listing
FieldTypeDescription
baseSymbol string Base asset symbol.
quoteSymbol string Quote asset symbol.
isListed boolean Whether the market is currently listed.
isActive boolean Whether the market is currently active.
openTrading boolean Whether trading is open at all.
openApiTrading boolean Whether API trading is open.
hasMarginTrading boolean Whether margin trading is supported.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "baseSymbol": "BTC",
    "quoteSymbol": "USDT",
    "isListed": true,
    "isActive": true,
    "openTrading": true,
    "openApiTrading": true,
    "hasMarginTrading": false
  }
}
PUBLIC · MARKETS

Get Market Limit

Returns the sanitized trading limits and fees for a single market: precision, price/quantity bounds, tick sizes, notional bounds, and maker/taker fee rates.

GET /market/:pair/limits
Auth HMAC-SHA256 Rate limit 60 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/market/BTC_USDT/limits" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.markets.getLimits("BTC_USDT");

// 3. Inspect the parsed response
console.log(res);

Response schema

limit
FieldTypeDescription
basePrecision number Base asset decimal precision.
quotePrecision number Quote asset decimal precision.
priceMin / priceMax / priceTick number Price bounds and tick size.
quantityMin / quantityMax / quantityTick number Quantity bounds and tick size.
totalMin / totalMax number Notional value bounds.
feeMaker / feeTaker number Maker / taker fee rates.
feeIsTiered boolean Whether fees are tiered by 30d volume.
maxNumOrders number Maximum number of open orders allowed.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "basePrecision": 8,
    "quotePrecision": 2,
    "priceMin": 0.01,
    "priceMax": 1000000,
    "priceTick": 0.01,
    "quantityMin": 0.00001,
    "quantityMax": 9000,
    "quantityTick": 0.00001,
    "totalMin": 5,
    "totalMax": 9000000,
    "feeMaker": 0.001,
    "feeTaker": 0.001,
    "feeIsTiered": true,
    "maxNumOrders": 200
  }
}
PUBLIC · MARKETS

Get Market Profile

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.

GET /market/:pair/profile
Auth HMAC-SHA256 Rate limit 60 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/market/BTC_USDT/profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.markets.getProfile("BTC_USDT");

// 3. Inspect the parsed response
console.log(res);

Response schema

profile
FieldTypeDescription
baseSymbol / quoteSymbol string Base / quote asset symbols.
isListed / isActive boolean Whether the market is listed and active.
openTrading / openApiTrading boolean Whether trading and API trading are open.
hasMarginTrading boolean Whether margin trading is supported.
tags array Array of tag keys associated with the market.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "baseSymbol": "BTC",
    "quoteSymbol": "USDT",
    "isListed": true,
    "isActive": true,
    "openTrading": true,
    "openApiTrading": true,
    "hasMarginTrading": false,
    "tags": [
      "spot",
      "major"
    ]
  }
}
PUBLIC · MARKETS

Get Market OHLC

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
Auth HMAC-SHA256 Rate limit 20 req/min

Body parameters

NameTypeRequiredDescription
field string optional One of aggLast (default) or aggVol.
intervalstringoptionalLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
tOldest integer optional Oldest bin time, ms epoch (inclusive).
tNewest integer optional Newest bin time, ms epoch (inclusive).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/market/BTC_USDT/ohlc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"5m"}'
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.markets.getOhlc("BTC_USDT", { interval: "5m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

ohlc
FieldTypeDescription
pairstringCanonical market pair key
field string Snapshotted field that drove the bins.
intervalstringLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
series array Sorted bins: { tOpen, tClose, open, high, low, close, volume }.
summary object Aggregate change summary over the requested window.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "pair": "BTC_USDT",
    "field": "aggLast",
    "interval": "5m",
    "series": [
      {
        "tOpen": 1700000100000,
        "tClose": 1700000400000,
        "open": 67200,
        "high": 67450,
        "low": 67150,
        "close": 67400,
        "volume": 8120.4
      },
      {
        "tOpen": 1700000400000,
        "tClose": 1700000700000,
        "open": 67400,
        "high": 67800,
        "low": 67350,
        "close": 67700,
        "volume": 9340.2
      }
    ],
    "summary": {
      "change_v": 500,
      "change_p": 0.74
    }
  }
}
PUBLIC · MARKETS

Get Market Indicators

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.

POST /market/:pair/indicators
Auth HMAC-SHA256 Rate limit 30 req/min URL params :pair

URL parameters

Name Required Description
pairrequiredCanonical market pair key in BASE_QUOTE form (e.g. BTC_USDT).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/market/BTC_USDT/indicators" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"15m"}'
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.markets.indicators("BTC_USDT", { interval: "15m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

market-indicators[":pair"]
Field Type Description
pairstringCanonical market pair key
intervalstringLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputednumberUnix time of the calculation moment
changePct_valnumberPercentage change between the first and last candle of the window
changePct_periodsnumberCandles used for the change percentage
changePct9_valnumberPercentage change over the last 9 candles
changePct9_periodsnumberCandles used for the 9 candle change percentage
changePct12_valnumberPercentage change over the last 12 candles
changePct12_periodsnumberCandles used for the 12 candle change percentage
changePct25_valnumberPercentage change over the last 25 candles
changePct25_periodsnumberCandles used for the 25 candle change percentage
sma20_valnumberSimple moving average of the candle closes, over 20 candles
sma20_periodsnumberCandles used for the 20 candle simple moving average
sma50_valnumberSimple moving average of the candle closes, over 50 candles
sma50_periodsnumberCandles used for the 50 candle simple moving average
sma200_valnumberSimple moving average of the candle closes, over 200 candles, the long trend line
sma200_periodsnumberCandles used for the 200 candle simple moving average
ema9_valnumberExponential moving average of the candle closes, over 9 candles
ema9_periodsnumberCandles used for the 9 candle exponential moving average
ema21_valnumberExponential moving average of the candle closes, over 21 candles
ema21_periodsnumberCandles used for the 21 candle exponential moving average
ema50_valnumberExponential moving average of the candle closes, over 50 candles
ema50_periodsnumberCandles used for the 50 candle exponential moving average
rsi9_valnumberFast relative strength index between 0 and 100, over 9 candles
rsi9_periodsnumberCandles used for the fast relative strength index
rsi14_valnumberRelative strength index between 0 and 100, over 14 candles
rsi14_periodsnumberCandles used for the relative strength index
rsi21_valnumberSlow relative strength index between 0 and 100, over 21 candles
rsi21_periodsnumberCandles used for the slow relative strength index
atr7_valnumberAverage true range over 7 candles
atr7_periodsnumberCandles used for the 7 candle average true range
atr14_valnumberAverage true range over 14 candles
atr14_periodsnumberCandles used for the 14 candle average true range
atr21_valnumberAverage true range over 21 candles
atr21_periodsnumberCandles used for the 21 candle average true range
bollinger1sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger1sd_uppernumberBollinger upper band, the middle band plus one standard deviation
bollinger1sd_lowernumberBollinger lower band, the middle band minus one standard deviation
bollinger1sd_periodsnumberCandles used for the bollinger bands
bollinger2sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger2sd_uppernumberBollinger upper band, the middle band plus two standard deviations
bollinger2sd_lowernumberBollinger lower band, the middle band minus two standard deviations
bollinger2sd_periodsnumberCandles used for the bollinger bands
bollinger3sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger3sd_uppernumberBollinger upper band, the middle band plus three standard deviations
bollinger3sd_lowernumberBollinger lower band, the middle band minus three standard deviations
bollinger3sd_periodsnumberCandles used for the bollinger bands
macd_valnumberMoving average convergence divergence line, using 12, 26 and 9 candles
macd_signalnumberSignal line of the convergence divergence indicator
macd_histogramnumberDistance between the convergence divergence line and its signal line
macd_periodsnumberCandles used for the convergence divergence indicator
macd535_valnumberMoving average convergence divergence line, using 5, 35 and 5 candles
macd535_signalnumberSignal line of the 5, 35 and 5 convergence divergence indicator
macd535_histogramnumberDistance between the 5, 35 and 5 convergence divergence line and its signal line
macd535_periodsnumberCandles used for the 5, 35 and 5 convergence divergence indicator
relativeVolume10_valnumberLatest daily volume reading against the average of the previous 10 readings, where one means the usual pace
relativeVolume10_periodsnumberReadings used for the 10 reading relative volume
relativeVolume20_valnumberLatest daily volume reading against the average of the previous 20 readings, where one means the usual pace
relativeVolume20_periodsnumberReadings used for the 20 reading relative volume
relativeVolume50_valnumberLatest daily volume reading against the average of the previous 50 readings, where one means the usual pace
relativeVolume50_periodsnumberReadings used for the 50 reading relative volume
rollingHigh10_valnumberHighest price seen over the last 10 candles
rollingHigh10_periodsnumberCandles used for the 10 candle rolling high
rollingHigh20_valnumberHighest price seen over the last 20 candles
rollingHigh20_periodsnumberCandles used for the 20 candle rolling high
rollingHigh55_valnumberHighest price seen over the last 55 candles
rollingHigh55_periodsnumberCandles used for the 55 candle rolling high
rollingLow10_valnumberLowest price seen over the last 10 candles
rollingLow10_periodsnumberCandles used for the 10 candle rolling low
rollingLow20_valnumberLowest price seen over the last 20 candles
rollingLow20_periodsnumberCandles used for the 20 candle rolling low
rollingLow55_valnumberLowest price seen over the last 55 candles
rollingLow55_periodsnumberCandles used for the 55 candle rolling low
vwap_valnumberVolume weighted average price over whole days, each day weighted by what it traded
vwap_periodsnumberWhole days used for the volume weighted average price
rankPct20_valnumberShare of the last 20 candles that closed at or below the latest one, from 0 to 100
rankPct20_periodsnumberCandles used for the 20 candle rank
rankPct50_valnumberShare of the last 50 candles that closed at or below the latest one, from 0 to 100
rankPct50_periodsnumberCandles used for the 50 candle rank

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "pair": "BTC/USDT",
    "interval": "15m",
    "tComputed": 1785313277,
    "changePct_val": 1.9162513985504726,
    "changePct_periods": 48,
    "changePct9_val": -0.4218339107,
    "changePct9_periods": 9,
    "changePct12_val": 0.3671224885,
    "changePct12_periods": 12,
    "changePct25_val": 1.2884019226,
    "changePct25_periods": 25,
    "sma20_val": 63697.17930616253,
    "sma20_periods": 20,
    "sma50_val": 63411.90284412,
    "sma50_periods": 50,
    "sma200_val": 62884.31775093,
    "sma200_periods": 200,
    "ema9_val": 63740.22615508,
    "ema9_periods": 9,
    "ema21_val": 63719.44210771339,
    "ema21_periods": 21,
    "ema50_val": 63498.06612284,
    "ema50_periods": 50,
    "rsi9_val": 57.12,
    "rsi9_periods": 9,
    "rsi14_val": 54.35,
    "rsi14_periods": 14,
    "rsi21_val": 52.68,
    "rsi21_periods": 21,
    "atr7_val": 688.4419028841,
    "atr7_periods": 7,
    "atr14_val": 631.3883305255476,
    "atr14_periods": 14,
    "atr21_val": 602.7710664918,
    "atr21_periods": 21,
    "bollinger1sd_val": 63697.17930616253,
    "bollinger1sd_upper": 64208.25611396,
    "bollinger1sd_lower": 63186.10249836,
    "bollinger1sd_periods": 20,
    "bollinger2sd_val": 63697.17930616253,
    "bollinger2sd_upper": 64719.33291696,
    "bollinger2sd_lower": 62675.02569536,
    "bollinger2sd_periods": 20,
    "bollinger3sd_val": 63697.17930616253,
    "bollinger3sd_upper": 65230.40972236,
    "bollinger3sd_lower": 62163.94888996,
    "bollinger3sd_periods": 20,
    "macd_val": 133.7640765429413,
    "macd_signal": 101.91548688986005,
    "macd_histogram": 31.84858965,
    "macd_periods": 26,
    "macd535_val": 86.4429117733,
    "macd535_signal": 71.2205318841,
    "macd535_histogram": 15.22237989,
    "macd535_periods": 35,
    "rollingHigh10_val": 64180.55418822,
    "rollingHigh10_periods": 10,
    "rollingHigh20_val": 64394.42867907523,
    "rollingHigh20_periods": 20,
    "rollingHigh55_val": 65022.11930448,
    "rollingHigh55_periods": 55,
    "rollingLow10_val": 63188.30117744,
    "rollingLow10_periods": 10,
    "rollingLow20_val": 62965.47219655413,
    "rollingLow20_periods": 20,
    "rollingLow55_val": 61903.88512207,
    "rollingLow55_periods": 55,
    "rankPct20_val": 85,
    "rankPct50_val": 72
  }
}
PUBLIC · MARKETS

Get Market Indicator

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.

POST /market/:pair/indicator/:indicatorKey
Auth HMAC-SHA256 Rate limit 60 req/min URL params :pair, :indicatorKey

URL parameters

Name Required Description
pairrequiredCanonical market pair key in BASE_QUOTE form (e.g. BTC_USDT).
indicatorKeyrequiredIndicator to compute.
Trend
sma20 sma50 sma200 ema9 ema21 ema50
Momentum
rsi9 rsi14 rsi21
Convergence1s, 15m, 12h, 5d
macd macd535
Volatility
atr7 atr14 atr21 bollinger1sd bollinger2sd bollinger3sd
Range
rollingHigh10 rollingHigh20 rollingHigh55 rollingLow10 rollingLow20 rollingLow55
Change
changePct changePct9 changePct12 changePct25
Weighted price6h, 12h
vwap
Volume6h, 12h, 5d, 1M
relativeVolume10 relativeVolume20 relativeVolume50
Position in range
rankPct20 rankPct50

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/market/BTC_USDT/indicator/rsi14" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"15m"}'
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.markets.indicator("BTC_USDT", "rsi14", { interval: "15m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

market-indicators[":pair"]
Field Type Description
pairstringCanonical market pair key
intervalstringLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputednumberUnix time of the calculation moment

Fields per indicator

Requested indicator Fields in the answer
changePctchangePct_val, changePct_periods
changePct9changePct9_val, changePct9_periods
changePct12changePct12_val, changePct12_periods
changePct25changePct25_val, changePct25_periods
sma20sma20_val, sma20_periods
sma50sma50_val, sma50_periods
sma200sma200_val, sma200_periods
ema9ema9_val, ema9_periods
ema21ema21_val, ema21_periods
ema50ema50_val, ema50_periods
rsi9rsi9_val, rsi9_periods
rsi14rsi14_val, rsi14_periods
rsi21rsi21_val, rsi21_periods
atr7atr7_val, atr7_periods
atr14atr14_val, atr14_periods
atr21atr21_val, atr21_periods
bollinger1sdbollinger1sd_val, bollinger1sd_upper, bollinger1sd_lower, bollinger1sd_periods
bollinger2sdbollinger2sd_val, bollinger2sd_upper, bollinger2sd_lower, bollinger2sd_periods
bollinger3sdbollinger3sd_val, bollinger3sd_upper, bollinger3sd_lower, bollinger3sd_periods
macdmacd_val, macd_signal, macd_histogram, macd_periods
macd535macd535_val, macd535_signal, macd535_histogram, macd535_periods
relativeVolume10relativeVolume10_val, relativeVolume10_periods
relativeVolume20relativeVolume20_val, relativeVolume20_periods
relativeVolume50relativeVolume50_val, relativeVolume50_periods
rollingHigh10rollingHigh10_val, rollingHigh10_periods
rollingHigh20rollingHigh20_val, rollingHigh20_periods
rollingHigh55rollingHigh55_val, rollingHigh55_periods
rollingLow10rollingLow10_val, rollingLow10_periods
rollingLow20rollingLow20_val, rollingLow20_periods
rollingLow55rollingLow55_val, rollingLow55_periods
vwapvwap_val, vwap_periods
rankPct20rankPct20_val
rankPct50rankPct50_val

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "pair": "BTC/USDT",
    "interval": "15m",
    "tComputed": 1785313278,
    "rsi14_val": 54.35,
    "rsi14_periods": 14
  }
}
PUBLIC · MARKETS

Markets Help Map

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.

GET /markets/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/markets/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "markets",
  "help": {
    "paths": {
      "/markets/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PUBLIC · ASSETS

List Assets

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
Auth HMAC-SHA256 Rate limit 15 req/min Pagination

Body parameters

Same shape as List Markets: filtering, sorting, pagination. The search term is matched against the asset symbol and name fields.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/assets/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.assets.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

items[]
FieldTypeDescription
assetType number Asset type classification code (numeric enum).
isListed boolean Whether the asset is currently listed.
lastPrice number Latest aggregated price.
priceQuote string Quote currency the price is denominated in.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "assetType": "crypto",
      "isListed": true,
      "lastPrice": 67234.5,
      "priceQuote": "USDT"
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · ASSETS

Get Asset

Returns a single asset with price, 24h volume, change, dominance, aggregated limits, and per-network limits keyed by network identifier.

GET /asset/:symbol
Auth HMAC-SHA256 Rate limit 60 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/asset/BTC" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.assets.get("BTC");

// 3. Inspect the parsed response
console.log(res);

Response schema

asset
FieldTypeDescription
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.
limits object Aggregated limits: precision, orderMin/Max, depositMin/Max, withdrawalMin/Max.
chains[":network"] object Per-network limits: depositEnabled, withdrawEnabled, withdrawFee, withdrawMin/Max, depositMin, confirmations, isDefault.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "assetType": "crypto",
    "isListed": true,
    "lastPrice": 67234.5,
    "priceQuote": "USDT",
    "volume24h": 12500.5,
    "change24h": 1.23,
    "dominance": 52.4,
    "limits": {
      "precision": 8,
      "orderMin": 0.00001,
      "orderMax": 9000,
      "depositMin": 0.0001,
      "depositMax": 1000000,
      "withdrawalMin": 0.0005,
      "withdrawalMax": 100
    },
    "chains": {
      "ETH": {
        "depositEnabled": true,
        "withdrawEnabled": true,
        "withdrawFee": 0.0005,
        "withdrawMin": 0.001,
        "withdrawMax": 100,
        "depositMin": 0.0001,
        "confirmations": 12,
        "isDefault": true
      }
    }
  }
}
PUBLIC · ASSETS

Get Asset Profile

Returns descriptive profile metadata for a single asset: description, supply figures, social/web URLs, tag keys, and rating entries.

GET /asset/:symbol/profile
Auth HMAC-SHA256 Rate limit 60 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/asset/BTC/profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.assets.getProfile("BTC");

// 3. Inspect the parsed response
console.log(res);

Response schema

profile
FieldTypeDescription
description string Asset description text.
supplyCirculating / supplyTotal / supplyMax number Supply figures.
urls array Array of { key, value } URL entries (social, web, explorer).
tags array Array of tag keys.
ratings array Array of { key, value } rating entries.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "description": "Bitcoin is a decentralized digital currency.",
    "supplyCirculating": 19700000,
    "supplyTotal": 19700000,
    "supplyMax": 21000000,
    "urls": [
      {
        "key": "website",
        "value": "https://bitcoin.org"
      },
      {
        "key": "twitter",
        "value": "https://twitter.com/bitcoin"
      }
    ],
    "tags": [
      "layer-1",
      "pow",
      "store-of-value"
    ],
    "ratings": [
      {
        "key": "cmcRank",
        "value": 1
      }
    ]
  }
}
PUBLIC · ASSETS

Get Asset OHLC

Returns OHLC candle series for a single asset. Timeframe is selectable from the platform sampler keys.

POST /asset/:symbol/ohlc
Auth HMAC-SHA256 Rate limit 20 req/min

Body parameters

Same shape as Get Market OHLC but without the field selector (aggLast is the only sampled field for asset prices).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/asset/BTC/ohlc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"5m"}'
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.assets.getOhlc("BTC", { interval: "5m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

asset-ohlc[":symbol"]
Field Type Description
symbolstringGlobal asset symbol
intervalstringLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
seriesarraySorted OHLC bins: { tOpen, tClose, open, high, low, close, volume }
summaryobjectAggregate change summary over the returned window

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "symbol": "BTC",
    "interval": "5m",
    "series": [
      {
        "tOpen": 1700000100000,
        "tClose": 1700000400000,
        "open": 67200,
        "high": 67450,
        "low": 67150,
        "close": 67400,
        "volume": 8120.4
      },
      {
        "tOpen": 1700000400000,
        "tClose": 1700000700000,
        "open": 67400,
        "high": 67800,
        "low": 67350,
        "close": 67700,
        "volume": 9340.2
      }
    ],
    "summary": {
      "change_v": 500,
      "change_p": 0.74
    }
  }
}
PUBLIC · ASSETS

Get Asset Indicators

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.

POST /asset/:symbol/indicators
Auth HMAC-SHA256 Rate limit 30 req/min URL params :symbol

URL parameters

Name Required Description
symbolrequiredAsset symbol (e.g. BTC).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/asset/BTC/indicators" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"15m"}'
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.assets.indicators("BTC", { interval: "15m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

asset-indicators[":symbol"]
Field Type Description
symbolstringAsset symbol
intervalstringLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputednumberUnix time of the calculation moment
changePct_valnumberPercentage change between the first and last candle of the window
changePct_periodsnumberCandles used for the change percentage
changePct9_valnumberPercentage change over the last 9 candles
changePct9_periodsnumberCandles used for the 9 candle change percentage
changePct12_valnumberPercentage change over the last 12 candles
changePct12_periodsnumberCandles used for the 12 candle change percentage
changePct25_valnumberPercentage change over the last 25 candles
changePct25_periodsnumberCandles used for the 25 candle change percentage
sma20_valnumberSimple moving average of the candle closes, over 20 candles
sma20_periodsnumberCandles used for the 20 candle simple moving average
sma50_valnumberSimple moving average of the candle closes, over 50 candles
sma50_periodsnumberCandles used for the 50 candle simple moving average
sma200_valnumberSimple moving average of the candle closes, over 200 candles, the long trend line
sma200_periodsnumberCandles used for the 200 candle simple moving average
ema9_valnumberExponential moving average of the candle closes, over 9 candles
ema9_periodsnumberCandles used for the 9 candle exponential moving average
ema21_valnumberExponential moving average of the candle closes, over 21 candles
ema21_periodsnumberCandles used for the 21 candle exponential moving average
ema50_valnumberExponential moving average of the candle closes, over 50 candles
ema50_periodsnumberCandles used for the 50 candle exponential moving average
rsi9_valnumberFast relative strength index between 0 and 100, over 9 candles
rsi9_periodsnumberCandles used for the fast relative strength index
rsi14_valnumberRelative strength index between 0 and 100, over 14 candles
rsi14_periodsnumberCandles used for the relative strength index
rsi21_valnumberSlow relative strength index between 0 and 100, over 21 candles
rsi21_periodsnumberCandles used for the slow relative strength index
atr7_valnumberAverage true range over 7 candles
atr7_periodsnumberCandles used for the 7 candle average true range
atr14_valnumberAverage true range over 14 candles
atr14_periodsnumberCandles used for the 14 candle average true range
atr21_valnumberAverage true range over 21 candles
atr21_periodsnumberCandles used for the 21 candle average true range
bollinger1sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger1sd_uppernumberBollinger upper band, the middle band plus one standard deviation
bollinger1sd_lowernumberBollinger lower band, the middle band minus one standard deviation
bollinger1sd_periodsnumberCandles used for the bollinger bands
bollinger2sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger2sd_uppernumberBollinger upper band, the middle band plus two standard deviations
bollinger2sd_lowernumberBollinger lower band, the middle band minus two standard deviations
bollinger2sd_periodsnumberCandles used for the bollinger bands
bollinger3sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger3sd_uppernumberBollinger upper band, the middle band plus three standard deviations
bollinger3sd_lowernumberBollinger lower band, the middle band minus three standard deviations
bollinger3sd_periodsnumberCandles used for the bollinger bands
macd_valnumberMoving average convergence divergence line, using 12, 26 and 9 candles
macd_signalnumberSignal line of the convergence divergence indicator
macd_histogramnumberDistance between the convergence divergence line and its signal line
macd_periodsnumberCandles used for the convergence divergence indicator
macd535_valnumberMoving average convergence divergence line, using 5, 35 and 5 candles
macd535_signalnumberSignal line of the 5, 35 and 5 convergence divergence indicator
macd535_histogramnumberDistance between the 5, 35 and 5 convergence divergence line and its signal line
macd535_periodsnumberCandles used for the 5, 35 and 5 convergence divergence indicator
relativeVolume10_valnumberLatest daily volume reading against the average of the previous 10 readings, where one means the usual pace
relativeVolume10_periodsnumberReadings used for the 10 reading relative volume
relativeVolume20_valnumberLatest daily volume reading against the average of the previous 20 readings, where one means the usual pace
relativeVolume20_periodsnumberReadings used for the 20 reading relative volume
relativeVolume50_valnumberLatest daily volume reading against the average of the previous 50 readings, where one means the usual pace
relativeVolume50_periodsnumberReadings used for the 50 reading relative volume
rollingHigh10_valnumberHighest price seen over the last 10 candles
rollingHigh10_periodsnumberCandles used for the 10 candle rolling high
rollingHigh20_valnumberHighest price seen over the last 20 candles
rollingHigh20_periodsnumberCandles used for the 20 candle rolling high
rollingHigh55_valnumberHighest price seen over the last 55 candles
rollingHigh55_periodsnumberCandles used for the 55 candle rolling high
rollingLow10_valnumberLowest price seen over the last 10 candles
rollingLow10_periodsnumberCandles used for the 10 candle rolling low
rollingLow20_valnumberLowest price seen over the last 20 candles
rollingLow20_periodsnumberCandles used for the 20 candle rolling low
rollingLow55_valnumberLowest price seen over the last 55 candles
rollingLow55_periodsnumberCandles used for the 55 candle rolling low
vwap_valnumberVolume weighted average price over whole days, each day weighted by what it traded
vwap_periodsnumberWhole days used for the volume weighted average price
rankPct20_valnumberShare of the last 20 candles that closed at or below the latest one, from 0 to 100
rankPct20_periodsnumberCandles used for the 20 candle rank
rankPct50_valnumberShare of the last 50 candles that closed at or below the latest one, from 0 to 100
rankPct50_periodsnumberCandles used for the 50 candle rank

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "symbol": "BTC",
    "interval": "15m",
    "tComputed": 1785313279,
    "changePct_val": 1.9162513985504726,
    "changePct_periods": 48,
    "changePct9_val": -0.4218339107,
    "changePct9_periods": 9,
    "changePct12_val": 0.3671224885,
    "changePct12_periods": 12,
    "changePct25_val": 1.2884019226,
    "changePct25_periods": 25,
    "sma20_val": 63697.17930616253,
    "sma20_periods": 20,
    "sma50_val": 63411.90284412,
    "sma50_periods": 50,
    "sma200_val": 62884.31775093,
    "sma200_periods": 200,
    "ema9_val": 63740.22615508,
    "ema9_periods": 9,
    "ema21_val": 63719.44210771339,
    "ema21_periods": 21,
    "ema50_val": 63498.06612284,
    "ema50_periods": 50,
    "rsi9_val": 57.12,
    "rsi9_periods": 9,
    "rsi14_val": 54.35,
    "rsi14_periods": 14,
    "rsi21_val": 52.68,
    "rsi21_periods": 21,
    "atr7_val": 688.4419028841,
    "atr7_periods": 7,
    "atr14_val": 631.3883305255476,
    "atr14_periods": 14,
    "atr21_val": 602.7710664918,
    "atr21_periods": 21,
    "bollinger1sd_val": 63697.17930616253,
    "bollinger1sd_upper": 64208.25611396,
    "bollinger1sd_lower": 63186.10249836,
    "bollinger1sd_periods": 20,
    "bollinger2sd_val": 63697.17930616253,
    "bollinger2sd_upper": 64719.33291696,
    "bollinger2sd_lower": 62675.02569536,
    "bollinger2sd_periods": 20,
    "bollinger3sd_val": 63697.17930616253,
    "bollinger3sd_upper": 65230.40972236,
    "bollinger3sd_lower": 62163.94888996,
    "bollinger3sd_periods": 20,
    "macd_val": 133.7640765429413,
    "macd_signal": 101.91548688986005,
    "macd_histogram": 31.84858965,
    "macd_periods": 26,
    "macd535_val": 86.4429117733,
    "macd535_signal": 71.2205318841,
    "macd535_histogram": 15.22237989,
    "macd535_periods": 35,
    "rollingHigh10_val": 64180.55418822,
    "rollingHigh10_periods": 10,
    "rollingHigh20_val": 64394.42867907523,
    "rollingHigh20_periods": 20,
    "rollingHigh55_val": 65022.11930448,
    "rollingHigh55_periods": 55,
    "rollingLow10_val": 63188.30117744,
    "rollingLow10_periods": 10,
    "rollingLow20_val": 62965.47219655413,
    "rollingLow20_periods": 20,
    "rollingLow55_val": 61903.88512207,
    "rollingLow55_periods": 55,
    "rankPct20_val": 85,
    "rankPct50_val": 72
  }
}
PUBLIC · ASSETS

Get Asset Indicator

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.

POST /asset/:symbol/indicator/:indicatorKey
Auth HMAC-SHA256 Rate limit 60 req/min URL params :symbol, :indicatorKey

URL parameters

Name Required Description
symbolrequiredAsset symbol (e.g. BTC).
indicatorKeyrequiredIndicator to compute.
Trend
sma20 sma50 sma200 ema9 ema21 ema50
Momentum
rsi9 rsi14 rsi21
Convergence1s, 15m, 12h, 5d
macd macd535
Volatility
atr7 atr14 atr21 bollinger1sd bollinger2sd bollinger3sd
Range
rollingHigh10 rollingHigh20 rollingHigh55 rollingLow10 rollingLow20 rollingLow55
Change
changePct changePct9 changePct12 changePct25
Weighted price6h, 12h
vwap
Volume6h, 12h, 5d, 1M
relativeVolume10 relativeVolume20 relativeVolume50
Position in range
rankPct20 rankPct50

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/asset/BTC/indicator/rsi14" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"15m"}'
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.assets.indicator("BTC", "rsi14", { interval: "15m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

asset-indicators[":symbol"]
Field Type Description
symbolstringAsset symbol
intervalstringLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputednumberUnix time of the calculation moment

Fields per indicator

Requested indicator Fields in the answer
changePctchangePct_val, changePct_periods
changePct9changePct9_val, changePct9_periods
changePct12changePct12_val, changePct12_periods
changePct25changePct25_val, changePct25_periods
sma20sma20_val, sma20_periods
sma50sma50_val, sma50_periods
sma200sma200_val, sma200_periods
ema9ema9_val, ema9_periods
ema21ema21_val, ema21_periods
ema50ema50_val, ema50_periods
rsi9rsi9_val, rsi9_periods
rsi14rsi14_val, rsi14_periods
rsi21rsi21_val, rsi21_periods
atr7atr7_val, atr7_periods
atr14atr14_val, atr14_periods
atr21atr21_val, atr21_periods
bollinger1sdbollinger1sd_val, bollinger1sd_upper, bollinger1sd_lower, bollinger1sd_periods
bollinger2sdbollinger2sd_val, bollinger2sd_upper, bollinger2sd_lower, bollinger2sd_periods
bollinger3sdbollinger3sd_val, bollinger3sd_upper, bollinger3sd_lower, bollinger3sd_periods
macdmacd_val, macd_signal, macd_histogram, macd_periods
macd535macd535_val, macd535_signal, macd535_histogram, macd535_periods
relativeVolume10relativeVolume10_val, relativeVolume10_periods
relativeVolume20relativeVolume20_val, relativeVolume20_periods
relativeVolume50relativeVolume50_val, relativeVolume50_periods
rollingHigh10rollingHigh10_val, rollingHigh10_periods
rollingHigh20rollingHigh20_val, rollingHigh20_periods
rollingHigh55rollingHigh55_val, rollingHigh55_periods
rollingLow10rollingLow10_val, rollingLow10_periods
rollingLow20rollingLow20_val, rollingLow20_periods
rollingLow55rollingLow55_val, rollingLow55_periods
vwapvwap_val, vwap_periods
rankPct20rankPct20_val
rankPct50rankPct50_val

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "symbol": "BTC",
    "interval": "15m",
    "tComputed": 1785313279,
    "rsi14_val": 54.35,
    "rsi14_periods": 14
  }
}
PUBLIC · ASSETS

Assets Help Map

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.

GET /assets/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/assets/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "assets",
  "help": {
    "paths": {
      "/assets/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PUBLIC · EXCHANGES

List Exchanges

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
Auth HMAC-SHA256 Rate limit 15 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchanges/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.exchanges.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

items[]
FieldTypeDescription
nrOfAssets / nrOfMarkets number Number of listed assets and trading pairs.
exchangeVolume24h number 24h trading volume in BTC.
trustScore / trustScoreRank / exchangeRank number Trust score (0-10) and ranks.
companyYear / companyCountry number / string Year established and country.
isCentralized / isActive boolean CEX/DEX flag and active flag.
dominance number Volume dominance percentage.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "nrOfAssets": 350,
      "nrOfMarkets": 1500,
      "exchangeVolume24h": 250000,
      "trustScore": 9.5,
      "trustScoreRank": 1,
      "exchangeRank": 1,
      "companyYear": 2017,
      "companyCountry": "KY",
      "isCentralized": true,
      "isActive": true,
      "hasVolumeData": true,
      "hasTrustScore": true,
      "hasApiSupport": true,
      "dominance": 22.5
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · EXCHANGES

Get Exchange

Returns the listing entry for a single exchange by its key. Same shape as List Exchanges items.

GET /exchange/:exchangeKey
Auth HMAC-SHA256 Rate limit 60 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.exchanges.get("binance");

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange[":exchangeKey"]
Field Type Description
nrOfAssetsnumberNumber of assets listed on exchange
nrOfMarketsnumberNumber of trading pairs on exchange
exchangeVolume24hnumber24h trading volume in BTC
trustScorenumberTrust score (0-10)
trustScoreRanknumberTrust score rank
exchangeRanknumberExchange rank
companyYearnumberYear the company was established
companyCountrystringCountry where exchange company is based
isCentralizedbooleanWhether exchange is centralized (CEX)
isActivebooleanWhether exchange is active
hasVolumeDatabooleanWhether volume data is available
hasTrustScorebooleanWhether trust score is available
hasApiSupportbooleanWhether exchange has API support
dominancenumberExchange volume dominance percentage

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "nrOfAssets": 350,
    "nrOfMarkets": 1500,
    "exchangeVolume24h": 250000,
    "trustScore": 9.5,
    "trustScoreRank": 1,
    "exchangeRank": 1,
    "companyYear": 2017,
    "companyCountry": "KY",
    "isCentralized": true,
    "isActive": true,
    "hasVolumeData": true,
    "hasTrustScore": true,
    "hasApiSupport": true,
    "dominance": 22.5
  }
}
PUBLIC · EXCHANGES

Get Exchange Profile

Returns exchange profile (description, urls, tags, ratings, capabilities).

GET /exchange/:exchangeKey/profile
Auth HMAC-SHA256 Rate limit 60 req/min URL params :exchangeKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.exchanges.getProfile("binance");

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-profile[":exchangeKey"]
Field Type Description
descriptionstringExchange description
companyCountrystringCountry of company
companyYearnumberYear established
capabilitiesobjectCapability flags (spot/futures/margin/p2p/otc/staking)
urlsarrayArray of { key, value } url entries
tagsarrayArray of tag keys
ratingsarrayArray of { key, value } rating entries

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "description": "Binance is a global cryptocurrency exchange.",
    "companyCountry": "KY",
    "companyYear": 2017,
    "capabilities": {
      "spot": true,
      "futures": true,
      "margin": true,
      "p2p": true,
      "otc": true,
      "staking": true
    },
    "urls": [
      {
        "key": "website",
        "value": "https://binance.com"
      }
    ],
    "tags": [
      "cex",
      "global"
    ],
    "ratings": [
      {
        "key": "trustScore",
        "value": 9.5
      }
    ]
  }
}
PUBLIC · EXCHANGES

Exchange Volume OHLC

Returns OHLC candle series for the exchange (aggVol default, aggDom optional).

POST /exchange/:exchangeKey/ohlc
Auth HMAC-SHA256 Rate limit 20 req/min URL params :exchangeKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).

Body parameters

Name Type Required Description
fieldstringoptionalSnapshotted field selector (e.g. aggLast or aggVol).
intervalstringoptionalLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
tOldestintegeroptionalOldest bin time, ms epoch (inclusive).
tNewestintegeroptionalNewest bin time, ms epoch (inclusive).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/ohlc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"5m"}'
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.exchanges.getOhlc("binance", { interval: "5m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-ohlc[":exchangeKey"]
Field Type Description
exchangeKeystringExchange short key
fieldstringSnapshotted field: aggVol (default) or aggDom
intervalstringLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
seriesarraySorted OHLC bins for the requested field
summaryobjectChange summary over the window

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "exchangeKey": "binance",
    "field": "aggVol",
    "interval": "5m",
    "series": [
      {
        "tOpen": 1700000100000,
        "tClose": 1700000400000,
        "open": 240000,
        "high": 252000,
        "low": 238000,
        "close": 250000,
        "volume": 250000
      },
      {
        "tOpen": 1700000400000,
        "tClose": 1700000700000,
        "open": 250000,
        "high": 268000,
        "low": 249000,
        "close": 265000,
        "volume": 265000
      }
    ],
    "summary": {
      "change_v": 25000,
      "change_p": 10.42
    }
  }
}
PUBLIC · EXCHANGES

Exchange Markets

Returns the list of markets available on a specific exchange, scoped to that venue. Supports filtering, sorting, and pagination via the body.

POST /exchange/:exchangeKey/markets/list
Auth HMAC-SHA256 Rate limit 30 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/markets/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.exchanges.listMarkets("binance", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

items[]
FieldTypeDescription
isActive boolean Whether the market is active on this venue.
lastPrice number Last traded price on this venue.
volume number 24h trading volume.
bidPrice / askPrice number Top of book bid / ask.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "isActive": true,
      "lastPrice": 67234.5,
      "volume": 12500.5,
      "bidPrice": 67230,
      "askPrice": 67235
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · EXCHANGES

Exchange Tickers

Per-exchange market tickers with full live price data: last, 24h high/low, change, volume, bid/ask, and spread for every pair on the venue.

POST /exchange/:exchangeKey/markets/tickers
Auth HMAC-SHA256 Rate limit 30 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/markets/tickers" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "marketKey": "BTC_USDT",
      "localPair": "BTC_USDT",
      "baseSymbol": "BTC",
      "quoteSymbol": "USDT",
      "lastPrice": 67234.5,
      "highPrice24h": 68500,
      "lowPrice24h": 66800,
      "change": 1.23,
      "volume": 12500.5,
      "bidPrice": 67230,
      "askPrice": 67235,
      "spread": 5,
      "isActive": true
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · EXCHANGES

Exchange Markets OHLC

Returns the latest OHLC candle for each market on an exchange.

POST /exchange/:exchangeKey/markets/ohlc
Auth HMAC-SHA256 Rate limit 20 req/min Pagination URL params :exchangeKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/markets/ohlc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50},"interval":"5m"}'
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.exchanges.getMarketsOhlc("binance", { pagination: { page: 1, limit: 50 }, interval: "5m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-market-ohlc-list[":marketKey"]
Field Type Description
tOpennumberBin open time (ms epoch)
tClosenumberBin close time (ms epoch)
opennumberBin open price
highnumberBin high price
lownumberBin low price
closenumberBin close price
volumenumberBin aggregate volume

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "tOpen": 1700000000000,
      "tClose": 1700003600000,
      "open": 67200,
      "high": 67800,
      "low": 67000,
      "close": 67500,
      "volume": 12500.5
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · EXCHANGES

Exchange Markets Limits

Returns per-exchange market limits (trading rules + fees).

POST /exchange/:exchangeKey/markets/limits
Auth HMAC-SHA256 Rate limit 30 req/min Pagination URL params :exchangeKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/markets/limits" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.exchanges.listMarketsLimits("binance", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-market-limit[":marketKey"]
Field Type Description
priceMinnumberMinimum price
priceMaxnumberMaximum price
priceTicknumberPrice tick size
quantityMinnumberMinimum quantity
quantityMaxnumberMaximum quantity
quantityTicknumberQuantity tick size
totalMinnumberMinimum notional
totalMaxnumberMaximum notional
feeMakernumberMaker fee rate
feeTakernumberTaker fee rate
feeIsTieredbooleanWhether fees are tiered

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "priceMin": 0.01,
      "priceMax": 1000000,
      "priceTick": 0.01,
      "quantityMin": 0.00001,
      "quantityMax": 9000,
      "quantityTick": 0.00001,
      "totalMin": 5,
      "totalMax": 9000000,
      "feeMaker": 0.001,
      "feeTaker": 0.001,
      "feeIsTiered": true
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · EXCHANGES

Get Exchange Market

Returns a single market for a specific exchange.

GET /exchange/:exchangeKey/market/:marketKey
Auth HMAC-SHA256 Rate limit 60 req/min URL params :exchangeKey, :marketKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
marketKeyrequiredGlobal market pair in BASE_QUOTE form (e.g. BTC_USDT).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/market/BTC_USDT" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.exchanges.getMarket("binance", "BTC_USDT");

// 3. Inspect the parsed response
console.log(res);

Response schema

exchangeMarket[":marketKey"]
Field Type Description
isActivebooleanWhether market is active
lastPricenumberLast traded price
volumenumber24h trading volume
bidPricenumberCurrent bid price
askPricenumberCurrent ask price

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "isActive": true,
    "lastPrice": 67234.5,
    "volume": 12500.5,
    "bidPrice": 67230,
    "askPrice": 67235
  }
}
PUBLIC · EXCHANGES

Exchange Market Ticker

Returns a single market ticker on an exchange.

GET /exchange/:exchangeKey/market/:marketKey/ticker
Auth HMAC-SHA256 Rate limit 60 req/min URL params :exchangeKey, :marketKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
marketKeyrequiredGlobal market pair in BASE_QUOTE form (e.g. BTC_USDT).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/market/BTC_USDT/ticker" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.exchanges.getMarketTicker("binance", "BTC_USDT");

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-market-ticker[":marketKey"]
Field Type Description
marketKeystringGlobal pair symbol
localPairstringLocal pair on exchange
baseSymbolstringBase symbol
quoteSymbolstringQuote symbol
lastPricenumberLast traded price
highPrice24hnumber24h high
lowPrice24hnumber24h low
changenumber24h price change
volumenumber24h volume
bidPricenumberCurrent bid price
askPricenumberCurrent ask price
spreadnumberBid/ask spread
isActivebooleanWhether market is active

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "marketKey": "BTC_USDT",
    "localPair": "BTC_USDT",
    "baseSymbol": "BTC",
    "quoteSymbol": "USDT",
    "lastPrice": 67234.5,
    "highPrice24h": 68500,
    "lowPrice24h": 66800,
    "change": 1.23,
    "volume": 12500.5,
    "bidPrice": 67230,
    "askPrice": 67235,
    "spread": 5,
    "isActive": true
  }
}
PUBLIC · EXCHANGES

Exchange Market Profile

Returns profile metadata for a single market on an exchange (tags + status).

GET /exchange/:exchangeKey/market/:marketKey/profile
Auth HMAC-SHA256 Rate limit 60 req/min URL params :exchangeKey, :marketKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
marketKeyrequiredGlobal market pair in BASE_QUOTE form (e.g. BTC_USDT).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/market/BTC_USDT/profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.exchanges.getMarketProfile("binance", "BTC_USDT");

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-market-profile[":marketKey"]
Field Type Description
localPairstringLocal pair on exchange
baseSymbolstringBase symbol
quoteSymbolstringQuote symbol
globalPairstringGlobal pair symbol
isListedbooleanWhether market is listed
isActivebooleanWhether market is active
openTradingbooleanTrading enabled
openApiTradingbooleanAPI trading enabled
limitsFetchedOnnumberLast limit fetch timestamp (ms epoch)
tagsarrayArray of tag keys

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "localPair": "BTC_USDT",
    "baseSymbol": "BTC",
    "quoteSymbol": "USDT",
    "globalPair": "BTC_USDT",
    "isListed": true,
    "isActive": true,
    "openTrading": true,
    "openApiTrading": true,
    "limitsFetchedOn": 1700000000000,
    "tags": [
      "spot",
      "major"
    ]
  }
}
PUBLIC · EXCHANGES

Exchange Market OHLC

Returns OHLC series for a single market on an exchange (lastPrice).

POST /exchange/:exchangeKey/market/:marketKey/ohlc
Auth HMAC-SHA256 Rate limit 20 req/min URL params :exchangeKey, :marketKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
marketKeyrequiredGlobal market pair in BASE_QUOTE form (e.g. BTC_USDT).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
tOldestintegeroptionalOldest bin time, ms epoch (inclusive).
tNewestintegeroptionalNewest bin time, ms epoch (inclusive).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/market/BTC_USDT/ohlc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"5m"}'
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.exchanges.getMarketOhlc("binance", "BTC_USDT", { interval: "5m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-market-ohlc[":marketKey"]
Field Type Description
exchangeKeystringExchange short key
marketKeystringGlobal pair symbol
intervalstringLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
seriesarraySorted OHLC bins on lastPrice
summaryobjectChange summary over the window

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "exchangeKey": "binance",
    "marketKey": "BTC_USDT",
    "interval": "5m",
    "series": [
      {
        "tOpen": 1700000100000,
        "tClose": 1700000400000,
        "open": 67200,
        "high": 67450,
        "low": 67150,
        "close": 67400,
        "volume": 8120.4
      },
      {
        "tOpen": 1700000400000,
        "tClose": 1700000700000,
        "open": 67400,
        "high": 67800,
        "low": 67350,
        "close": 67700,
        "volume": 9340.2
      }
    ],
    "summary": {
      "change_v": 500,
      "change_p": 0.74
    }
  }
}
PUBLIC · EXCHANGES

Exchange Assets

Returns assets listed on a specific exchange.

POST /exchange/:exchangeKey/assets/list
Auth HMAC-SHA256 Rate limit 30 req/min Pagination URL params :exchangeKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/assets/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.exchanges.listAssets("binance", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchangeAsset[":assetKey"]
Field Type Description
symbolstringAsset symbol
depositEnabledbooleanWhether deposits are enabled
withdrawEnabledbooleanWhether withdrawals are enabled
tradingEnabledbooleanWhether trading is enabled

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "symbol": "BTC",
      "depositEnabled": true,
      "withdrawEnabled": true,
      "tradingEnabled": true
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · EXCHANGES

Exchange Asset Tickers

Returns per-exchange asset tickers with live price data (paginated).

POST /exchange/:exchangeKey/assets/tickers
Auth HMAC-SHA256 Rate limit 30 req/min Pagination URL params :exchangeKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/assets/tickers" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.exchanges.listAssetsTickers("binance", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-asset-ticker[":assetKey"]
Field Type Description
assetKeystringGlobal asset symbol
localSymbolstringLocal symbol on exchange
lastPricenumberLatest aggregated price
priceQuotestringQuote currency of lastPrice
volume24hnumber24h aggregated volume
change24hnumber24h price change percentage
dominancenumberMarket dominance share

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "assetKey": "BTC",
      "localSymbol": "BTC",
      "lastPrice": 67234.5,
      "priceQuote": "USDT",
      "volume24h": 12500.5,
      "change24h": 1.23,
      "dominance": 52.4
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · EXCHANGES

Exchange Asset Limits

Returns per-exchange asset limits (precision + order/deposit/withdrawal bounds + fees).

POST /exchange/:exchangeKey/assets/limits
Auth HMAC-SHA256 Rate limit 30 req/min Pagination URL params :exchangeKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/assets/limits" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.exchanges.listAssetsLimits("binance", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-asset-limit[":assetKey"]
Field Type Description
precisionnumberDecimal precision
orderMinnumberMinimum order size
orderMaxnumberMaximum order size
depositMinnumberMinimum deposit amount
depositMaxnumberMaximum deposit amount
withdrawalMinnumberMinimum withdrawal amount
withdrawalMaxnumberMaximum withdrawal amount
withdrawFeenumberWithdrawal fee
depositEnabledbooleanWhether deposits are enabled
withdrawEnabledbooleanWhether withdrawals are enabled
tradingEnabledbooleanWhether trading is enabled

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "precision": 8,
      "orderMin": 0.00001,
      "orderMax": 9000,
      "depositMin": 0.0001,
      "depositMax": 1000000,
      "withdrawalMin": 0.001,
      "withdrawalMax": 100,
      "withdrawFee": 0.0005,
      "depositEnabled": true,
      "withdrawEnabled": true,
      "tradingEnabled": true
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · EXCHANGES

Get Exchange Asset

Returns a single asset for a specific exchange.

GET /exchange/:exchangeKey/asset/:assetKey
Auth HMAC-SHA256 Rate limit 60 req/min URL params :exchangeKey, :assetKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
assetKeyrequiredGlobal asset symbol (e.g. BTC).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/asset/BTC" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.exchanges.getAsset("binance", "BTC");

// 3. Inspect the parsed response
console.log(res);

Response schema

exchangeAsset[":assetKey"]
Field Type Description
symbolstringAsset symbol
depositEnabledbooleanWhether deposits are enabled
withdrawEnabledbooleanWhether withdrawals are enabled
tradingEnabledbooleanWhether trading is enabled

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "symbol": "BTC",
    "depositEnabled": true,
    "withdrawEnabled": true,
    "tradingEnabled": true
  }
}
PUBLIC · EXCHANGES

Exchange Asset Profile

Returns profile metadata for a single asset on an exchange (tags + status).

GET /exchange/:exchangeKey/asset/:assetKey/profile
Auth HMAC-SHA256 Rate limit 60 req/min URL params :exchangeKey, :assetKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
assetKeyrequiredGlobal asset symbol (e.g. BTC).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/asset/BTC/profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.exchanges.getAssetProfile("binance", "BTC");

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-asset-profile[":assetKey"]
Field Type Description
localSymbolstringLocal symbol on exchange
localNamestringLocal display name
isListedbooleanWhether asset is currently listed
depositEnabledbooleanDeposits enabled
withdrawEnabledbooleanWithdrawals enabled
tradingEnabledbooleanTrading enabled
precisionnumberDecimal precision
limitsFetchedOnnumberLast limit fetch timestamp (ms epoch)
isWarningbooleanWarning flag
tagsarrayArray of tag keys

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "localSymbol": "BTC",
    "localName": "Bitcoin",
    "isListed": true,
    "depositEnabled": true,
    "withdrawEnabled": true,
    "tradingEnabled": true,
    "precision": 8,
    "limitsFetchedOn": 1700000000000,
    "isWarning": false,
    "tags": [
      "major"
    ]
  }
}
PUBLIC · EXCHANGES

Exchange Asset OHLC

Returns OHLC series for a single asset on an exchange (aggLast).

POST /exchange/:exchangeKey/asset/:assetKey/ohlc
Auth HMAC-SHA256 Rate limit 20 req/min URL params :exchangeKey, :assetKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
assetKeyrequiredGlobal asset symbol (e.g. BTC).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
tOldestintegeroptionalOldest bin time, ms epoch (inclusive).
tNewestintegeroptionalNewest bin time, ms epoch (inclusive).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/asset/BTC/ohlc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"5m"}'
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.exchanges.getAssetOhlc("binance", "BTC", { interval: "5m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-asset-ohlc[":assetKey"]
Field Type Description
exchangeKeystringExchange short key
assetKeystringGlobal asset symbol
intervalstringLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
seriesarraySorted OHLC bins on aggLast
summaryobjectChange summary over the window

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "exchangeKey": "binance",
    "assetKey": "BTC",
    "interval": "5m",
    "series": [
      {
        "tOpen": 1700000100000,
        "tClose": 1700000400000,
        "open": 67200,
        "high": 67450,
        "low": 67150,
        "close": 67400,
        "volume": 8120.4
      },
      {
        "tOpen": 1700000400000,
        "tClose": 1700000700000,
        "open": 67400,
        "high": 67800,
        "low": 67350,
        "close": 67700,
        "volume": 9340.2
      }
    ],
    "summary": {
      "change_v": 500,
      "change_p": 0.74
    }
  }
}
PUBLIC · EXCHANGES

Get Exchange Asset Indicators

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.

POST /exchange/:exchangeKey/asset/:assetKey/indicators
Auth HMAC-SHA256 Rate limit 30 req/min URL params :exchangeKey, :assetKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
assetKeyrequiredGlobal asset symbol (e.g. BTC).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/asset/BTC/indicators" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"15m"}'
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.exchanges.getAssetIndicators("binance", "BTC", { interval: "15m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-asset-indicators[":assetKey"]
Field Type Description
exchangeKeystringExchange short key
assetKeystringGlobal asset symbol
intervalstringLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputednumberUnix time of the calculation moment
changePct_valnumberPercentage change between the first and last candle of the window
changePct_periodsnumberCandles used for the change percentage
changePct9_valnumberPercentage change over the last 9 candles
changePct9_periodsnumberCandles used for the 9 candle change percentage
changePct12_valnumberPercentage change over the last 12 candles
changePct12_periodsnumberCandles used for the 12 candle change percentage
changePct25_valnumberPercentage change over the last 25 candles
changePct25_periodsnumberCandles used for the 25 candle change percentage
sma20_valnumberSimple moving average of the candle closes, over 20 candles
sma20_periodsnumberCandles used for the 20 candle simple moving average
sma50_valnumberSimple moving average of the candle closes, over 50 candles
sma50_periodsnumberCandles used for the 50 candle simple moving average
sma200_valnumberSimple moving average of the candle closes, over 200 candles, the long trend line
sma200_periodsnumberCandles used for the 200 candle simple moving average
ema9_valnumberExponential moving average of the candle closes, over 9 candles
ema9_periodsnumberCandles used for the 9 candle exponential moving average
ema21_valnumberExponential moving average of the candle closes, over 21 candles
ema21_periodsnumberCandles used for the 21 candle exponential moving average
ema50_valnumberExponential moving average of the candle closes, over 50 candles
ema50_periodsnumberCandles used for the 50 candle exponential moving average
rsi9_valnumberFast relative strength index between 0 and 100, over 9 candles
rsi9_periodsnumberCandles used for the fast relative strength index
rsi14_valnumberRelative strength index between 0 and 100, over 14 candles
rsi14_periodsnumberCandles used for the relative strength index
rsi21_valnumberSlow relative strength index between 0 and 100, over 21 candles
rsi21_periodsnumberCandles used for the slow relative strength index
atr7_valnumberAverage true range over 7 candles
atr7_periodsnumberCandles used for the 7 candle average true range
atr14_valnumberAverage true range over 14 candles
atr14_periodsnumberCandles used for the 14 candle average true range
atr21_valnumberAverage true range over 21 candles
atr21_periodsnumberCandles used for the 21 candle average true range
bollinger1sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger1sd_uppernumberBollinger upper band, the middle band plus one standard deviation
bollinger1sd_lowernumberBollinger lower band, the middle band minus one standard deviation
bollinger1sd_periodsnumberCandles used for the bollinger bands
bollinger2sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger2sd_uppernumberBollinger upper band, the middle band plus two standard deviations
bollinger2sd_lowernumberBollinger lower band, the middle band minus two standard deviations
bollinger2sd_periodsnumberCandles used for the bollinger bands
bollinger3sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger3sd_uppernumberBollinger upper band, the middle band plus three standard deviations
bollinger3sd_lowernumberBollinger lower band, the middle band minus three standard deviations
bollinger3sd_periodsnumberCandles used for the bollinger bands
macd_valnumberMoving average convergence divergence line, using 12, 26 and 9 candles
macd_signalnumberSignal line of the convergence divergence indicator
macd_histogramnumberDistance between the convergence divergence line and its signal line
macd_periodsnumberCandles used for the convergence divergence indicator
macd535_valnumberMoving average convergence divergence line, using 5, 35 and 5 candles
macd535_signalnumberSignal line of the 5, 35 and 5 convergence divergence indicator
macd535_histogramnumberDistance between the 5, 35 and 5 convergence divergence line and its signal line
macd535_periodsnumberCandles used for the 5, 35 and 5 convergence divergence indicator
relativeVolume10_valnumberLatest daily volume reading against the average of the previous 10 readings, where one means the usual pace
relativeVolume10_periodsnumberReadings used for the 10 reading relative volume
relativeVolume20_valnumberLatest daily volume reading against the average of the previous 20 readings, where one means the usual pace
relativeVolume20_periodsnumberReadings used for the 20 reading relative volume
relativeVolume50_valnumberLatest daily volume reading against the average of the previous 50 readings, where one means the usual pace
relativeVolume50_periodsnumberReadings used for the 50 reading relative volume
rollingHigh10_valnumberHighest price seen over the last 10 candles
rollingHigh10_periodsnumberCandles used for the 10 candle rolling high
rollingHigh20_valnumberHighest price seen over the last 20 candles
rollingHigh20_periodsnumberCandles used for the 20 candle rolling high
rollingHigh55_valnumberHighest price seen over the last 55 candles
rollingHigh55_periodsnumberCandles used for the 55 candle rolling high
rollingLow10_valnumberLowest price seen over the last 10 candles
rollingLow10_periodsnumberCandles used for the 10 candle rolling low
rollingLow20_valnumberLowest price seen over the last 20 candles
rollingLow20_periodsnumberCandles used for the 20 candle rolling low
rollingLow55_valnumberLowest price seen over the last 55 candles
rollingLow55_periodsnumberCandles used for the 55 candle rolling low
vwap_valnumberVolume weighted average price over whole days, each day weighted by what it traded
vwap_periodsnumberWhole days used for the volume weighted average price
rankPct20_valnumberShare of the last 20 candles that closed at or below the latest one, from 0 to 100
rankPct20_periodsnumberCandles used for the 20 candle rank
rankPct50_valnumberShare of the last 50 candles that closed at or below the latest one, from 0 to 100
rankPct50_periodsnumberCandles used for the 50 candle rank

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "exchangeKey": "binance",
    "assetKey": "BTC",
    "interval": "15m",
    "tComputed": 1785313279,
    "changePct_val": 1.9162513985504726,
    "changePct_periods": 48,
    "changePct9_val": -0.4218339107,
    "changePct9_periods": 9,
    "changePct12_val": 0.3671224885,
    "changePct12_periods": 12,
    "changePct25_val": 1.2884019226,
    "changePct25_periods": 25,
    "sma20_val": 63697.17930616253,
    "sma20_periods": 20,
    "sma50_val": 63411.90284412,
    "sma50_periods": 50,
    "sma200_val": 62884.31775093,
    "sma200_periods": 200,
    "ema9_val": 63740.22615508,
    "ema9_periods": 9,
    "ema21_val": 63719.44210771339,
    "ema21_periods": 21,
    "ema50_val": 63498.06612284,
    "ema50_periods": 50,
    "rsi9_val": 57.12,
    "rsi9_periods": 9,
    "rsi14_val": 54.35,
    "rsi14_periods": 14,
    "rsi21_val": 52.68,
    "rsi21_periods": 21,
    "atr7_val": 688.4419028841,
    "atr7_periods": 7,
    "atr14_val": 631.3883305255476,
    "atr14_periods": 14,
    "atr21_val": 602.7710664918,
    "atr21_periods": 21,
    "bollinger1sd_val": 63697.17930616253,
    "bollinger1sd_upper": 64208.25611396,
    "bollinger1sd_lower": 63186.10249836,
    "bollinger1sd_periods": 20,
    "bollinger2sd_val": 63697.17930616253,
    "bollinger2sd_upper": 64719.33291696,
    "bollinger2sd_lower": 62675.02569536,
    "bollinger2sd_periods": 20,
    "bollinger3sd_val": 63697.17930616253,
    "bollinger3sd_upper": 65230.40972236,
    "bollinger3sd_lower": 62163.94888996,
    "bollinger3sd_periods": 20,
    "macd_val": 133.7640765429413,
    "macd_signal": 101.91548688986005,
    "macd_histogram": 31.84858965,
    "macd_periods": 26,
    "macd535_val": 86.4429117733,
    "macd535_signal": 71.2205318841,
    "macd535_histogram": 15.22237989,
    "macd535_periods": 35,
    "rollingHigh10_val": 64180.55418822,
    "rollingHigh10_periods": 10,
    "rollingHigh20_val": 64394.42867907523,
    "rollingHigh20_periods": 20,
    "rollingHigh55_val": 65022.11930448,
    "rollingHigh55_periods": 55,
    "rollingLow10_val": 63188.30117744,
    "rollingLow10_periods": 10,
    "rollingLow20_val": 62965.47219655413,
    "rollingLow20_periods": 20,
    "rollingLow55_val": 61903.88512207,
    "rollingLow55_periods": 55,
    "rankPct20_val": 85,
    "rankPct50_val": 72
  }
}
PUBLIC · EXCHANGES

Get Exchange Asset Indicator

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.

POST /exchange/:exchangeKey/asset/:assetKey/indicator/:indicatorKey
Auth HMAC-SHA256 Rate limit 60 req/min URL params :exchangeKey, :assetKey, :indicatorKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
assetKeyrequiredGlobal asset symbol (e.g. BTC).
indicatorKeyrequiredIndicator to compute.
Trend
sma20 sma50 sma200 ema9 ema21 ema50
Momentum
rsi9 rsi14 rsi21
Convergence1s, 15m, 12h, 5d
macd macd535
Volatility
atr7 atr14 atr21 bollinger1sd bollinger2sd bollinger3sd
Range
rollingHigh10 rollingHigh20 rollingHigh55 rollingLow10 rollingLow20 rollingLow55
Change
changePct changePct9 changePct12 changePct25
Weighted price6h, 12h
vwap
Volume6h, 12h, 5d, 1M
relativeVolume10 relativeVolume20 relativeVolume50
Position in range
rankPct20 rankPct50

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/asset/BTC/indicator/rsi14" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"15m"}'
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.exchanges.getAssetIndicator("binance", "BTC", "rsi14", { interval: "15m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-asset-indicators[":assetKey"]
Field Type Description
exchangeKeystringExchange short key
assetKeystringGlobal asset symbol
intervalstringLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputednumberUnix time of the calculation moment

Fields per indicator

Requested indicator Fields in the answer
changePctchangePct_val, changePct_periods
changePct9changePct9_val, changePct9_periods
changePct12changePct12_val, changePct12_periods
changePct25changePct25_val, changePct25_periods
sma20sma20_val, sma20_periods
sma50sma50_val, sma50_periods
sma200sma200_val, sma200_periods
ema9ema9_val, ema9_periods
ema21ema21_val, ema21_periods
ema50ema50_val, ema50_periods
rsi9rsi9_val, rsi9_periods
rsi14rsi14_val, rsi14_periods
rsi21rsi21_val, rsi21_periods
atr7atr7_val, atr7_periods
atr14atr14_val, atr14_periods
atr21atr21_val, atr21_periods
bollinger1sdbollinger1sd_val, bollinger1sd_upper, bollinger1sd_lower, bollinger1sd_periods
bollinger2sdbollinger2sd_val, bollinger2sd_upper, bollinger2sd_lower, bollinger2sd_periods
bollinger3sdbollinger3sd_val, bollinger3sd_upper, bollinger3sd_lower, bollinger3sd_periods
macdmacd_val, macd_signal, macd_histogram, macd_periods
macd535macd535_val, macd535_signal, macd535_histogram, macd535_periods
relativeVolume10relativeVolume10_val, relativeVolume10_periods
relativeVolume20relativeVolume20_val, relativeVolume20_periods
relativeVolume50relativeVolume50_val, relativeVolume50_periods
rollingHigh10rollingHigh10_val, rollingHigh10_periods
rollingHigh20rollingHigh20_val, rollingHigh20_periods
rollingHigh55rollingHigh55_val, rollingHigh55_periods
rollingLow10rollingLow10_val, rollingLow10_periods
rollingLow20rollingLow20_val, rollingLow20_periods
rollingLow55rollingLow55_val, rollingLow55_periods
vwapvwap_val, vwap_periods
rankPct20rankPct20_val
rankPct50rankPct50_val

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "exchangeKey": "binance",
    "assetKey": "BTC",
    "interval": "15m",
    "tComputed": 1785313279,
    "rsi14_val": 54.35,
    "rsi14_periods": 14
  }
}
PUBLIC · EXCHANGES

Get Exchange Market Indicators

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.

POST /exchange/:exchangeKey/market/:marketKey/indicators
Auth HMAC-SHA256 Rate limit 30 req/min URL params :exchangeKey, :marketKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
marketKeyrequiredGlobal market pair in BASE_QUOTE form (e.g. BTC_USDT).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/market/BTC_USDT/indicators" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"15m"}'
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.exchanges.getMarketIndicators("binance", "BTC_USDT", { interval: "15m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

exchange-market-indicators[":marketKey"]
Field Type Description
exchangeKeystringExchange short key
marketKeystringGlobal market pair key
intervalstringLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputednumberUnix time of the calculation moment
changePct_valnumberPercentage change between the first and last candle of the window
changePct_periodsnumberCandles used for the change percentage
changePct9_valnumberPercentage change over the last 9 candles
changePct9_periodsnumberCandles used for the 9 candle change percentage
changePct12_valnumberPercentage change over the last 12 candles
changePct12_periodsnumberCandles used for the 12 candle change percentage
changePct25_valnumberPercentage change over the last 25 candles
changePct25_periodsnumberCandles used for the 25 candle change percentage
sma20_valnumberSimple moving average of the candle closes, over 20 candles
sma20_periodsnumberCandles used for the 20 candle simple moving average
sma50_valnumberSimple moving average of the candle closes, over 50 candles
sma50_periodsnumberCandles used for the 50 candle simple moving average
sma200_valnumberSimple moving average of the candle closes, over 200 candles, the long trend line
sma200_periodsnumberCandles used for the 200 candle simple moving average
ema9_valnumberExponential moving average of the candle closes, over 9 candles
ema9_periodsnumberCandles used for the 9 candle exponential moving average
ema21_valnumberExponential moving average of the candle closes, over 21 candles
ema21_periodsnumberCandles used for the 21 candle exponential moving average
ema50_valnumberExponential moving average of the candle closes, over 50 candles
ema50_periodsnumberCandles used for the 50 candle exponential moving average
rsi9_valnumberFast relative strength index between 0 and 100, over 9 candles
rsi9_periodsnumberCandles used for the fast relative strength index
rsi14_valnumberRelative strength index between 0 and 100, over 14 candles
rsi14_periodsnumberCandles used for the relative strength index
rsi21_valnumberSlow relative strength index between 0 and 100, over 21 candles
rsi21_periodsnumberCandles used for the slow relative strength index
atr7_valnumberAverage true range over 7 candles
atr7_periodsnumberCandles used for the 7 candle average true range
atr14_valnumberAverage true range over 14 candles
atr14_periodsnumberCandles used for the 14 candle average true range
atr21_valnumberAverage true range over 21 candles
atr21_periodsnumberCandles used for the 21 candle average true range
bollinger1sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger1sd_uppernumberBollinger upper band, the middle band plus one standard deviation
bollinger1sd_lowernumberBollinger lower band, the middle band minus one standard deviation
bollinger1sd_periodsnumberCandles used for the bollinger bands
bollinger2sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger2sd_uppernumberBollinger upper band, the middle band plus two standard deviations
bollinger2sd_lowernumberBollinger lower band, the middle band minus two standard deviations
bollinger2sd_periodsnumberCandles used for the bollinger bands
bollinger3sd_valnumberBollinger middle band over 20 candles, the simple average of the recent closes
bollinger3sd_uppernumberBollinger upper band, the middle band plus three standard deviations
bollinger3sd_lowernumberBollinger lower band, the middle band minus three standard deviations
bollinger3sd_periodsnumberCandles used for the bollinger bands
macd_valnumberMoving average convergence divergence line, using 12, 26 and 9 candles
macd_signalnumberSignal line of the convergence divergence indicator
macd_histogramnumberDistance between the convergence divergence line and its signal line
macd_periodsnumberCandles used for the convergence divergence indicator
macd535_valnumberMoving average convergence divergence line, using 5, 35 and 5 candles
macd535_signalnumberSignal line of the 5, 35 and 5 convergence divergence indicator
macd535_histogramnumberDistance between the 5, 35 and 5 convergence divergence line and its signal line
macd535_periodsnumberCandles used for the 5, 35 and 5 convergence divergence indicator
relativeVolume10_valnumberLatest daily volume reading against the average of the previous 10 readings, where one means the usual pace
relativeVolume10_periodsnumberReadings used for the 10 reading relative volume
relativeVolume20_valnumberLatest daily volume reading against the average of the previous 20 readings, where one means the usual pace
relativeVolume20_periodsnumberReadings used for the 20 reading relative volume
relativeVolume50_valnumberLatest daily volume reading against the average of the previous 50 readings, where one means the usual pace
relativeVolume50_periodsnumberReadings used for the 50 reading relative volume
rollingHigh10_valnumberHighest price seen over the last 10 candles
rollingHigh10_periodsnumberCandles used for the 10 candle rolling high
rollingHigh20_valnumberHighest price seen over the last 20 candles
rollingHigh20_periodsnumberCandles used for the 20 candle rolling high
rollingHigh55_valnumberHighest price seen over the last 55 candles
rollingHigh55_periodsnumberCandles used for the 55 candle rolling high
rollingLow10_valnumberLowest price seen over the last 10 candles
rollingLow10_periodsnumberCandles used for the 10 candle rolling low
rollingLow20_valnumberLowest price seen over the last 20 candles
rollingLow20_periodsnumberCandles used for the 20 candle rolling low
rollingLow55_valnumberLowest price seen over the last 55 candles
rollingLow55_periodsnumberCandles used for the 55 candle rolling low
vwap_valnumberVolume weighted average price over whole days, each day weighted by what it traded
vwap_periodsnumberWhole days used for the volume weighted average price
rankPct20_valnumberShare of the last 20 candles that closed at or below the latest one, from 0 to 100
rankPct20_periodsnumberCandles used for the 20 candle rank
rankPct50_valnumberShare of the last 50 candles that closed at or below the latest one, from 0 to 100
rankPct50_periodsnumberCandles used for the 50 candle rank

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "exchangeKey": "binance",
    "marketKey": "BTC/USDT",
    "interval": "15m",
    "tComputed": 1785313279,
    "changePct_val": 1.9162513985504726,
    "changePct_periods": 48,
    "changePct9_val": -0.4218339107,
    "changePct9_periods": 9,
    "changePct12_val": 0.3671224885,
    "changePct12_periods": 12,
    "changePct25_val": 1.2884019226,
    "changePct25_periods": 25,
    "sma20_val": 63697.17930616253,
    "sma20_periods": 20,
    "sma50_val": 63411.90284412,
    "sma50_periods": 50,
    "sma200_val": 62884.31775093,
    "sma200_periods": 200,
    "ema9_val": 63740.22615508,
    "ema9_periods": 9,
    "ema21_val": 63719.44210771339,
    "ema21_periods": 21,
    "ema50_val": 63498.06612284,
    "ema50_periods": 50,
    "rsi9_val": 57.12,
    "rsi9_periods": 9,
    "rsi14_val": 54.35,
    "rsi14_periods": 14,
    "rsi21_val": 52.68,
    "rsi21_periods": 21,
    "atr7_val": 688.4419028841,
    "atr7_periods": 7,
    "atr14_val": 631.3883305255476,
    "atr14_periods": 14,
    "atr21_val": 602.7710664918,
    "atr21_periods": 21,
    "bollinger1sd_val": 63697.17930616253,
    "bollinger1sd_upper": 64208.25611396,
    "bollinger1sd_lower": 63186.10249836,
    "bollinger1sd_periods": 20,
    "bollinger2sd_val": 63697.17930616253,
    "bollinger2sd_upper": 64719.33291696,
    "bollinger2sd_lower": 62675.02569536,
    "bollinger2sd_periods": 20,
    "bollinger3sd_val": 63697.17930616253,
    "bollinger3sd_upper": 65230.40972236,
    "bollinger3sd_lower": 62163.94888996,
    "bollinger3sd_periods": 20,
    "macd_val": 133.7640765429413,
    "macd_signal": 101.91548688986005,
    "macd_histogram": 31.84858965,
    "macd_periods": 26,
    "macd535_val": 86.4429117733,
    "macd535_signal": 71.2205318841,
    "macd535_histogram": 15.22237989,
    "macd535_periods": 35,
    "rollingHigh10_val": 64180.55418822,
    "rollingHigh10_periods": 10,
    "rollingHigh20_val": 64394.42867907523,
    "rollingHigh20_periods": 20,
    "rollingHigh55_val": 65022.11930448,
    "rollingHigh55_periods": 55,
    "rollingLow10_val": 63188.30117744,
    "rollingLow10_periods": 10,
    "rollingLow20_val": 62965.47219655413,
    "rollingLow20_periods": 20,
    "rollingLow55_val": 61903.88512207,
    "rollingLow55_periods": 55,
    "rankPct20_val": 85,
    "rankPct50_val": 72
  }
}
PUBLIC · EXCHANGES

Get Exchange Market Indicator

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.

POST /exchange/:exchangeKey/market/:marketKey/indicator/:indicatorKey
Auth HMAC-SHA256 Rate limit 60 req/min URL params :exchangeKey, :marketKey, :indicatorKey

URL parameters

Name Required Description
exchangeKeyrequiredExchange key (e.g. binance, kraken, coinbase).
marketKeyrequiredGlobal market pair in BASE_QUOTE form (e.g. BTC_USDT).
indicatorKeyrequiredIndicator to compute.
Trend
sma20 sma50 sma200 ema9 ema21 ema50
Momentum
rsi9 rsi14 rsi21
Convergence1s, 15m, 12h, 5d
macd macd535
Volatility
atr7 atr14 atr21 bollinger1sd bollinger2sd bollinger3sd
Range
rollingHigh10 rollingHigh20 rollingHigh55 rollingLow10 rollingLow20 rollingLow55
Change
changePct changePct9 changePct12 changePct25
Weighted price6h, 12h
vwap
Volume6h, 12h, 5d, 1M
relativeVolume10 relativeVolume20 relativeVolume50
Position in range
rankPct20 rankPct50

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/exchange/binance/market/BTC_USDT/indicator/rsi14" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"15m"}'
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.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
exchangeKeystringExchange short key
marketKeystringGlobal market pair key
intervalstringLength of one candle: 1m, 5m, 15m, 1h, 4h, 1d or 1w
tComputednumberUnix time of the calculation moment

Fields per indicator

Requested indicator Fields in the answer
changePctchangePct_val, changePct_periods
changePct9changePct9_val, changePct9_periods
changePct12changePct12_val, changePct12_periods
changePct25changePct25_val, changePct25_periods
sma20sma20_val, sma20_periods
sma50sma50_val, sma50_periods
sma200sma200_val, sma200_periods
ema9ema9_val, ema9_periods
ema21ema21_val, ema21_periods
ema50ema50_val, ema50_periods
rsi9rsi9_val, rsi9_periods
rsi14rsi14_val, rsi14_periods
rsi21rsi21_val, rsi21_periods
atr7atr7_val, atr7_periods
atr14atr14_val, atr14_periods
atr21atr21_val, atr21_periods
bollinger1sdbollinger1sd_val, bollinger1sd_upper, bollinger1sd_lower, bollinger1sd_periods
bollinger2sdbollinger2sd_val, bollinger2sd_upper, bollinger2sd_lower, bollinger2sd_periods
bollinger3sdbollinger3sd_val, bollinger3sd_upper, bollinger3sd_lower, bollinger3sd_periods
macdmacd_val, macd_signal, macd_histogram, macd_periods
macd535macd535_val, macd535_signal, macd535_histogram, macd535_periods
relativeVolume10relativeVolume10_val, relativeVolume10_periods
relativeVolume20relativeVolume20_val, relativeVolume20_periods
relativeVolume50relativeVolume50_val, relativeVolume50_periods
rollingHigh10rollingHigh10_val, rollingHigh10_periods
rollingHigh20rollingHigh20_val, rollingHigh20_periods
rollingHigh55rollingHigh55_val, rollingHigh55_periods
rollingLow10rollingLow10_val, rollingLow10_periods
rollingLow20rollingLow20_val, rollingLow20_periods
rollingLow55rollingLow55_val, rollingLow55_periods
vwapvwap_val, vwap_periods
rankPct20rankPct20_val
rankPct50rankPct50_val

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "exchangeKey": "binance",
    "marketKey": "BTC/USDT",
    "interval": "15m",
    "tComputed": 1785313279,
    "rsi14_val": 54.35,
    "rsi14_periods": 14
  }
}
PUBLIC · EXCHANGES

Exchanges Help Map

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.

GET /exchanges/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/exchanges/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "exchanges",
  "help": {
    "paths": {
      "/exchanges/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PUBLIC · CHAINS

List Chains

Returns the list of every blockchain network the platform tracks, with unified listing data. Filtering, sorting, and pagination are supported.

POST /chains/list
Auth HMAC-SHA256 Rate limit 15 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/chains/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.chains.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

chain[":chainId"]
Field Type Description
namestringChain name
nativeTokenstringNative token symbol
iconstringChain icon URL
tvlnumberTotal value locked
chainIdnumberChain identifier

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "name": "Ethereum",
      "nativeToken": "ETH",
      "icon": "https://cdn.example.com/chains/ethereum.png",
      "tvl": 45000000000,
      "chainId": 1
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · CHAINS

Get Chain

Returns a single chain by chain ID.

GET /chain/:chainId
Auth HMAC-SHA256 Rate limit 60 req/min URL params :chainId

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.get("ethereum");

// 3. Inspect the parsed response
console.log(res);

Response schema

chain[":chainId"]
Field Type Description
namestringChain name
nativeTokenstringNative token symbol
iconstringChain icon URL
tvlnumberTotal value locked
chainIdnumberChain identifier

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "name": "Ethereum",
    "nativeToken": "ETH",
    "icon": "https://cdn.example.com/chains/ethereum.png",
    "tvl": 45000000000,
    "chainId": 1
  }
}
PUBLIC · CHAINS

Chain Profile

Returns chain profile (description, urls, tags, ratings).

GET /chain/:chainId/profile
Auth HMAC-SHA256 Rate limit 60 req/min URL params :chainId

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.getProfile("ethereum");

// 3. Inspect the parsed response
console.log(res);

Response schema

chain-profile[":chainId"]
Field Type Description
descriptionstringChain description
urlsarrayArray of { key, value } url entries
tagsarrayArray of tag keys
ratingsarrayArray of { key, value } rating entries

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "description": "Ethereum is a decentralized smart contract platform.",
    "urls": [
      {
        "key": "website",
        "value": "https://ethereum.org"
      },
      {
        "key": "explorer",
        "value": "https://etherscan.io"
      }
    ],
    "tags": [
      "layer-1",
      "evm",
      "pos"
    ],
    "ratings": [
      {
        "key": "cmcRank",
        "value": 2
      }
    ]
  }
}
PUBLIC · CHAINS

Gas Prices

Returns current gas prices for every supported chain in a single payload. Use this to drive a multi-chain fee selector or routing layer.

GET /chains/gas-prices/list
Auth HMAC-SHA256 Rate limit 10 req/min Pagination

Related endpoint

Per-chain price: GET /v1/chain/:chainId/gas-price. Same shape, scoped to a single chain.

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chains/gas-prices/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.listGasPrices();

// 3. Inspect the parsed response
console.log(res);

Response schema

gas[":chainId"]
Field Type Description
gasPricenumberCurrent gas price
gasPriceGweinumberGas price in gwei
gasPriceWeistringGas price in wei (raw)
baseFeestringBase fee (raw wei or gwei)
baseFeeGweinumberBase fee in gwei
priorityFeenumberPriority fee (tip)
priorityFeeGweinumberPriority fee in gwei
safeGasPricenumberSafe/slow gas price recommendation
proposeGasPricenumberProposed/average gas price recommendation
fastGasPricenumberFast gas price recommendation
gasCostUsdnumberGas cost in USD
gasQuoteRatenumberNative token to USD exchange rate
blockNumbernumberCurrent block number
timestampnumberMeasurement timestamp (unix)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "gasPrice": 32,
      "gasPriceGwei": 32,
      "gasPriceWei": "32000000000",
      "baseFee": "28000000000",
      "baseFeeGwei": 28,
      "priorityFee": 2,
      "priorityFeeGwei": 2,
      "safeGasPrice": 28,
      "proposeGasPrice": 32,
      "fastGasPrice": 38,
      "gasCostUsd": 1.45,
      "gasQuoteRate": 3500,
      "blockNumber": 18900000,
      "timestamp": 1700000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · CHAINS

Get Chain Gas Price

Returns gas price for a specific chain.

GET /chain/:chainId/gas-price
Auth HMAC-SHA256 Rate limit 10 req/min URL params :chainId

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/gas-price" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.getGasPrice("ethereum");

// 3. Inspect the parsed response
console.log(res);

Response schema

gas[":chainId"]
Field Type Description
gasPricenumberCurrent gas price
gasPriceGweinumberGas price in gwei
gasPriceWeistringGas price in wei (raw)
baseFeestringBase fee (raw wei or gwei)
baseFeeGweinumberBase fee in gwei
priorityFeenumberPriority fee (tip)
priorityFeeGweinumberPriority fee in gwei
safeGasPricenumberSafe/slow gas price recommendation
proposeGasPricenumberProposed/average gas price recommendation
fastGasPricenumberFast gas price recommendation
gasCostUsdnumberGas cost in USD
gasQuoteRatenumberNative token to USD exchange rate
blockNumbernumberCurrent block number
timestampnumberMeasurement timestamp (unix)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "gasPrice": 32,
    "gasPriceGwei": 32,
    "gasPriceWei": "32000000000",
    "baseFee": "28000000000",
    "baseFeeGwei": 28,
    "priorityFee": 2,
    "priorityFeeGwei": 2,
    "safeGasPrice": 28,
    "proposeGasPrice": 32,
    "fastGasPrice": 38,
    "gasCostUsd": 1.45,
    "gasQuoteRate": 3500,
    "blockNumber": 18900000,
    "timestamp": 1700000000
  }
}
PUBLIC · CHAINS

Chain Gas OHLC

Returns OHLC candle series for the chain gas price.

POST /chain/:chainId/gas-ohlc
Auth HMAC-SHA256 Rate limit 20 req/min URL params :chainId

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
tOldestintegeroptionalOldest bin time, ms epoch (inclusive).
tNewestintegeroptionalNewest bin time, ms epoch (inclusive).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/gas-ohlc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"5m"}'
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.chains.getGasOhlc("ethereum", { interval: "5m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

chain-gas-ohlc[":chainId"]
Field Type Description
chainKeystringChain short key (e.g. eth)
intervalstringLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
seriesarraySorted OHLC bins on gasPrice
summaryobjectChange summary over the window

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "chainKey": "ethereum",
    "interval": "5m",
    "series": [
      {
        "tOpen": 1700000100000,
        "tClose": 1700000400000,
        "open": 30,
        "high": 34,
        "low": 29,
        "close": 32,
        "volume": 155
      },
      {
        "tOpen": 1700000400000,
        "tClose": 1700000700000,
        "open": 32,
        "high": 36,
        "low": 31,
        "close": 35,
        "volume": 168
      }
    ],
    "summary": {
      "change_v": 5,
      "change_p": 16.67
    }
  }
}
PUBLIC · CHAINS

Chain Tokens

Returns the token list for a specific chain, including ERC-20-style metadata. Filtering, sorting, and pagination supported.

POST /chain/:chainId/tokens
Auth HMAC-SHA256 Rate limit 10 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-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

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/tokens" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.chains.listTokens("ethereum", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

token[":tokenAddress"]
Field Type Description
circulatingSupplynumberCirculating supply
holderCountnumberNumber of token holders
priceUsdnumberCurrent token price in USD
volumeUsd24hnumber24h trading volume in USD
marketCapUsdnumberMarket capitalization in USD
verifiedbooleanWhether token contract is verified

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "circulatingSupply": 1000000000,
      "holderCount": 250000,
      "priceUsd": 1,
      "volumeUsd24h": 5000000000,
      "marketCapUsd": 1000000000,
      "verified": true
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · CHAINS

Get Token

Returns detailed info for a specific token on a chain.

GET /chain/:chainId/token/:tokenAddress
Auth HMAC-SHA256 Rate limit 10 req/min URL params :chainId, :tokenAddress

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).
tokenAddressrequiredToken contract address (chain-specific format).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.getToken("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48");

// 3. Inspect the parsed response
console.log(res);

Response schema

token[":tokenAddress"]
Field Type Description
circulatingSupplynumberCirculating supply
holderCountnumberNumber of token holders
priceUsdnumberCurrent token price in USD
volumeUsd24hnumber24h trading volume in USD
marketCapUsdnumberMarket capitalization in USD
verifiedbooleanWhether token contract is verified

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "circulatingSupply": 1000000000,
    "holderCount": 250000,
    "priceUsd": 1,
    "volumeUsd24h": 5000000000,
    "marketCapUsd": 1000000000,
    "verified": true
  }
}
PUBLIC · CHAINS

Token Holders

Returns holder list for a specific token.

POST /chain/:chainId/token/:tokenAddress/holders
Auth HMAC-SHA256 Rate limit 10 req/min Pagination URL params :chainId, :tokenAddress

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).
tokenAddressrequiredToken contract address (chain-specific format).

Body parameters

Name Type Required Description
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holders" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.chains.listTokenHolders("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

holder[":holderAddress"]
Field Type Description
balancestringRaw balance held
balanceFormattednumberHuman-readable balance
balanceUsdnumberUSD value of holdings
percentageOfSupplynumberPercentage of total supply held

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "balance": "5000000000000000000",
      "balanceFormatted": 5,
      "balanceUsd": 17500,
      "percentageOfSupply": 0.0005
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · CHAINS

Get Token Holder

Returns details for a specific token holder.

GET /chain/:chainId/token/:tokenAddress/holder/:holderAddress
Auth HMAC-SHA256 Rate limit 10 req/min URL params :chainId, :tokenAddress, :holderAddress

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).
tokenAddressrequiredToken contract address (chain-specific format).
holderAddressrequiredToken holder wallet address.

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holder/0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.getTokenHolder("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1");

// 3. Inspect the parsed response
console.log(res);

Response schema

holder[":holderAddress"]
Field Type Description
balancestringRaw balance held
balanceFormattednumberHuman-readable balance
balanceUsdnumberUSD value of holdings
percentageOfSupplynumberPercentage of total supply held

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "balance": "5000000000000000000",
    "balanceFormatted": 5,
    "balanceUsd": 17500,
    "percentageOfSupply": 0.0005
  }
}
PUBLIC · CHAINS

Token Transfers

Returns transfer history for a specific token.

POST /chain/:chainId/token/:tokenAddress/transfers
Auth HMAC-SHA256 Rate limit 10 req/min Pagination URL params :chainId, :tokenAddress

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).
tokenAddressrequiredToken contract address (chain-specific format).

Body parameters

Name Type Required Description
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/transfers" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.chains.listTokenTransfers("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

transfer[":txHash"]
Field Type Description
fromAddressstringSender address
toAddressstringRecipient address
valuestringTransfer amount in smallest unit (raw)
valueFormattednumberHuman-readable transfer amount
valueUsdnumberUSD value of transfer
gasSpentnumberGas consumed
gasFeeUsdnumberGas fee in USD
successfulbooleanTransaction success status
timestampnumberTransfer timestamp (unix)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "fromAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
      "toAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "value": "1000000000000000000",
      "valueFormatted": 1,
      "valueUsd": 3500,
      "gasSpent": 21000,
      "gasFeeUsd": 1.45,
      "successful": true,
      "timestamp": 1700000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · CHAINS

Get Token Transfer

Returns details for a specific token transfer.

GET /chain/:chainId/token/:tokenAddress/transfer/:txHash
Auth HMAC-SHA256 Rate limit 10 req/min URL params :chainId, :tokenAddress, :txHash

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).
tokenAddressrequiredToken contract address (chain-specific format).
txHashrequiredTransaction hash on the chain.

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/transfer/0x1234abcd5678ef901234567890abcdef1234567890abcdef1234567890abcdef" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.getTokenTransfer("ethereum", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0x1234abcd5678ef901234567890abcdef1234567890abcdef1234567890abcdef");

// 3. Inspect the parsed response
console.log(res);

Response schema

transfer[":txHash"]
Field Type Description
fromAddressstringSender address
toAddressstringRecipient address
valuestringTransfer amount in smallest unit (raw)
valueFormattednumberHuman-readable transfer amount
valueUsdnumberUSD value of transfer
gasSpentnumberGas consumed
gasFeeUsdnumberGas fee in USD
successfulbooleanTransaction success status
timestampnumberTransfer timestamp (unix)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "fromAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "toAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "value": "1000000000000000000",
    "valueFormatted": 1,
    "valueUsd": 3500,
    "gasSpent": 21000,
    "gasFeeUsd": 1.45,
    "successful": true,
    "timestamp": 1700000000
  }
}
PUBLIC · CHAINS

Wallet Portfolio

Returns portfolio balance for a wallet on a chain.

GET /chain/:chainId/wallet/:walletAddress/portfolio
Auth HMAC-SHA256 Rate limit 10 req/min URL params :chainId, :walletAddress

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).
walletAddressrequiredWallet address (chain-specific format).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/wallet/0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1/portfolio" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.getWalletPortfolio("ethereum", "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1");

// 3. Inspect the parsed response
console.log(res);

Response schema

walletPortfolio[":walletAddress"]
Field Type Description
totalBalanceUsdnumberTotal portfolio value in USD
totalTokenCountnumberTotal number of tokens held

Response schema

walletPortfolio[":walletAddress"].tokens[0]
Field Type Description
balancestringToken raw balance
balanceUsdnumberToken balance in USD
priceUsdnumberToken price in USD

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "totalBalanceUsd": 25000,
    "totalTokenCount": 12,
    "tokens": [
      {
        "balance": "5000000000000000000",
        "balanceUsd": 17500,
        "priceUsd": 3500
      }
    ]
  }
}
PUBLIC · CHAINS

Wallet Token Balance

Returns balance for a specific token in a wallet.

GET /chain/:chainId/wallet/:walletAddress/balance/:tokenAddress
Auth HMAC-SHA256 Rate limit 10 req/min URL params :chainId, :walletAddress, :tokenAddress

URL parameters

Name Required Description
chainIdrequiredChain identifier (e.g. ethereum, polygon, base).
walletAddressrequiredWallet address (chain-specific format).
tokenAddressrequiredToken contract address (chain-specific format).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chain/ethereum/wallet/0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1/balance/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.chains.getWalletBalance("ethereum", "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48");

// 3. Inspect the parsed response
console.log(res);

Response schema

walletBalance[":walletAddress"][":tokenAddress"]
Field Type Description
balancestringRaw token balance
balanceFormattednumberHuman-readable balance
balanceUsdnumberUSD value of balance
priceUsdnumberCurrent token price in USD
priceUsd24hnumberToken price 24h ago in USD
nativeTokenbooleanWhether this is the native gas token
isSpambooleanWhether token is suspected spam

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "balance": "5000000000000000000",
    "balanceFormatted": 5,
    "balanceUsd": 17500,
    "priceUsd": 3500,
    "priceUsd24h": 3450,
    "nativeToken": true,
    "isSpam": false
  }
}
PUBLIC · CHAINS

Chains Help Map

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.

GET /chains/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/chains/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "blockchain",
  "help": {
    "paths": {
      "/chains/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PUBLIC · MACRO

List Macro Types

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.

GET /macro/types
Auth HMAC-SHA256 Rate limit 15 req/min Pagination

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/macro/types" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.macro.listTypes();

// 3. Inspect the parsed response
console.log(res);

Response schema

macro-type[":key"]
Field Type Description
keystringMacro type identifier
labelstringHuman-readable type label
descriptionstringType description
paramsarrayRequired parameters for value lookup
ohlcParamsarrayRequired parameters for OHLC
additionalFieldsarrayType-specific output fields beyond country/date/value/isLatest

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "label": "Inflation Rate",
      "description": "Year-over-year change in CPI",
      "params": [
        "country"
      ],
      "ohlcParams": [
        "country"
      ],
      "additionalFields": [
        "inflationIndex"
      ]
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · MACRO

Macro Values

Returns the latest values for a given macro indicator type (e.g. policy_rate). Use the listing endpoint to discover available types.

POST /macro/values/:macroType
Auth HMAC-SHA256 Rate limit 15 req/min Pagination

Body parameters

Name Type Required Description
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/macro/values/policy_rate" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.macro.listValues("policy_rate", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

macro-value[":country"]
Field Type Description
countrystringCountry code the observation belongs to
valuenumberType-specific numeric value
datestringObservation date (YYYY-MM-DD)
isLatestbooleanWhether this is the most recent observation
centralBankKeystringCentral bank identifier (policyRate only)
inflationIndexnumberCPI index value (inflationRate only)
currencystringCurrency code (moneySupply only)
scalestringScale indicator (moneySupply only)
maturitystringMaturity period (bondYield only)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "value": 3.2,
      "date": "2026-04-30",
      "isLatest": true,
      "centralBankKey": "FED",
      "inflationIndex": 312.4,
      "currency": "USD",
      "scale": "billions",
      "maturity": "10Y"
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PUBLIC · MACRO

Get Macro Value

Returns the latest macro value for a single country (bondYield additionally requires maturity).

POST /macro/value/:macroType
Auth HMAC-SHA256 Rate limit 30 req/min URL params :macroType

URL parameters

Name Required Description
macroTyperequiredMacro indicator type key (see List Macro Types).

Body parameters

Name Type Required Description
countrystringrequiredCountry code the observation belongs to (e.g. US, TR, DE).
maturitystringoptionalBond maturity period (e.g. 2Y, 10Y). Required for bondYield only.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/macro/value/policy_rate" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"country":"YOUR_COUNTRY"}'
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.macro.getValue("policy_rate", { country: "YOUR_COUNTRY" });

// 3. Inspect the parsed response
console.log(res);

Response schema

macro-value[":country"]
Field Type Description
countrystringCountry code the observation belongs to
valuenumberType-specific numeric value
datestringObservation date (YYYY-MM-DD)
isLatestbooleanWhether this is the most recent observation
centralBankKeystringCentral bank identifier (policyRate only)
inflationIndexnumberCPI index value (inflationRate only)
currencystringCurrency code (moneySupply only)
scalestringScale indicator (moneySupply only)
maturitystringMaturity period (bondYield only)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "value": 3.2,
    "date": "2026-04-30",
    "isLatest": true,
    "centralBankKey": "FED",
    "inflationIndex": 312.4,
    "currency": "USD",
    "scale": "billions",
    "maturity": "10Y"
  }
}
PUBLIC · MACRO

Macro OHLC

Returns OHLC candle series for a macro indicator type. Standard interval, tOldest, tNewest body parameters apply.

POST /macro/ohlc/:macroType
Auth HMAC-SHA256 Rate limit 20 req/min

Body parameters

Name Type Required Description
countrystringrequiredCountry code the observation belongs to (e.g. US, TR, DE).
intervalstringoptionalLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
tOldestintegeroptionalOldest bin time, ms epoch (inclusive).
tNewestintegeroptionalNewest bin time, ms epoch (inclusive).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/macro/ohlc/policy_rate" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"country":"TR","interval":"5m"}'
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.macro.getOhlc("policy_rate", { interval: "5m", country: "TR" });

// 3. Inspect the parsed response
console.log(res);

Response schema

macro-ohlc[":macroType"]
Field Type Description
macroTypestringMacro type the series belongs to
countrystringCountry code the series belongs to
summaryobjectAggregate change summary over the window
intervalstringLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
seriesarrayOHLC bars: {tOpen, tClose, open, high, low, close}. For sparse macro observations the bar is degenerate (open = high = low = close = value).

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "macroType": "policy_rate",
    "country": "TR",
    "interval": "5m",
    "series": [
      {
        "tOpen": 1698796800000,
        "tClose": 1698796800000,
        "open": 3.1,
        "high": 3.1,
        "low": 3.1,
        "close": 3.1
      },
      {
        "tOpen": 1701388800000,
        "tClose": 1701388800000,
        "open": 3.2,
        "high": 3.2,
        "low": 3.2,
        "close": 3.2
      }
    ],
    "summary": {
      "change_v": 0.1,
      "change_p": 3.23
    }
  }
}
PUBLIC · MACRO

List Indexes

Returns all platform computed indexes with their latest values (fear and greed, crypto baskets).

POST /macro/indexes/list
Auth HMAC-SHA256 Rate limit 10 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/macro/indexes/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.macro.listIndexes({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

macro-index-list[":indexKey"]
Field Type Description
indexKeystringUnique index key
namestringHuman readable index name
lastValuenumberLatest index value
change24hnumberMove since the previous reading, in index points on a bounded scale and as a percentage otherwise

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "indexKey": "fearGreed",
      "name": "Fear & Greed Index",
      "lastValue": 61,
      "change24h": 3
    },
    {
      "indexKey": "crypto20",
      "name": "Crypto 20",
      "lastValue": 117.64,
      "change24h": -1.12
    },
    {
      "indexKey": "crypto100",
      "name": "Crypto 100",
      "lastValue": 104.39,
      "change24h": -0.84
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 3
  }
}
PUBLIC · MACRO

Get Index

Returns a single platform index with latest value and constituents summary.

GET /macro/index/:indexKey
Auth HMAC-SHA256 Rate limit 30 req/min URL params :indexKey

URL parameters

Name Required Description
indexKeyrequiredPlatform index key (e.g. fearGreed, crypto20, crypto100).

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/macro/index/fearGreed" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.macro.getIndex("fearGreed");

// 3. Inspect the parsed response
console.log(res);

Response schema

macro-index-get[":indexKey"]
Field Type Description
indexKeystringUnique index key
namestringHuman readable index name
descriptionstringWhat the index measures and how to read it
methodologystringHow the index is built: equal weight, market cap weight, or external when it is published by another party and read as is
sourcestringPublisher an externally sourced index is credited to, absent when the platform computes the index itself
lastValuenumberLatest index value
change24hnumberMove 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
nrOfConstituentsnumberNumber of assets composing the index, absent for indexes that are not built from a basket
tComputednumberUnix time the latest value last moved, so a source that went quiet shows as stale rather than freshly published

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "indexKey": "fearGreed",
    "name": "Fear & Greed Index",
    "description": "Overall crypto market sentiment from extreme fear (0) to extreme greed (100)",
    "methodology": "external",
    "source": "alternative.me",
    "lastValue": 61,
    "change24h": 3,
    "tComputed": 1753718400
  }
}
PUBLIC · MACRO

Index OHLC

Returns OHLC candle series for the index value.

POST /macro/index/:indexKey/ohlc
Auth HMAC-SHA256 Rate limit 30 req/min URL params :indexKey

URL parameters

Name Required Description
indexKeyrequiredPlatform index key (e.g. fearGreed, crypto20, crypto100).

Body parameters

Name Type Required Description
intervalstringoptionalLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M.
tOldestintegeroptionalOldest bin time, ms epoch (inclusive).
tNewestintegeroptionalNewest bin time, ms epoch (inclusive).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/macro/index/fearGreed/ohlc" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"interval":"5m"}'
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.macro.getIndexOhlc("fearGreed", { interval: "5m" });

// 3. Inspect the parsed response
console.log(res);

Response schema

macro-index-ohlc[":indexKey"]
Field Type Description
indexKeystringUnique index key
intervalstringLength of one candle: 1s, 1m, 5m, 4h, 12h, 73h or 0.5M
seriesarraySorted 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
summaryobjectAggregate change summary over the returned window

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "indexKey": "fearGreed",
    "interval": "5m",
    "series": [
      {
        "tOpen": 1700000100000,
        "tClose": 1700000400000,
        "open": 58,
        "high": 60,
        "low": 57,
        "close": 59
      },
      {
        "tOpen": 1700000400000,
        "tClose": 1700000700000,
        "open": 59,
        "high": 62,
        "low": 59,
        "close": 61
      }
    ],
    "summary": {
      "change_v": 3,
      "change_p": 5.17
    }
  }
}
PUBLIC · MACRO

Macro Help Map

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.

GET /macro/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/macro/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "macro",
  "help": {
    "paths": {
      "/macro/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PRIVATE · POOLS

List Directive Values

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.

POST /pool/directives/list
Auth HMAC + pool-bound key Rate limit 60 req/min Pagination

Body parameters

Name Type Required Description
directiveKeysarrayoptionalNames of the directives wanted, up to 100. Omit to read every directive the pool exposes.
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/pool/directives/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

directive-value[":directiveKey"]
Field Type Description
directiveKeystringShort name the pool gave this directive
kindnumberWhich kind of control this directive is
rawobjectThe value as it is stored, wrapped so any kind of value fits
entriesobjectThe 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
numbernumberThe value as a plain number, when the directive holds one
textstringThe value written out as a short line of text
hashstringFingerprint of the current value, quoted back on a write so nobody is overwritten
updatedOnnumberWhen the value last changed, as a stamp
updatedVianumberWhich door the last change came through - the browser, this api, an assistant, or the platform itself

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "directiveKey": "kill_switch",
      "kind": 10,
      "raw": { "v": true },
      "entries": {},
      "number": 1,
      "text": "Trading enabled",
      "hash": "4c1f9a3e7b2d85604fe1c93a7b0d2e58f4a6c17b9d3e0852af61c94b7e2d5083",
      "updatedOn": 1756642800000,
      "updatedVia": 10
    },
    {
      "directiveKey": "greed_xckdf1",
      "kind": 20,
      "raw": { "v": 35 },
      "entries": {},
      "number": 35,
      "text": "35%",
      "hash": "b70e4d2c8f1a63950dc7e21b845f3a06c9d18e47b2306fa5e8c14d97b0532fae",
      "updatedOn": 1756729200000,
      "updatedVia": 20
    },
    {
      "directiveKey": "asset_directives",
      "kind": 60,
      "raw": { "v": { "BTC": "buy", "ETH": "hold", "SOL": "sell" } },
      "entries": { "BTC": "buy", "ETH": "hold", "SOL": "sell" },
      "number": null,
      "text": "BTC:buy, ETH:hold, SOL:sell",
      "hash": "e93b1c50a7d248f6b0359e1cd84a72b6f05e3d91c827a460bd5f1e38c9047ab2",
      "updatedOn": 1756732800000,
      "updatedVia": 20
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 3
  }
}

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.

POST /pool/directives/defs
Auth HMAC + pool-bound key Rate limit 30 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/pool/directives/defs" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.listDefs({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

directive-definition[":directiveKey"]
Field Type Description
directiveKeystringShort name the pool gave this directive
kindnumberWhich kind of control this directive is
labelstringReadable name shown for the directive
descriptionstringWhat the directive is for, in the words of whoever created it
detailsobjectHow the directive is defined - its bounds, steps, choices or named entries
allowExternalWritebooleanWhether the owner of the directive lets an outside caller change its value
updatedOnnumberWhen the definition last changed, as a stamp
relPoolKeystringThe pool this directive belongs to

Response Example

200 OK APPLICATION/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.

PRIVATE · POOLS

Get Directive Value

Returns the current value of one directive.

POST /pool/directive/:directiveKey
Auth HMAC + pool-bound key Rate limit 60 req/min URL params :directiveKey

URL parameters

Name Required Description
directiveKeyrequiredDirective name chosen by the pool (e.g. greed_xckdf1, kill_switch).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/pool/directive/greed_xckdf1" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.get("greed_xckdf1");

// 3. Inspect the parsed response
console.log(res);

Response schema

directive-value[":directiveKey"]
Field Type Description
directiveKeystringShort name the pool gave this directive
kindnumberWhich kind of control this directive is
rawobjectThe value as it is stored, wrapped so any kind of value fits
entriesobjectThe 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
numbernumberThe value as a plain number, when the directive holds one
textstringThe value written out as a short line of text
hashstringFingerprint of the current value, quoted back on a write so nobody is overwritten
updatedOnnumberWhen the value last changed, as a stamp
updatedVianumberWhich door the last change came through - the browser, this api, an assistant, or the platform itself

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "directiveKey": "greed_xckdf1",
    "kind": 20,
    "raw": { "v": 35 },
    "entries": {},
    "number": 35,
    "text": "35%",
    "hash": "b70e4d2c8f1a63950dc7e21b845f3a06c9d18e47b2306fa5e8c14d97b0532fae",
    "updatedOn": 1756729200000,
    "updatedVia": 20
  }
}

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.

POST /pool/directive/:directiveKey/def
Auth HMAC + pool-bound key Rate limit 30 req/min URL params :directiveKey

URL parameters

Name Required Description
directiveKeyrequiredDirective name chosen by the pool (e.g. greed_xckdf1, kill_switch).

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/pool/directive/greed_xckdf1/def" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.getDef("greed_xckdf1");

// 3. Inspect the parsed response
console.log(res);

Response schema

directive-definition[":directiveKey"]
Field Type Description
directiveKeystringShort name the pool gave this directive
kindnumberWhich kind of control this directive is
labelstringReadable name shown for the directive
descriptionstringWhat the directive is for, in the words of whoever created it
detailsobjectHow the directive is defined - its bounds, steps, choices or named entries
allowExternalWritebooleanWhether the owner of the directive lets an outside caller change its value
updatedOnnumberWhen the definition last changed, as a stamp
relPoolKeystringThe pool this directive belongs to

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "directiveKey": "asset_directives",
    "kind": 60,
    "label": "Asset Directives",
    "description": "What the pool wants done with each asset it names",
    "details": {
      "kind": 60,
      "label": "Asset Directives",
      "description": "What the pool wants done with each asset it names",
      "icon": "instruction",
      "defMap": {
        "keyPattern": "^[A-Z0-9]{1,20}$",
        "keyMaxLength": 20,
        "maxEntries": 200,
        "valKind": "option",
        "valOptions": [
          { "optKey": "buy", "label": "Buy" },
          { "optKey": "sell", "label": "Sell" },
          { "optKey": "hold", "label": "Hold" }
        ],
        "valDefault": {}
      }
    },
    "raw": { "v": { "BTC": "buy", "ETH": "hold", "SOL": "sell" } },
    "entries": { "BTC": "buy", "ETH": "hold", "SOL": "sell" },
    "number": null,
    "text": "BTC:buy, ETH:hold, SOL:sell",
    "hash": "e93b1c50a7d248f6b0359e1cd84a72b6f05e3d91c827a460bd5f1e38c9047ab2",
    "allowExternalWrite": false,
    "updatedOn": 1756468800000,
    "updatedVia": 20,
    "relPoolKey": "pl-9df31a"
  }
}

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.

POST /pool/directive/:directiveKey/revs
Auth HMAC + pool-bound key Rate limit 30 req/min Pagination URL params :directiveKey

URL parameters

Name Required Description
directiveKeyrequiredDirective name chosen by the pool (e.g. greed_xckdf1, kill_switch).

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/pool/directive/greed_xckdf1/revs" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.listRevs("greed_xckdf1", { pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

directive-revision[":directiveKey"]
Field Type Description
directiveKeystringShort name the pool gave this directive
revNrnumberWhere this change sits in the trail of the directive, counting up
revKindnumberWhat the change was about - a new directive, a new value, a new definition or a removal
rawobjectThe value this change stored, as it is kept
numbernumberThe value this change stored, as a plain number
entriesobjectThe 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
textstringThe value this change stored, written out as text
changedVianumberWhich door the change came through, such as the browser or this interface
changedBystringThe person the change is credited to, when there is one
changedOnnumberWhen the change was recorded, as a stamp
changeNotestringThe reason given for the change, when one was given

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "directiveKey": "greed_xckdf1",
      "revNr": 7,
      "revKind": 20,
      "raw": { "v": 35 },
      "entries": {},
      "number": 35,
      "text": "35%",
      "changedVia": 20,
      "changedBy": "usr-4b81ce",
      "changedOn": 1756729200000,
      "changeNote": "Trimmed ahead of the rate decision"
    },
    {
      "directiveKey": "greed_xckdf1",
      "revNr": 6,
      "revKind": 20,
      "raw": { "v": 60 },
      "entries": {},
      "number": 60,
      "text": "60%",
      "changedVia": 10,
      "changedBy": "usr-4b81ce",
      "changedOn": 1756645800000,
      "changeNote": ""
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 7
  }
}

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.

POST /pool/directive/:directiveKey/set
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :directiveKey

URL parameters

Name Required Description
directiveKeyrequiredDirective name chosen by the pool (e.g. greed_xckdf1, kill_switch).

Body parameters

Name Type Required Description
valueanyrequiredThe 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.
expectedHashstringoptionalFingerprint of the version you read, quoted back so a change somebody else made is reported instead of overwritten.
notestringoptionalReason 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
successbooleanWhether the value was stored.
isUnchangedbooleanPresent and true when the value sent was the one already stored. Nothing is written and no change is recorded.
itemobjectThe stored value afterwards, in the same shape as Get Directive Value - including the new hash to carry into the next write.
isConflictbooleanThe value moved since the expectedHash you quoted was read. Nothing was written; read it again and decide.
isPermissionDeniedbooleanThe directive exists and is readable, but its owner has not opened it for outside writing.
isInvalidValuebooleanThe value does not fit what the directive accepts. message says why.
messagestringPlain reason accompanying a refusal.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "isUnchanged": false,
  "item": {
    "directiveKey": "greed_xckdf1",
    "kind": 20,
    "raw": { "v": 35 },
    "entries": {},
    "number": 35,
    "text": "35%",
    "hash": "b70e4d2c8f1a63950dc7e21b845f3a06c9d18e47b2306fa5e8c14d97b0532fae",
    "updatedOn": 1756729200000,
    "updatedVia": 20
  }
}

And the same call refused, because the value moved after the expectedHash was read:

200 OK APPLICATION/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
Auth HMAC + pool-bound key Rate limit 10 req/min

Body parameters

Name Type Required Description
itemsobjectrequiredOne 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.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/pool/directives/set" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"items":{"greed_xckdf1":{"value":35},"kill_switch":{"value":false,"note":"Halting for maintenance"}}}'
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.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
successbooleanWhether the call itself was accepted. It is true even when some rows were refused - each row carries its own outcome.
itemsobjectOne outcome per directive key you sent, keyed the same way.
items[key].successbooleanWhether that row was stored.
items[key].isUnchangedbooleanThat row already held the value sent, so nothing was written.
items[key].itemobjectThe stored value of that row afterwards, in the same shape as Get Directive Value.
items[key].isEntityNotFoundbooleanNo such directive, or one the pool never opened for reading.
items[key].isConflictbooleanThat row quoted an expectedHash that no longer matches.
items[key].isPermissionDeniedbooleanThat directive is not open to outside writing.
items[key].isInvalidValuebooleanThat value does not fit what the directive accepts.
items[key].messagestringPlain reason accompanying that row's refusal.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": {
    "greed_xckdf1": {
      "success": true,
      "isUnchanged": false,
      "item": {
        "directiveKey": "greed_xckdf1",
        "kind": 20,
        "raw": { "v": 35 },
        "entries": {},
        "number": 35,
        "text": "35%",
        "hash": "b70e4d2c8f1a63950dc7e21b845f3a06c9d18e47b2306fa5e8c14d97b0532fae",
        "updatedOn": 1756729200000,
        "updatedVia": 20
      }
    },
    "kill_switch": {
      "success": false,
      "isPermissionDenied": true,
      "message": "This directive is not open to outside writing"
    }
  }
}

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.

PRIVATE · POOLS

Pools Help Map

Returns this help map.

GET /pool/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/pool/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.help();

// 3. Inspect the parsed response
console.log(res);

Response schema

Field Type Description
successbooleanWhether the call succeeded.
categorystringThe category this help map describes.
helpobjectHelp 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 OK APPLICATION/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.numbernumberThe value as a plain number. A switch reads as one or zero, so a strategy can gate on it directly.
pools.directiveValue.textstringThe 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.entriesobjectThe named entries of a directive that holds a set. Route into one by name, such as the entry for an asset.
pools.directiveValue.rawobjectThe 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.hashstringFingerprint of the current value.
pools.directiveValue.updatedOnnumberWhen the value last changed, as a stamp in milliseconds. Useful for ignoring an instruction nobody has touched for too long.
pools.directiveValue.updatedVianumberWhich door the last change came through.
pools.directiveDefinition.labelstringReadable name of the directive.
pools.directiveDefinition.descriptionstringWhat the directive is for.
pools.directiveDefinition.detailsobjectHow the directive is defined - its bounds, steps, choices or named entries.
pools.directiveDefinition.allowExternalWritebooleanWhether an outside caller may change the value.
pools.directiveDefinition.updatedOnnumberWhen the definition last changed, as a stamp in milliseconds.
pools.directiveRevision.revNrnumberWhere a change sits in the trail of the directive, counting up.
pools.directiveRevision.revKindnumberWhat the change was about.
pools.directiveRevision.numbernumberThe value a change stored, as a plain number.
pools.directiveRevision.textstringThe value a change stored, as text.
pools.directiveRevision.entriesobjectThe named entries a change stored.
pools.directiveRevision.rawobjectThe value a change stored, in its wrapper.
pools.directiveRevision.changedVianumberWhich door a change came through.
pools.directiveRevision.changedBystringThe person a change is credited to.
pools.directiveRevision.changedOnnumberWhen a change was recorded, as a stamp in milliseconds.
pools.directiveRevision.changeNotestringThe 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.

POST /vaults/list
Auth HMAC + pool-bound key Rate limit 30 req/min Pagination

Body parameters

NameTypeRequiredDescription
search string optional Free-text search over vault name and id.
sorting object optional Standard { field, direction }.
pagination object optional Standard { page, limit }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/vaults/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.vaults.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

vault-summary[":vaultId"]
Field Type Description
fullNamestringHuman-readable vault name
statusnumberCurrent lifecycle status enum
targetStatusnumberTarget lifecycle status
exchangeKeystringExchange store item key (e.g., binance)
relPoolKeystringOwning pool key
attachedStrategyIdstringAttached strategy id (if any)
reportedOnnumberLast status report timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "fullName": "binance-spot-main",
      "status": 1000,
      "targetStatus": 1000,
      "exchangeKey": "binance",
      "relPoolKey": "pool_main",
      "attachedStrategyId": "stg_1",
      "reportedOn": 1700000000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PRIVATE · VAULTS

Vault Summary

Returns the lean vault summary (id, name, status) for a single vault. Cheap and cacheable - prefer this when you only need the headline status.

POST /vault/:vaultId/summary
Auth HMAC + pool-bound key Rate limit 60 req/min

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/vault/vlt-abc123/summary" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.vaults.getSummary("vlt-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

vault-summary[":vaultId"]
Field Type Description
fullNamestringHuman-readable vault name
statusnumberCurrent lifecycle status enum
targetStatusnumberTarget lifecycle status
exchangeKeystringExchange store item key (e.g., binance)
relPoolKeystringOwning pool key
attachedStrategyIdstringAttached strategy id (if any)
reportedOnnumberLast status report timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "fullName": "binance-spot-main",
    "status": 1000,
    "targetStatus": 1000,
    "exchangeKey": "binance",
    "relPoolKey": "pool_main",
    "attachedStrategyId": "stg_1",
    "reportedOn": 1700000000000
  }
}
PRIVATE · VAULTS

Vault Detail

Returns the full vault detail by id - configuration, allocation, performance metrics, and runtime status.

POST /vault/:vaultId
Auth HMAC + pool-bound key Rate limit 60 req/min

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/vault/vlt-abc123" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.vaults.get("vlt-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

vault[":vaultId"]
Field Type Description
fullNamestringVault full name
exchangeKeystringExchange key
providerstringProvider identifier
statusstringStatus as string
isActivebooleanIs the vault active
createdOnnumberCreation timestamp
updatedOnnumberLast update timestamp

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "fullName": "binance-spot-main",
    "exchangeKey": "binance",
    "provider": "ccxt",
    "status": "active",
    "isActive": true,
    "createdOn": 1690000000000,
    "updatedOn": 1700000000000
  }
}
PRIVATE · VAULTS

Vault Runtime Profile

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.

POST /vault/:vaultId/runtime-profile
Auth HMAC + pool-bound key Rate limit 60 req/min

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/vault/vlt-abc123/runtime-profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.vaults.getRuntimeProfile("vlt-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

vault-runtime-profile[":vaultId"]
Field Type Description
profileobjectRuntime profile JSON payload
hashstringContent hash for optimistic concurrency
updatedOnnumberLast update timestamp

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "profile": {
      "riskLimit": 100000,
      "allowedAssets": [
        "BTC",
        "ETH"
      ]
    },
    "hash": "sha256:a1b2c3...",
    "updatedOn": 1700000000000
  }
}
PRIVATE · VAULTS

Set Vault Runtime Profile

Updates the runtime profile for a vault (optimistic via expectedHash).

PUT /vault/:vaultId/runtime-profile/set
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :vaultId

URL parameters

Name Required Description
vaultIdrequiredVault identifier.

Body parameters

Name Type Required Description
profileobjectrequiredRuntime profile body to apply.
expectedHashstringoptionalExpected runtime-profile hash for optimistic concurrency.

Request Example

cURL
curl -X PUT "https://trademire.ai/api/platform-api/$API_KEY/v1/vault/vlt-abc123/runtime-profile/set" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"profile":{}}'
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.vaults.setRuntimeProfile("vlt-abc123", { profile: {} });

// 3. Inspect the parsed response
console.log(res);

Response Example

200 OK APPLICATION/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).

PUT /vaults/actions/:action
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :action

URL parameters

Name Required Description
actionrequiredAction verb (e.g. deploy, start, stop, undeploy).

Body parameters

Name Type Required Description
itemsobjectrequiredTargets of the action, keyed by item id: { "<itemId>": { ...params } }. Use an empty object per id when no per-item parameters are needed.

Request Example

cURL
curl -X PUT "https://trademire.ai/api/platform-api/$API_KEY/v1/vaults/actions/deploy" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"items":{"vlt-abc123":{}}}'
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.vaults.action("deploy", { items: { "vlt-abc123": {} } });

// 3. Inspect the parsed response
console.log(res);

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": {
    "vlt-abc123": {
      "success": true
    }
  }
}
PRIVATE · VAULTS

Vaults Help Map

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.

GET /vaults/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/vaults/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "vaults",
  "help": {
    "paths": {
      "/vaults/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PRIVATE · STRATEGIES

List Strategies

Returns the lean summary list of every strategy belonging to a pool: identifier, name, and status. Sorting, search, and pagination supported.

POST /strategies/list
Auth HMAC + pool-bound key Rate limit 30 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/strategies/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.strategies.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

strategy-summary[":strategyId"]
Field Type Description
namestringHuman-readable strategy name
statusnumberCurrent lifecycle status enum
targetStatusnumberTarget lifecycle status
relPoolKeystringOwning pool key
relNodeIdstringHost node id (if deployed)
reportedOnnumberLast status report timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "name": "arbitrage-btc-usdt",
      "status": 1000,
      "targetStatus": 1000,
      "relPoolKey": "pool_main",
      "relNodeId": "node_1",
      "reportedOn": 1700000000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PRIVATE · STRATEGIES

Strategy Summary

Returns a single strategy summary by its ID (lean shape).

POST /strategy/:strategyId/summary
Auth HMAC + pool-bound key Rate limit 60 req/min URL params :strategyId

URL parameters

Name Required Description
strategyIdrequiredStrategy identifier.

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/strategy/str-abc123/summary" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.strategies.getSummary("str-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

strategy-summary[":strategyId"]
Field Type Description
namestringHuman-readable strategy name
statusnumberCurrent lifecycle status enum
targetStatusnumberTarget lifecycle status
relPoolKeystringOwning pool key
relNodeIdstringHost node id (if deployed)
reportedOnnumberLast status report timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "name": "arbitrage-btc-usdt",
    "status": 1000,
    "targetStatus": 1000,
    "relPoolKey": "pool_main",
    "relNodeId": "node_1",
    "reportedOn": 1700000000000
  }
}
PRIVATE · STRATEGIES

Strategy Detail

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.

POST /strategy/:strategyId
Auth HMAC + pool-bound key Rate limit 60 req/min

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/strategy/str-abc123" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.strategies.get("str-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

strategy[":strategyId"]
Field Type Description
namestringStrategy name
typestringStrategy type
statusstringStatus as string
isActivebooleanIs the strategy active
createdOnnumberCreation timestamp
updatedOnnumberLast update timestamp

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "name": "arbitrage-btc-usdt",
    "type": "arbitrage",
    "status": "active",
    "isActive": true,
    "createdOn": 1690000000000,
    "updatedOn": 1700000000000
  }
}
PRIVATE · STRATEGIES

Strategy Runtime Profile

Returns the runtime profile (JSON + hash + controlDetails) for a strategy.

POST /strategy/:strategyId/runtime-profile
Auth HMAC + pool-bound key Rate limit 60 req/min URL params :strategyId

URL parameters

Name Required Description
strategyIdrequiredStrategy identifier.

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/strategy/str-abc123/runtime-profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.strategies.getRuntimeProfile("str-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

strategy-runtime-profile[":strategyId"]
Field Type Description
profileobjectRuntime profile JSON payload
hashstringContent hash for optimistic concurrency
controlDetailsobjectControl details blob from the parent strategy row
tuneProfilebooleanWhether the strategy has profile tuning capabilities activated. When false, runtime profile updates are rejected.
updatedOnnumberLast update timestamp

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "profile": {
      "entrySpread": 0.002,
      "exitSpread": 0.0005
    },
    "hash": "sha256:a1b2c3...",
    "controlDetails": {
      "lastTunedBy": "user_1",
      "lastTunedOn": 1700000000000
    },
    "tuneProfile": true,
    "updatedOn": 1700000000000
  }
}
PRIVATE · STRATEGIES

Set Strategy Runtime Profile

Updates the runtime profile for a strategy (optimistic via expectedHash; rejected when tune_profile is false).

PUT /strategy/:strategyId/runtime-profile/set
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :strategyId

URL parameters

Name Required Description
strategyIdrequiredStrategy identifier.

Body parameters

Name Type Required Description
profileobjectrequiredRuntime profile body to apply.
expectedHashstringoptionalExpected runtime-profile hash for optimistic concurrency.

Request Example

cURL
curl -X PUT "https://trademire.ai/api/platform-api/$API_KEY/v1/strategy/str-abc123/runtime-profile/set" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"profile":{}}'
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.strategies.setRuntimeProfile("str-abc123", { profile: {} });

// 3. Inspect the parsed response
console.log(res);

Response Example

200 OK APPLICATION/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).

PUT /strategies/actions/:action
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :action

URL parameters

Name Required Description
actionrequiredAction verb (e.g. deploy, start, stop, undeploy).

Body parameters

Name Type Required Description
itemsobjectrequiredTargets of the action, keyed by item id: { "<itemId>": { ...params } }. Use an empty object per id when no per-item parameters are needed.

Request Example

cURL
curl -X PUT "https://trademire.ai/api/platform-api/$API_KEY/v1/strategies/actions/deploy" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"items":{"str-abc123":{}}}'
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.strategies.action("deploy", { items: { "str-abc123": {} } });

// 3. Inspect the parsed response
console.log(res);

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": {
    "str-abc123": {
      "success": true
    }
  }
}
PRIVATE · STRATEGIES

Strategies Help Map

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.

GET /strategies/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/strategies/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "strategies",
  "help": {
    "paths": {
      "/strategies/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PRIVATE · NODES

List Nodes

Returns the lean summary list of every node belonging to a pool: identifier, name, and status. Sorting, search, and pagination supported.

POST /nodes/list
Auth HMAC + pool-bound key Rate limit 30 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/nodes/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.nodes.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

node-summary[":nodeId"]
Field Type Description
namestringHuman-readable node name
statusnumberCurrent lifecycle status enum
targetStatusnumberTarget lifecycle status
relPoolKeystringOwning pool key
relServerIdstringHost server id (if deployed)
reportedOnnumberLast status report timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "name": "eth-mainnet-1",
      "status": 1000,
      "targetStatus": 1000,
      "relPoolKey": "pool_main",
      "relServerId": "srv_1",
      "reportedOn": 1700000000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PRIVATE · NODES

Node Summary

Returns a single node summary by its ID (lean shape).

POST /node/:nodeId/summary
Auth HMAC + pool-bound key Rate limit 60 req/min URL params :nodeId

URL parameters

Name Required Description
nodeIdrequiredNode identifier.

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/node/nod-abc123/summary" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.nodes.getSummary("nod-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

node-summary[":nodeId"]
Field Type Description
namestringHuman-readable node name
statusnumberCurrent lifecycle status enum
targetStatusnumberTarget lifecycle status
relPoolKeystringOwning pool key
relServerIdstringHost server id (if deployed)
reportedOnnumberLast status report timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "name": "eth-mainnet-1",
    "status": 1000,
    "targetStatus": 1000,
    "relPoolKey": "pool_main",
    "relServerId": "srv_1",
    "reportedOn": 1700000000000
  }
}
PRIVATE · NODES

Node Detail

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.

POST /node/:nodeId
Auth HMAC + pool-bound key Rate limit 60 req/min

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/node/nod-abc123" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.nodes.get("nod-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

node[":nodeId"]
Field Type Description
namestringNode name
typestringNode type
statusstringStatus as string
isActivebooleanIs the node active
ipAddressstringLatest reported IP address
createdOnnumberCreation timestamp
updatedOnnumberLast update timestamp

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "name": "eth-mainnet-1",
    "type": "execution",
    "status": "active",
    "isActive": true,
    "ipAddress": "10.0.0.42",
    "createdOn": 1690000000000,
    "updatedOn": 1700000000000
  }
}
PRIVATE · NODES

Node Runtime Profile

Returns the runtime profile (JSON + hash) for a node.

POST /node/:nodeId/runtime-profile
Auth HMAC + pool-bound key Rate limit 60 req/min URL params :nodeId

URL parameters

Name Required Description
nodeIdrequiredNode identifier.

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/node/nod-abc123/runtime-profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.nodes.getRuntimeProfile("nod-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

node-runtime-profile[":nodeId"]
Field Type Description
profileobjectRuntime profile JSON payload
hashstringContent hash for optimistic concurrency
updatedOnnumberLast update timestamp

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "profile": {
      "rpcUrl": "https://rpc.example",
      "maxConnections": 50
    },
    "hash": "sha256:a1b2c3...",
    "updatedOn": 1700000000000
  }
}
PRIVATE · NODES

Set Node Runtime Profile

Updates the runtime profile for a node (optimistic via expectedHash).

PUT /node/:nodeId/runtime-profile/set
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :nodeId

URL parameters

Name Required Description
nodeIdrequiredNode identifier.

Body parameters

Name Type Required Description
profileobjectrequiredRuntime profile body to apply.
expectedHashstringoptionalExpected runtime-profile hash for optimistic concurrency.

Request Example

cURL
curl -X PUT "https://trademire.ai/api/platform-api/$API_KEY/v1/node/nod-abc123/runtime-profile/set" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"profile":{}}'
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.nodes.setRuntimeProfile("nod-abc123", { profile: {} });

// 3. Inspect the parsed response
console.log(res);

Response Example

200 OK APPLICATION/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).

PUT /nodes/actions/:action
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :action

URL parameters

Name Required Description
actionrequiredAction verb (e.g. deploy, start, stop, undeploy).

Body parameters

Name Type Required Description
itemsobjectrequiredTargets of the action, keyed by item id: { "<itemId>": { ...params } }. Use an empty object per id when no per-item parameters are needed.

Request Example

cURL
curl -X PUT "https://trademire.ai/api/platform-api/$API_KEY/v1/nodes/actions/deploy" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"items":{"nod-abc123":{}}}'
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.nodes.action("deploy", { items: { "nod-abc123": {} } });

// 3. Inspect the parsed response
console.log(res);

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": {
    "nod-abc123": {
      "success": true
    }
  }
}
PRIVATE · NODES

Nodes Help Map

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.

GET /nodes/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/nodes/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "nodes",
  "help": {
    "paths": {
      "/nodes/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PRIVATE · SERVERS

List Servers

Returns the lean summary list of every server provisioned for a pool. Standard list shape with search, sorting, and pagination.

POST /servers/list
Auth HMAC + pool-bound key Rate limit 30 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/servers/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.servers.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

server-summary[":serverId"]
Field Type Description
namestringHuman-readable server name
statusnumberCurrent lifecycle status enum
targetStatusnumberTarget lifecycle status
progressnumberLifecycle progress percentage (0-100)
storeTypeKeystringStore type identifier (provider class)
relPoolKeystringOwning pool key
reportedOnnumberLast status report timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "name": "srv-frankfurt-1",
      "status": 1000,
      "targetStatus": 1000,
      "progress": 100,
      "storeTypeKey": "aws-ec2",
      "relPoolKey": "pool_main",
      "reportedOn": 1700000000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PRIVATE · SERVERS

Server Summary

Returns a single server summary by its ID (lean shape).

POST /server/:serverId/summary
Auth HMAC + pool-bound key Rate limit 60 req/min URL params :serverId

URL parameters

Name Required Description
serverIdrequiredServer identifier.

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/server/srv-abc123/summary" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.servers.getSummary("srv-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

server-summary[":serverId"]
Field Type Description
namestringHuman-readable server name
statusnumberCurrent lifecycle status enum
targetStatusnumberTarget lifecycle status
progressnumberLifecycle progress percentage (0-100)
storeTypeKeystringStore type identifier (provider class)
relPoolKeystringOwning pool key
reportedOnnumberLast status report timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "name": "srv-frankfurt-1",
    "status": 1000,
    "targetStatus": 1000,
    "progress": 100,
    "storeTypeKey": "aws-ec2",
    "relPoolKey": "pool_main",
    "reportedOn": 1700000000000
  }
}
PRIVATE · SERVERS

Server Detail

Returns the full server details by id - hardware profile, network state, and runtime status. Pair with POST /v1/servers/action for lifecycle operations.

POST /server/:serverId
Auth HMAC + pool-bound key Rate limit 60 req/min

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/server/srv-abc123" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.servers.get("srv-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

server[":serverId"]
Field Type Description
namestringServer name
typestringServer type
statusstringStatus as string
isActivebooleanIs the server active
ipAddressstringLatest reported IP address
createdOnnumberCreation timestamp
updatedOnnumberLast update timestamp

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "name": "srv-frankfurt-1",
    "type": "compute",
    "status": "active",
    "isActive": true,
    "ipAddress": "10.0.0.10",
    "createdOn": 1690000000000,
    "updatedOn": 1700000000000
  }
}
PRIVATE · SERVERS

Server Runtime Profile

Returns the runtime profile (JSON + hash + controlDetails) for a server.

POST /server/:serverId/runtime-profile
Auth HMAC + pool-bound key Rate limit 60 req/min URL params :serverId

URL parameters

Name Required Description
serverIdrequiredServer identifier.

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/server/srv-abc123/runtime-profile" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.servers.getRuntimeProfile("srv-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

server-runtime-profile[":serverId"]
Field Type Description
profileobjectRuntime profile JSON payload
hashstringContent hash for optimistic concurrency
controlDetailsobjectControl details blob from the parent server row
updatedOnnumberLast update timestamp

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "profile": {
      "region": "eu-central-1",
      "instanceType": "t3.medium"
    },
    "hash": "sha256:a1b2c3...",
    "controlDetails": {
      "lastDeployBy": "user_1",
      "lastDeployedOn": 1700000000000
    },
    "updatedOn": 1700000000000
  }
}
PRIVATE · SERVERS

Set Server Runtime Profile

Updates the runtime profile for a server (optimistic via expectedHash).

PUT /server/:serverId/runtime-profile/set
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :serverId

URL parameters

Name Required Description
serverIdrequiredServer identifier.

Body parameters

Name Type Required Description
profileobjectrequiredRuntime profile body to apply.
expectedHashstringoptionalExpected runtime-profile hash for optimistic concurrency.

Request Example

cURL
curl -X PUT "https://trademire.ai/api/platform-api/$API_KEY/v1/server/srv-abc123/runtime-profile/set" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"profile":{}}'
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.servers.setRuntimeProfile("srv-abc123", { profile: {} });

// 3. Inspect the parsed response
console.log(res);

Response Example

200 OK APPLICATION/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).

PUT /servers/actions/:action
Auth HMAC + pool-bound key Rate limit 10 req/min URL params :action

URL parameters

Name Required Description
actionrequiredAction verb (e.g. deploy, start, stop, undeploy).

Body parameters

Name Type Required Description
itemsobjectrequiredTargets of the action, keyed by item id: { "<itemId>": { ...params } }. Use an empty object per id when no per-item parameters are needed.

Request Example

cURL
curl -X PUT "https://trademire.ai/api/platform-api/$API_KEY/v1/servers/actions/deploy" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"items":{"srv-abc123":{}}}'
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.servers.action("deploy", { items: { "srv-abc123": {} } });

// 3. Inspect the parsed response
console.log(res);

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": {
    "srv-abc123": {
      "success": true
    }
  }
}
PRIVATE · SERVERS

Servers Help Map

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.

GET /servers/help
Auth None Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/servers/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.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.

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "category": "servers",
  "help": {
    "paths": {
      "/servers/help": {
        "method": "GET",
        "description": "Returns this help map",
        "rateLimit": 30,
        "params": { "required": [], "optional": [] },
        "fieldGroups": []
      }
    },
    "fieldGroups": {}
  }
}
PRIVATE · TRADING

Trading Help Map

Returns this help map.

GET /trading/help
Auth HMAC + pool-bound key Rate limit 30 req/min

Request Example

cURL
curl -X GET "https://trademire.ai/api/platform-api/$API_KEY/v1/trading/help" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS"
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.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).

POST /positions/list
Auth HMAC + pool-bound key Rate limit 30 req/min Pagination

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/positions/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.positions.list({ pagination: { page: 1, limit: 50 } });

// 3. Inspect the parsed response
console.log(res);

Response schema

position[":contractSymbol"]
Field Type Description
contractSymbolstringFutures contract identifier (e.g. BTCUSDT)
sidenumberPosition side (OneWay / Long / Short, see PositionSide enum)
quantitynumberPosition size in contracts
entryPricenumberAverage entry price
markPricenumberCurrent mark price
liquidationPricenumberEstimated liquidation price (0 when not provided)
leveragenumberPosition leverage
isIsolatedbooleanMargin mode (true = isolated, false = cross)
marginAmountnumberMargin allocated to the position (isolated only)
unrealizedPnlnumberUnrealized profit and loss
timestampOpenednumberWhen the position was opened (ms epoch)
accTypenumberAccount 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
Auth HMAC + pool-bound key Rate limit 30 req/min

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/orders/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.trading.orders.list();

// 3. Inspect the parsed response
console.log(res);

Response schema

order[":orderId"]
Field Type Description
pairstringTrading pair (e.g. BTC_USDT)
sidestringOrder side (buy or sell)
typestringOrder type (limit, market, stop, ...)
statusstringLifecycle status (open, filled, cancelled, ...)
pricenumberOrder price (quote currency)
quantitynumberOrder base quantity
fillednumberFilled base quantity
feenumberCumulative fee paid
createdOnnumberCreation timestamp (ms epoch)
updatedOnnumberLast update timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "pair": "BTC_USDT",
      "side": "buy",
      "type": "limit",
      "status": "filled",
      "price": 67200,
      "quantity": 0.05,
      "filled": 0.05,
      "fee": 3.36,
      "createdOn": 1700000000000,
      "updatedOn": 1700000060000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PRIVATE · TRADING

Get Order

Returns the full details for a single order - state, fills, fees, and lifecycle timestamps.

POST /order/:orderId
Auth HMAC + pool-bound key Rate limit 60 req/min

Body parameters

Name Type Required Description

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/order/ord-abc123" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{}'
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.trading.orders.get("ord-abc123");

// 3. Inspect the parsed response
console.log(res);

Response schema

order[":orderId"]
Field Type Description
pairstringTrading pair (e.g. BTC_USDT)
sidestringOrder side (buy or sell)
typestringOrder type (limit, market, stop, ...)
statusstringLifecycle status (open, filled, cancelled, ...)
pricenumberOrder price (quote currency)
quantitynumberOrder base quantity
fillednumberFilled base quantity
feenumberCumulative fee paid
createdOnnumberCreation timestamp (ms epoch)
updatedOnnumberLast update timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "item": {
    "pair": "BTC_USDT",
    "side": "buy",
    "type": "limit",
    "status": "filled",
    "price": 67200,
    "quantity": 0.05,
    "filled": 0.05,
    "fee": 3.36,
    "createdOn": 1700000000000,
    "updatedOn": 1700000060000
  }
}
PRIVATE · TRADING

List Trades

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
Auth HMAC + pool-bound key Rate limit 30 req/min

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/trades/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.trading.trades.list();

// 3. Inspect the parsed response
console.log(res);

Response schema

trade[":tradeId"]
Field Type Description
pairstringTrading pair
sidestringTrade side (buy or sell)
pricenumberExecution price
quantitynumberExecuted base quantity
feenumberFee paid for this fill
createdOnnumberExecution timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "pair": "BTC_USDT",
      "side": "buy",
      "price": 67200,
      "quantity": 0.05,
      "fee": 3.36,
      "createdOn": 1700000000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PRIVATE · TRADING

List Balances

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
Auth HMAC + pool-bound key Rate limit 30 req/min

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/balances/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.trading.balances.list();

// 3. Inspect the parsed response
console.log(res);

Response schema

balance[":symbol"]
Field Type Description
symbolstringAsset symbol (e.g. BTC, USDT)
availablenumberAvailable balance for new orders
lockednumberBalance reserved by open orders
totalnumberavailable + locked

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "symbol": "BTC",
      "available": 0.5,
      "locked": 0.05,
      "total": 0.55
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}
PRIVATE · TRADING

List Transactions

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
Auth HMAC + pool-bound key Rate limit 30 req/min

Body parameters

Name Type Required Description
filteringobjectoptionalFilter object: { term?: string }. Free-text term matched against the listing.
sortingobjectoptionalSort object: { field, direction }. Direction is asc or desc.
paginationobjectoptionalPage-based pagination: { page: number, limit: number }. page is 1-based; limit is between 10 and 100 (default 10). Response carries { currentPage, totalPages, pageSize, totalRows }.

Request Example

cURL
curl -X POST "https://trademire.ai/api/platform-api/$API_KEY/v1/transactions/list" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Signature: $SIG" \
  -H "X-API-Timestamp: $TS" \
  --data '{"pagination":{"page":1,"limit":50}}'
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.trading.transactions.list();

// 3. Inspect the parsed response
console.log(res);

Response schema

transaction[":transactionId"]
Field Type Description
typestringTransaction type (deposit, withdrawal, fee, ...)
symbolstringAsset symbol
amountnumberTransaction amount
feenumberNetwork or platform fee
statusstringTransaction status (pending, confirmed, failed, ...)
txHashstringOn-chain transaction hash if applicable
createdOnnumberCreation timestamp (ms epoch)

Response Example

200 OK APPLICATION/JSON
{
  "success": true,
  "items": [
    {
      "type": "deposit",
      "symbol": "BTC",
      "amount": 0.5,
      "fee": 0.0005,
      "status": "confirmed",
      "txHash": "0xabc",
      "createdOn": 1700000000000
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 1,
    "pageSize": 50,
    "totalRows": 1
  }
}