Markets
Supported markets, and indicative pricing. GET /v2/markets/{market}/price is a NON-BINDING price: nothing is reserved, it has no expiry and it carries no order id, so it cannot be executed. It is the read-only counterpart to the Orders tag’s POST /v2/quotes.
GET /v2/markets
List supported markets
Reference data, identical for every key. A market id is BASE-QUOTE and is what POST /v2/quotes and GET /v2/markets/{market}/price take. Being listed here means the pair is tradable, not that it is currently quotable — a quote can still be refused for an amount outside the market's limits.
Parámetros
| Parámetro | En | Tipo | Requerido | Descripción |
|---|---|---|---|---|
page | query | integer | no | Default: 1. |
limit | query | integer | no | Default: 25. |
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
200 | Éxito. | data: MarketResource[] · pagination: PaginationMeta |
401 | application/problem+json (RFC 9457) — branch on code, not on the status: unauthorized (not retryable), key_expired (not retryable), key_revoked (not retryable). | — |
403 | application/problem+json (RFC 9457) — branch on code, not on the status: insufficient_scope (not retryable), ip_not_allowed (not retryable), api_access_disabled (not retryable). | — |
429 | application/problem+json (RFC 9457) — branch on code, not on the status: rate_limited (retryable). | — |
500 | application/problem+json (RFC 9457) — branch on code, not on the status: internal_error (retryable). | — |
502 | application/problem+json (RFC 9457) — branch on code, not on the status: downstream_unavailable (retryable). | — |
503 | application/problem+json (RFC 9457) — branch on code, not on the status: maintenance (retryable). | — |
GET /v2/markets/{market}
Get a supported market by id
The id is the market code returned by GET /v2/markets (e.g. BTC-CLP). For a tokenised equity the rebased spelling also resolves — NVDAX-CLP returns NVDASPV-CLP. Reference data is identical for every key, so this response does not depend on who asks.
Parámetros
| Parámetro | En | Tipo | Requerido | Descripción |
|---|---|---|---|---|
market | path | string | sí |
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
200 | Éxito. | MarketResource |
401 | application/problem+json (RFC 9457) — branch on code, not on the status: unauthorized (not retryable), key_expired (not retryable), key_revoked (not retryable). | — |
403 | application/problem+json (RFC 9457) — branch on code, not on the status: insufficient_scope (not retryable), ip_not_allowed (not retryable), api_access_disabled (not retryable). | — |
404 | application/problem+json (RFC 9457) — branch on code, not on the status: not_found (not retryable). | — |
429 | application/problem+json (RFC 9457) — branch on code, not on the status: rate_limited (retryable). | — |
500 | application/problem+json (RFC 9457) — branch on code, not on the status: internal_error (retryable). | — |
502 | application/problem+json (RFC 9457) — branch on code, not on the status: downstream_unavailable (retryable). | — |
503 | application/problem+json (RFC 9457) — branch on code, not on the status: maintenance (retryable). | — |
GET /v2/markets/{market}/price
Get an indicative price for a market
A NON-BINDING price. Nothing is reserved and there is no expiry — the response carries no order id, so it cannot be executed. To obtain a confirmable quote use POST /v2/quotes (scope trading:write), then execute it with a signed POST /v2/orders.
Skipo prices a dealer spread, so the rate depends on size: pass amount + amountAsset to price a specific ticket, or omit both to price at the market minimum. amount is capped by that asset’s maxIndicativeQuoteAmount (see GET /v2/assets); above the cap the request is rejected rather than silently repriced at a smaller size.
Either spelling of a tokenised equity works, in market and in amountAsset alike — NVDAX-CLP with amountAsset=NVDAX prices the same ticket as NVDASPV-CLP with amountAsset=NVDASPV. The representation of amount is set by assetFormat, never by which spelling you used.
Parámetros
| Parámetro | En | Tipo | Requerido | Descripción |
|---|---|---|---|---|
market | path | string | sí | |
side | query | BUY | SELL | sí | Which direction to price. Required — buying and selling the same market are different prices, so there is no sensible default. |
amount | query | string | no | Amount to price, denominated in amountAsset. A decimal string. Requires amountAsset. Omit both to price at the market minimum. Capped by the maxIndicativeQuoteAmount of amountAsset from GET /v2/assets — an amount above the cap is rejected rather than silently reduced, because a price for an amount you did not ask for is worse than an error. |
amountAsset | query | string | no | Which leg amount is denominated in — must be one of the market's two assets. Requires amount. |
assetFormat | query | AssetFormat | no | How to express tokenised-equity (xStock) amounts — BOTH the amount you send and the amounts and rate you get back. rebased (default) = underlying equity (real shares); base = settled SPV tokens. No effect on other assets. market is unaffected either way: a market id names an instrument pair, not a quantity, and is spelled the same in both. |
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
200 | Éxito. | PriceResource |
401 | application/problem+json (RFC 9457) — branch on code, not on the status: unauthorized (not retryable), key_expired (not retryable), key_revoked (not retryable). | — |
403 | application/problem+json (RFC 9457) — branch on code, not on the status: insufficient_scope (not retryable), ip_not_allowed (not retryable), api_access_disabled (not retryable). | — |
404 | application/problem+json (RFC 9457) — branch on code, not on the status: not_found (not retryable). | — |
429 | application/problem+json (RFC 9457) — branch on code, not on the status: rate_limited (retryable). | — |
500 | application/problem+json (RFC 9457) — branch on code, not on the status: internal_error (retryable). | — |
502 | application/problem+json (RFC 9457) — branch on code, not on the status: downstream_unavailable (retryable). | — |
503 | application/problem+json (RFC 9457) — branch on code, not on the status: maintenance (retryable). | — |
Esquemas
MarketResource
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Ej.: BTC-CLP. |
baseAsset | string | Base asset code. Matches a GET /v2/assets assetSymbol. Ej.: BTC. |
rebasedBaseAsset | string | The REBASED ticker for the base leg — the name a holder recognises. NVDAX where baseAsset is NVDASPV, and the same value as baseAsset for everything else. ⚠️ Display only: baseAsset is the code GET /v2/assets is keyed by, and id keeps the settled spelling because a market id never rebases. Ej.: BTC. |
quoteAsset | string | Quote asset code. Matches a GET /v2/assets assetSymbol. Ej.: CLP. |
type | CRYPTO-CRYPTO | CRYPTO-FIAT | FIAT-FIAT | The asset classes this market pairs. It does NOT identify a tokenised-equity market — those are typed CRYPTO-FIAT too. Read assetClass on the asset for that. Ej.: CRYPTO-FIAT. |
minBaseAmount | string | Smallest amount you may request when you denominate the trade in the BASE asset. Identical for BUY and SELL. Ej.: 0.0001. |
minQuoteAmount | string | Smallest amount you may request when you denominate the trade in the QUOTE asset. Identical for BUY and SELL. Ej.: 1000. |
baseIncrement | string | Amount step on the BASE leg. A finer amount is truncated, not rejected. Equivalent to Coinbase's base_increment and Binance's stepSize. Ej.: 0.00000001. |
quoteIncrement | string | Amount step on the QUOTE leg — e.g. "1" on a CLP market, which settles in whole pesos. Equivalent to Coinbase's quote_increment. Ej.: 1. |
tradingDays | number[] | null | Days of the week this market trades, as ISO weekday numbers (1 = Monday … 7 = Sunday), evaluated in UTC. null means it trades every day — which is the case for every crypto-only market. Tokenised-equity markets trade Monday to Friday. Ej.: 1,2,3,4,5. |
PaginationMeta
| Campo | Tipo | Descripción |
|---|---|---|
page | number | Ej.: 1. |
limit | number | Ej.: 25. |
totalItems | number | Ej.: 100. |
totalPages | number | Ej.: 4. |
PriceBaseRepresentation
| Campo | Tipo | Descripción |
|---|---|---|
rate | string | Rate in settled units — quote asset per SETTLED base unit. Moves INVERSELY to the base amount under a rebase: the base leg divides going back to settled, so the rate multiplies. Ej.: 59700000. |
baseAmount | string | Base-asset amount in settled units. Subject to the last-place caveat above — converts rounds to 8dp upstream, so treat this as indicative, like the price itself. Ej.: 0.2. |
quoteAmount | string | Quote-asset amount. Never rebases — an xStock market quotes in fiat or a stablecoin — so this always equals the top-level quoteAmount. Ej.: 11940000. |
PriceResource
| Campo | Tipo | Descripción |
|---|---|---|
market | string | The market this price is for, echoed from the request path. Ej.: BTC-CLP. |
side | BUY | SELL | The side priced. Buying and selling the same market are different prices — the spread is real — so a price is only meaningful together with its side. Ej.: BUY. |
rate | string | Quote asset per one unit of base asset. A decimal string. This is the rate for baseAmount specifically: Skipo prices a dealer spread, so the rate is a function of size and does NOT scale linearly to a larger amount. Ej.: 59700000. |
baseAmount | string | Base-asset amount this price was calculated for. When the request omitted amount, this is the market's minimum — not a limit-free rate. Ej.: 0.2. |
quoteAmount | string | Quote-asset amount corresponding to baseAmount at rate. Ej.: 11940000. |
indicative | boolean | Always true. Present so a client never has to infer non-bindingness from missing fields. This price is not reserved, not held, and cannot be executed — obtaining a confirmable quote is POST /v2/quotes, which requires the trading:write scope. Ej.: true. |
pricedAt | string | When Skipo calculated this price, ISO-8601. There is no expiry because there is nothing to expire; treat the price as a point-in-time observation and re-read it when it matters. Ej.: 2026-07-30T04:36:02.451Z. |
assetFormat | any | Which representation baseAmount and rate above are in — the value you asked for, or the default. Always present, so a client never has to infer the units it was given. quoteAmount is unaffected: an xStock market quotes in fiat or a stablecoin, which does not rebase. |
multiplier | string | This market's base-leg rebase factor as it stands NOW, published whether or not it was applied. "1" when the base asset does not rebase. It is NOT stamped on anything — a price is a calculation, not a record — so an order placed later carries the factor in force at ITS creation, which may differ. Ej.: 1. |
base | any | The same price in SETTLED units. Present in BOTH representations, so a client comparing an indicative price against a ledger entry or an existing position never has to re-request it. On a base read it repeats the figures above rather than disappearing. Indicative, like everything else on this resource — see the schema notes for the last-place rounding caveat that applies here and not to POST /v2/quotes. |
Problem
| Campo | Tipo | Descripción |
|---|---|---|
type | string | Stable problem-type URI. Resolves to docs for this error. Ej.: https://docs.skipo.com/errors/rate_limited. |
title | string | Short, human-readable summary (stable, English). Ej.: Rate limit exceeded. |
status | number | HTTP status code. Ej.: 429. |
code | string | Stable machine-readable error code (equals the last path segment of type). Ej.: rate_limited. |
retryable | boolean | Whether retrying the identical request may succeed. Ej.: true. |
detail (opcional) | string | Human-readable, possibly localized detail. |
instance (opcional) | string | The request path that produced the error. |
traceId (opcional) | string | Trace id — joins BigQuery api_request and Cloud Logging. |
Volver a la referencia de endpoints. Ver también: Paginación · Errores · Ids y correlación.