/v2/marketsEvery market open for trading, each with its current snapshot: price, daily change, leverage bounds, fees and trading schedule. Markets that are hidden or delisted are left out.
Passing accountId reads the snapshot from the trading shard that hosts that account — the state an order placed on it would be priced against.
The account is not checked for ownership here: it only selects which shard answers.
https://api.upscale.tradeParameters
accountIdstring · uuidoptionalTrader account to resolve the market list against: leverage bounds and availability are returned as they apply to that account. Omitted — the platform-wide defaults are returned.
- pattern
- ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
00000000-0000-4000-8000-000000000000Examples
curl --request GET 'https://api.upscale.trade/v2/markets' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY'const response = await fetch("https://api.upscale.trade/v2/markets", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
},
});
console.log(response.status, await response.text());import requests
response = requests.request(
"GET",
"https://api.upscale.trade/v2/markets",
headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY"},
timeout=30,
)
print(response.status_code, response.text)Responses
Unauthorized
Rate limit of the API key exceeded (api_key_rate_limit_exceeded). Retry-After says when to come back; the body carries the bucket (read / write), the window that tripped, its limit and retryAt.
defaultResponseapplication/json
Array of MarketV2Response
idstring · uuidrequiredMarket identifier — the value order creation takes as marketId.
- pattern
- ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
00000000-0000-4000-8000-000000000000configobjectrequiredStatic description of the market: assets, naming and category.
Object · 11 fields
baseAssetstringrequiredBase asset ticker — the value the per-market endpoints take as asset.
BTCquoteAssetstringrequiredAsset prices and notionals are quoted in.
USDsettlementTokenstringrequiredAsset positions settle in.
USDtypestringrequiredPricing model of the market.
basenamestringrequiredDisplay name of the market.
BTCdescriptionstringrequiredFree-form description shown in the app.
Market descriptiontickerstringrequiredFull pair label.
BTC/USDimageLinkstringrequiredIcon of the market.
https://app.storm.tg/markets/btc.pngtagsstring[]requiredTags the app groups markets by.
Array items · string
string
"Crypto"View example
[
"Crypto"
]categorystring · enumrequiredWhether the market is crypto or a real-world asset — an account may be limited to one of the two.
"crypto" "rwa"cryptoprioritynumber · nullablerequiredSort weight in the market list; higher comes first. Null when unranked.
0View example
{
"baseAsset": "BTC",
"quoteAsset": "USD",
"settlementToken": "USD",
"type": "base",
"name": "BTC",
"description": "Market description",
"ticker": "BTC/USD",
"imageLink": "https://app.storm.tg/markets/btc.png",
"tags": [
"Crypto"
],
"category": "crypto",
"priority": 0
}stateobjectrequiredLive state: index price, funding and the depth an order is priced against.
Object · 10 fields
indexPricestring · int32requiredCurrent index price of the market, fp9 raw — what orders are priced and triggers compared against.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000blockTimestampnumberrequiredWhen this state snapshot was produced, unix timestamp in milliseconds.
0fundingRatestring · int32requiredFunding rate of the running interval, fp9 raw fraction. Positive means longs pay shorts.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000nextFundingAtnumberrequiredWhen funding is settled next, unix timestamp in milliseconds.
0lastFundingAtnumber · nullablerequiredWhen funding was last settled, unix timestamp in milliseconds. Null before the first settlement.
0vpiSpreadstring · int32requiredCurrent spread charged on top of the index price, fp9 raw fraction.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiMarketDepthLongstring · int32requiredDepth available on the long side, fp9 raw. Orders large against it move the execution price.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiMarketDepthShortstring · int32requiredDepth available on the short side, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiCoefficientLongstring · int32requiredPrice-impact coefficient applied to long orders, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiCoefficientShortstring · int32requiredPrice-impact coefficient applied to short orders, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000View example
{
"indexPrice": "1000000000",
"blockTimestamp": 0,
"fundingRate": "1000000000",
"nextFundingAt": 0,
"lastFundingAt": 0,
"vpiSpread": "1000000000",
"vpiMarketDepthLong": "1000000000",
"vpiMarketDepthShort": "1000000000",
"vpiCoefficientLong": "1000000000",
"vpiCoefficientShort": "1000000000"
}settingsobjectrequiredTrading rules of the market: fees, margin ratios and the caps an order is checked against.
Object · 15 fields
feestring · int32requiredTrading fee rate, fp9 raw fraction (1000000 = 0.1%).
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000minInitMarginRatiostring · int32requiredSmallest initial margin ratio the market accepts, fp9 raw fraction — the cap on leverage.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000initMarginRatiostring · int32requiredDefault initial margin ratio of the market, fp9 raw fraction.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maintenanceMarginRatiostring · int32requiredMargin ratio below which a position is liquidated, fp9 raw fraction.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxLeverageByAccountobjectrequiredHighest leverage allowed per account type, fp9 raw, keyed by account type.
Additional properties
string · int32
"1000000000"- pattern
- ^(?:-?[1-9][0-9]*|0)$
View example
{
"key": "1000000000"
}spreadLimitstring · int32requiredLargest spread the market will charge, fp9 raw fraction.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxPriceImpactstring · int32requiredLargest price impact a single order may cause, fp9 raw fraction.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxPriceSpreadstring · int32requiredLargest deviation allowed between market and index price, fp9 raw fraction.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxOpenNotionalLongstring · int32requiredCap on open notional held long on this market, fp9 raw. 0 means no cap.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxOpenNotionalShortstring · int32requiredCap on open notional held short on this market, fp9 raw. 0 means no cap.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000minStopTriggerDistanceRatiostring · int32requiredMinimum distance between the current price and a stop trigger, fp9 raw fraction. A closer trigger is pushed out to this distance.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000isCloseOnlybooleanrequiredWhether the market only accepts orders that close a position.
trueisClosedbooleanrequiredtrueisPausedbooleanrequiredtrueisZeroSpreadbooleanrequiredWhether the market currently trades without a spread.
trueView example
{
"fee": "1000000000",
"minInitMarginRatio": "1000000000",
"initMarginRatio": "1000000000",
"maintenanceMarginRatio": "1000000000",
"maxLeverageByAccount": {
"key": "1000000000"
},
"spreadLimit": "1000000000",
"maxPriceImpact": "1000000000",
"maxPriceSpread": "1000000000",
"maxOpenNotionalLong": "1000000000",
"maxOpenNotionalShort": "1000000000",
"minStopTriggerDistanceRatio": "1000000000",
"isCloseOnly": true,
"isClosed": true,
"isPaused": true,
"isZeroSpread": true
}changeobjectrequiredReference prices for computing 1h, 4h and 24h price changes.
Object · 3 fields
initialPricenumberrequiredPrice 24 hours ago, as a decimal number — the base of the daily change. 0 when no history is available.
0initialPrice1hnumberrequiredPrice one hour ago, as a decimal number. 0 when no history is available.
0initialPrice4hnumberrequiredPrice four hours ago, as a decimal number. 0 when no history is available.
0View example
{
"initialPrice": 0,
"initialPrice1h": 0,
"initialPrice4h": 0
}scheduleobject · nullablerequiredTrading sessions of the market. Null when it trades around the clock.
Object · 6 fields
nextPauseAtnumberrequiredStart of the next scheduled break, unix timestamp in milliseconds. 0 when the market has no breaks at all, and 9007199254740991 when none is scheduled ahead of the current one.
0nextUnpauseAtnumberrequiredEnd of the break the market is in, or of the next one, unix timestamp in milliseconds. Same 0 and sentinel rules as nextPauseAt.
0closestPauseAtnumberrequiredSame value as nextPauseAt. Kept for backward compatibility.
0closestUnpauseAtnumberrequiredSame value as nextUnpauseAt. Kept for backward compatibility.
0pausedAtnumberrequiredStart of the break currently running, unix timestamp in milliseconds. 0 when the market is trading.
0inPausebooleanrequiredWhether the market is inside a scheduled break right now. Orders are refused while it is.
trueView example
{
"nextPauseAt": 0,
"nextUnpauseAt": 0,
"closestPauseAt": 0,
"closestUnpauseAt": 0,
"pausedAt": 0,
"inPause": true
}[
{
"id": "00000000-0000-4000-8000-000000000000",
"config": {
"baseAsset": "BTC",
"quoteAsset": "USD",
"settlementToken": "USD",
"type": "base",
"name": "BTC",
"description": "Market description",
"ticker": "BTC/USD",
"imageLink": "https://app.storm.tg/markets/btc.png",
"tags": [
"Crypto"
],
"category": "crypto",
"priority": 0
},
"state": {
"indexPrice": "1000000000",
"blockTimestamp": 0,
"fundingRate": "1000000000",
"nextFundingAt": 0,
"lastFundingAt": 0,
"vpiSpread": "1000000000",
"vpiMarketDepthLong": "1000000000",
"vpiMarketDepthShort": "1000000000",
"vpiCoefficientLong": "1000000000",
"vpiCoefficientShort": "1000000000"
},
"settings": {
"fee": "1000000000",
"minInitMarginRatio": "1000000000",
"initMarginRatio": "1000000000",
"maintenanceMarginRatio": "1000000000",
"maxLeverageByAccount": {
"key": "1000000000"
},
"spreadLimit": "1000000000",
"maxPriceImpact": "1000000000",
"maxPriceSpread": "1000000000",
"maxOpenNotionalLong": "1000000000",
"maxOpenNotionalShort": "1000000000",
"minStopTriggerDistanceRatio": "1000000000",
"isCloseOnly": true,
"isClosed": true,
"isPaused": true,
"isZeroSpread": true
},
"change": {
"initialPrice": 0,
"initialPrice1h": 0,
"initialPrice4h": 0
},
"schedule": {
"nextPauseAt": 0,
"nextUnpauseAt": 0,
"closestPauseAt": 0,
"closestUnpauseAt": 0,
"pausedAt": 0,
"inPause": true
}
}
]