Upscale
Menu
On this page

Get market by id

Try it out ↓
GET/v2/markets/{id}
Get market by idConfig

One market with the same snapshot the list returns.

Responds 404 when the market does not exist, is delisted, or is hidden from the caller.

Base URL https://api.upscale.trade

Authorization

bearerhttp · beareroptional

Personal API key, prefixed with usk_.

Parameters

Path
idstring · uuidrequired

Market identifier, as returned by GET /v2/markets.

Example: 00000000-0000-4000-8000-000000000000
Query
accountIdstring · uuidoptional

Trader 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})$
Example: 00000000-0000-4000-8000-000000000000

Examples

curl --request GET 'https://api.upscale.trade/v2/markets/{id}' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY'

Responses

401

Unauthorized

404

Market not found, delisted, or hidden from the caller.

429

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
idstring · uuidrequired

Market 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})$
Example: 00000000-0000-4000-8000-000000000000
configobjectrequired

Static description of the market: assets, naming and category.

Object · 11 fields
baseAssetstringrequired

Base asset ticker — the value the per-market endpoints take as asset.

Example: BTC
quoteAssetstringrequired

Asset prices and notionals are quoted in.

Example: USD
settlementTokenstringrequired

Asset positions settle in.

Example: USD
typestringrequired

Pricing model of the market.

Example: base
namestringrequired

Display name of the market.

Example: BTC
descriptionstringrequired

Free-form description shown in the app.

Example: Market description
tickerstringrequired

Full pair label.

Example: BTC/USD
imageLinkstringrequired

Icon of the market.

Example: https://app.storm.tg/markets/btc.png
tagsstring[]required

Tags the app groups markets by.

Array items · string

string

Example: "Crypto"
View example
[
  "Crypto"
]
categorystring · enumrequired

Whether the market is crypto or a real-world asset — an account may be limited to one of the two.

Allowed: "crypto" "rwa"
Example: crypto
prioritynumber · nullablerequired

Sort weight in the market list; lower comes first, as GET /v2/markets is ordered. Null when unranked, sorted last.

Example: 0
View 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
}
stateobjectrequired

Live state: index price, funding and the depth an order is priced against.

Object · 10 fields
indexPricestring · fp9required

Current index price of the market, fp9 raw — what orders are priced and triggers compared against.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
blockTimestampnumberrequired

When this state snapshot was produced, unix timestamp in milliseconds.

Example: 0
fundingRatestring · fp9required

Funding rate of the running interval, fp9 raw fraction. The sign does not pick a side: every position, long or short, pays notional × |rate|.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
nextFundingAtnumberrequired

When funding is settled next, unix timestamp in milliseconds.

Example: 0
lastFundingAtnumber · nullablerequired

When funding was last settled, unix timestamp in milliseconds. Null before the first settlement.

Example: 0
vpiSpreadstring · fp9required

Current spread charged on top of the index price, fp9 raw fraction.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
vpiMarketDepthLongstringrequired

Depth available on the long side, in whole USD — not fp9. Orders large against it move the execution price.

pattern
^-?[0-9]+(\.[0-9]+)?$
Example: 45604631.000000000
vpiMarketDepthShortstringrequired

Depth available on the short side, in whole USD — not fp9.

pattern
^-?[0-9]+(\.[0-9]+)?$
Example: 38744214.000000000
vpiCoefficientLongstring · fp9required

Price-impact coefficient applied to long orders, fp9 raw.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
vpiCoefficientShortstring · fp9required

Price-impact coefficient applied to short orders, fp9 raw.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
View example
{
  "indexPrice": "1000000000",
  "blockTimestamp": 0,
  "fundingRate": "1000000000",
  "nextFundingAt": 0,
  "lastFundingAt": 0,
  "vpiSpread": "1000000000",
  "vpiMarketDepthLong": "45604631.000000000",
  "vpiMarketDepthShort": "38744214.000000000",
  "vpiCoefficientLong": "1000000000",
  "vpiCoefficientShort": "1000000000"
}
settingsobjectrequired

Trading rules of the market: fees, margin ratios and the caps an order is checked against.

Object · 15 fields
feestring · fp9required

Trading fee rate, fp9 raw fraction (1000000 = 0.1%).

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
minInitMarginRatiostring · fp9required

Smallest initial margin ratio the market accepts, fp9 raw fraction — the cap on leverage.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
initMarginRatiostring · fp9required

Default initial margin ratio of the market, fp9 raw fraction.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
maintenanceMarginRatiostring · fp9required

Margin ratio below which a position is liquidated, fp9 raw fraction.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
maxLeverageByAccountobjectrequired

Highest leverage allowed per account type, fp9 raw, keyed by account type.

Additional properties

string · fp9

Example: "1000000000"
pattern
^(?:-?[1-9][0-9]*|0)$
View example
{
  "key": "1000000000"
}
spreadLimitstring · fp9required

Largest spread the market will charge, fp9 raw fraction.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
maxPriceImpactstring · fp9required

Largest price impact without the static spread a single open/increase order may cause, fp9 raw fraction; 0 means no limit.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
maxPriceSpreadstring · fp9required

Largest deviation allowed between market and index price, fp9 raw fraction.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
maxOpenNotionalLongstring · fp9required

Cap on open notional held long on this market, fp9 raw. 0 means no cap.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
maxOpenNotionalShortstring · fp9required

Cap on open notional held short on this market, fp9 raw. 0 means no cap.

pattern
^(?:-?[1-9][0-9]*|0)$
Example: 1000000000
minStopTriggerDistanceRatiostring · fp9required

Minimum 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)$
Example: 1000000000
isCloseOnlybooleanrequired

Whether the market is close-only: POST /orders accepts only take with triggerPrice: "0" (a market close). New stop-loss, take-profit and trailing stop orders, order edits and margin changes are rejected with market_close_only; cancelling is allowed.

Example: true
isClosedbooleanrequired
Example: true
isPausedbooleanrequired
Example: true
isZeroSpreadbooleanrequired

Whether the market currently trades without a spread.

Example: true
View 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
}
changeobjectrequired

Reference prices for computing 1h, 4h and 24h price changes.

Object · 3 fields
initialPricenumberrequired

Price 24 hours ago, as a decimal number — the base of the daily change. 0 when no history is available.

Example: 0
initialPrice1hnumberrequired

Price one hour ago, as a decimal number. 0 when no history is available.

Example: 0
initialPrice4hnumberrequired

Price four hours ago, as a decimal number. 0 when no history is available.

Example: 0
View example
{
  "initialPrice": 0,
  "initialPrice1h": 0,
  "initialPrice4h": 0
}
scheduleobject · nullablerequired

Trading sessions of the market. Null when it trades around the clock.

Object · 6 fields
nextPauseAtnumberrequired

Start 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.

Example: 0
nextUnpauseAtnumberrequired

End of the break the market is in, or of the next one, unix timestamp in milliseconds. Same 0 and sentinel rules as nextPauseAt.

Example: 0
closestPauseAtnumberrequired

Same value as nextPauseAt. Kept for backward compatibility.

Example: 0
closestUnpauseAtnumberrequired

Same value as nextUnpauseAt. Kept for backward compatibility.

Example: 0
pausedAtnumberrequired

Start of the break currently running, unix timestamp in milliseconds. 0 when the market is trading.

Example: 0
inPausebooleanrequired

Whether the market is inside a scheduled break right now. Orders are refused while it is.

Example: true
View example
{
  "nextPauseAt": 0,
  "nextUnpauseAt": 0,
  "closestPauseAt": 0,
  "closestUnpauseAt": 0,
  "pausedAt": 0,
  "inPause": true
}