Markets
GET /v2/markets
List supported markets
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | Default: 1. |
limit | query | integer | no | Default: 25. |
Responses
| Code | Description | Body |
|---|---|---|
200 | Success. | 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). Reference data is identical for every key, so this response does not depend on who asks.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
market | path | string | yes |
Responses
| Code | Description | Body |
|---|---|---|
200 | Success. | 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.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
market | path | string | yes | |
side | query | BUY | SELL | yes | 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. |
Responses
| Code | Description | Body |
|---|---|---|
200 | Success. | 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). | — |
Schemas
MarketResource
| Field | Type | Description |
|---|---|---|
id | string | e.g. BTC-CLP. |
baseAsset | string | Base asset code. Matches a GET /v2/assets assetSymbol. e.g. BTC. |
quoteAsset | string | Quote asset code. Matches a GET /v2/assets assetSymbol. e.g. 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. e.g. CRYPTO-FIAT. |
minBaseAmount | string | Smallest amount you may request when you denominate the trade in the BASE asset. Identical for BUY and SELL. e.g. 0.0001. |
minQuoteAmount | string | Smallest amount you may request when you denominate the trade in the QUOTE asset. Identical for BUY and SELL. e.g. 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. e.g. 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. e.g. 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. e.g. 1,2,3,4,5. |
PaginationMeta
| Field | Type | Description |
|---|---|---|
page | number | e.g. 1. |
limit | number | e.g. 25. |
totalItems | number | e.g. 100. |
totalPages | number | e.g. 4. |
PriceResource
| Field | Type | Description |
|---|---|---|
market | string | The market this price is for, echoed from the request path. e.g. 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. e.g. 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. e.g. 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. e.g. 0.2. |
quoteAmount | string | Quote-asset amount corresponding to baseAmount at rate. e.g. 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. e.g. 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. e.g. 2026-07-30T04:36:02.451Z. |
Problem
| Field | Type | Description |
|---|---|---|
type | string | Stable problem-type URI. Resolves to docs for this error. e.g. https://docs.skipo.com/errors/rate_limited. |
title | string | Short, human-readable summary (stable, English). e.g. Rate limit exceeded. |
status | number | HTTP status code. e.g. 429. |
code | string | Stable machine-readable error code (equals the last path segment of type). e.g. rate_limited. |
retryable | boolean | Whether retrying the identical request may succeed. e.g. true. |
detail (optional) | string | Human-readable, possibly localized detail. |
instance (optional) | string | The request path that produced the error. |
traceId (optional) | string | Trace id — joins BigQuery api_request and Cloud Logging. |
Back to the endpoint reference. See also: Pagination · Errors · Ids and correlation.