> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whitebit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Market info

> The endpoint retrieves configuration and trading rules for all available spot, futures, and TradFi futures markets. Use the response to discover tradeable pairs, check minimum order sizes, and read fee schedules. Each entry includes precision settings, fee ratios, and order-size constraints for the market.

<Note>
Market configuration is reference data, re-synced from the database approximately every 10 seconds. Polling more frequently returns identical data. The cache is shared across all callers.
</Note>

<Note>
TradFi futures markets are region-gated: markets not available in a given region are omitted from the response entirely and do not appear under any other market type.
</Note>

<Note>
A market with an announced delisting carries the announced date in `delistedAt` and stays tradeable until the delisting runs. Once the delisting runs, the platform cancels the active orders on the market and drops the market from this response — [Query delisting and maintenance orders](/api-reference/trading/query-delisting-orders) is a signed request that returns the authenticated account's resulting spot order records. An announcement can be rescheduled or canceled, so treat `delistedAt` as the current plan rather than a settled fact and re-read the value on the next poll.
</Note>

<Warning>
Rate limit 2000 requests/10 sec.
</Warning>


export const RelatedResources = ({children}) => {
  const {useEffect, useRef, useState} = React;
  const ref = useRef(null);
  const [visible, setVisible] = useState(false);
  useEffect(() => {
    if (!ref.current) return;
    const el = ref.current;
    if (el.parentElement) {
      el.parentElement.appendChild(el);
    }
    setVisible(true);
  }, []);
  return <div ref={ref} className="related-resources" style={{
    marginTop: "2.5rem",
    paddingTop: "1.5rem",
    borderTop: "1px solid var(--border-color, #e5e7eb)",
    opacity: visible ? 1 : 0,
    transition: "opacity 0.15s ease-in"
  }}>
      <h2 style={{
    marginTop: 0
  }}>Related resources</h2>
      {children}
    </div>;
};

<RelatedResources>
  * [Market activity](/api-reference/market-data/market-activity) — 24-hour pricing and volume summary per market.
  * [Collateral markets list](/api-reference/market-data/collateral-markets-list) — markets available for collateral trading.
  * [Fee](/api-reference/market-data/fee) — deposit and withdrawal fee schedule per asset.
  * [Query delisting and maintenance orders](/api-reference/trading/query-delisting-orders) — order history for markets that were delisted or put into maintenance.
</RelatedResources>


## OpenAPI

````yaml openapi/public/http-v4.yaml GET /api/v4/public/markets
openapi: 3.0.3
info:
  title: Public HTTP API V4
  description: >
    WhiteBIT Public HTTP API V4 for market data and trading information.

    Base URL: https://whitebit.com

    All endpoints return time in Unix-time format.

    All endpoints return either a JSON object or array.

    Use HTTP method GET for API calls.

    Send parameters as query string when an endpoint requires them.


    <Warning>

    Rate limit: 2000 requests/10 sec for most endpoints (specific limits noted
    per endpoint).

    </Warning>


    ## Caching and data freshness


    Most public endpoints serve cached data. The cache is **shared across all
    callers** — values are keyed by the resource (market, currency), never by
    account — and invalidates on a **time basis only**: an upstream change
    becomes visible after the next refresh, not immediately.


    Two refresh tiers apply:


    - **Reference data** (`markets`, `assets`, `fee`, `collateral/markets`,
    `futures`) refreshes from the database on a fixed interval, ranging from
    about 10 seconds to about 1 minute depending on the endpoint.

    - **Market data** (`trades`, `orderbook`, `orderbook/depth`, `ticker`) uses
    a short-lived cache, about 1 second by default.


    `time` and `ping` are computed per request and are not cached. Each endpoint
    states its own refresh interval. Polling faster than that interval returns
    identical data and consumes rate-limit budget without producing fresher
    results.


    ## Error responses


    Public V4 endpoints do not share a single error schema. Depending on the
    endpoint, an error arrives in one of three shapes (there is no `params`
    field on any public error):


    - **Flat validation bag (HTTP 422)** — `{ "<field>": ["<message>"] }`. No
    envelope. Used by the market endpoints (`orderbook`, `orderbook/depth`,
    `trades`). Example: `{ "market": ["Market is not available."] }`. On
    `funding-history` most validation values are single strings rather than
    arrays; the market-not-available case and the upstream `error` key keep the
    array shape.

    - **Wrapped, HTTP 200 even on validation errors** — `{ "success": false,
    "message": { "<field>": ["<message>"] }, "result": null }`. Used by the V4
    `kline` endpoint (not part of this portal — the documented Kline endpoint is
    V1).

    - **Wrapped string message (HTTP 4xx)** — `{ "success": false, "message":
    "<string>", "errors": [] }`. Used by the margin/futures collateral subset of
    endpoints, including the HTTP 451 regional-availability responses on
    `collateral/markets` and `futures`. Parameterless endpoints (`markets`,
    `ticker`, `assets`, `fee`) take no input and so produce no validation errors
    — they fail only at the infrastructure level below.


    Common failures are produced at the infrastructure layer, not by the
    application, and do not follow these shapes:


    - **Maintenance** — every endpoint returns **HTTP 503** with a non-JSON body
    served by the gateway.

    - **Rate limit exceeded** — **HTTP 429** with a non-JSON body served by the
    gateway/CDN.

    - **Internal server error** — **HTTP 500** with a flat body `{ "error":
    ["Internal server error."] }`.

    - **Unknown route** — **HTTP 404** with an empty body.
  version: 4.0.0
servers:
  - url: https://whitebit.com
    description: WhiteBIT Global Server
  - url: https://whitebit.eu
    description: WhiteBIT EU Server
  - url: https://whitebit.tr
    description: WhiteBIT TR Server
  - url: https://whitebit.ge
    description: WhiteBIT GE Server
security: []
tags:
  - name: Public API V4
    description: Public endpoints for market data, trading information, and platform status
paths:
  /api/v4/public/markets:
    get:
      tags:
        - Public API V4
      summary: Market Info
      description: >
        The endpoint retrieves configuration and trading rules for all available
        spot, futures, and TradFi futures markets. Use the response to discover
        tradeable pairs, check minimum order sizes, and read fee schedules. Each
        entry includes precision settings, fee ratios, and order-size
        constraints for the market.


        <Note>

        Market configuration is reference data, re-synced from the database
        approximately every 10 seconds. Polling more frequently returns
        identical data. The cache is shared across all callers.

        </Note>


        <Note>

        TradFi futures markets are region-gated: markets not available in a
        given region are omitted from the response entirely and do not appear
        under any other market type.

        </Note>


        <Note>

        A market with an announced delisting carries the announced date in
        `delistedAt` and stays tradeable until the delisting runs. Once the
        delisting runs, the platform cancels the active orders on the market and
        drops the market from this response — [Query delisting and maintenance
        orders](/api-reference/trading/query-delisting-orders) is a signed
        request that returns the authenticated account's resulting spot order
        records. An announcement can be rescheduled or canceled, so treat
        `delistedAt` as the current plan rather than a settled fact and re-read
        the value on the next poll.

        </Note>


        <Warning>

        Rate limit 2000 requests/10 sec.

        </Warning>
      parameters: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  required:
                    - name
                    - stock
                    - money
                    - stockPrec
                    - moneyPrec
                    - feePrec
                    - makerFee
                    - takerFee
                    - minAmount
                    - minTotal
                    - maxTotal
                    - tradesEnabled
                    - isCollateral
                    - type
                    - isTradFiFutures
                    - delistedAt
                    - tickSize
                    - stepSize
                  properties:
                    name:
                      type: string
                      description: Market pair name
                      example: SON_USD
                    stock:
                      type: string
                      description: Ticker of stock currency
                      example: SON
                    money:
                      type: string
                      description: >-
                        Ticker of money currency. Perpetual futures markets
                        report `USDT` as the money currency.
                      example: USD
                    stockPrec:
                      type: string
                      description: >-
                        Maximum number of decimal places for the base (stock)
                        currency quantity. Represented as a stringified integer.
                      example: '3'
                    moneyPrec:
                      type: string
                      description: >-
                        Maximum number of decimal places for the quote (money)
                        currency amount. Represented as a stringified integer.
                      example: '2'
                    feePrec:
                      type: string
                      description: >-
                        Maximum number of decimal places used when calculating
                        fees. Represented as a stringified integer.
                      example: '4'
                    makerFee:
                      type: string
                      description: >-
                        Default maker fee as a percentage value (e.g., `"0.1"`
                        means 0.1%). Divide by 100 to convert to a decimal
                        ratio. `GET /api/v4/public/assets` reports `maker_fee`
                        in the same format.
                      example: '0.1'
                    takerFee:
                      type: string
                      description: >-
                        Default taker fee as a percentage value (e.g., `"0.1"`
                        means 0.1%). Divide by 100 to convert to a decimal
                        ratio. `GET /api/v4/public/assets` reports `taker_fee`
                        in the same format.
                      example: '0.1'
                    minAmount:
                      type: string
                      description: Minimum order quantity in the base (stock) currency.
                      example: '0.001'
                    minTotal:
                      type: string
                      description: Minimum order total in the quote (money) currency.
                      example: '0.001'
                    maxTotal:
                      type: string
                      description: >-
                        Maximum order total (quantity × price) in the quote
                        (money) currency. `"0"` indicates no upper limit.
                      example: '10000000000'
                    tradesEnabled:
                      type: boolean
                      description: >-
                        Indicates whether trading is enabled. The response
                        includes only markets enabled for trading, so the value
                        is always `true`.
                      example: true
                    isCollateral:
                      type: boolean
                      description: Indicates whether margin trading is enabled
                      example: true
                    type:
                      type: string
                      description: >-
                        Market type. Possible values: spot, futures,
                        tradfiFutures
                      enum:
                        - spot
                        - futures
                        - tradfiFutures
                      example: spot
                    isTradFiFutures:
                      type: boolean
                      description: >-
                        Indicates whether the market is a traditional-finance
                        (TradFi) futures market. Always paired with `type:
                        tradfiFutures`. TradFi futures markets are region-gated
                        and omitted from the response entirely where not
                        available.
                      example: false
                    delistedAt:
                      type: integer
                      format: int64
                      nullable: true
                      description: >-
                        Announced delisting date as a Unix timestamp in seconds.
                        `null` when no delisting is announced for the market.
                        The field is always present in the response.
                      example: 1786752000
                    tickSize:
                      type: string
                      description: >-
                        Minimal price step a limit order price must be a
                        multiple of. Passed through verbatim from the trade
                        engine; an empty string when the engine does not provide
                        the value for the market. From September 18, 2026, an
                        order price that is not a multiple of this value is
                        rejected.
                      example: '0.01'
                    stepSize:
                      type: string
                      description: >-
                        Minimal quantity step an order amount must be a multiple
                        of. Passed through verbatim from the trade engine; an
                        empty string when the engine does not provide the value
                        for the market. From September 18, 2026, an order amount
                        that is not a multiple of this value is rejected.
                      example: '0.001'
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV4'
components:
  schemas:
    ErrorV4:
      type: object
      description: >-
        Generic wrapped error envelope (fallback). Market-data validation errors
        use the flat PublicValidationError shape (HTTP 422) instead, and
        infrastructure-level failures (maintenance, rate limit, internal error,
        unknown route) are non-JSON or flat. See the API description for the
        full set of public error shapes.
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          description: Error message
          example: Internal server error.
        errors:
          type: array
          items:
            type: string
          example: []

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.