Korbit Open API v2

REST API for the Korbit cryptocurrency exchange covering market data (quotation), trading, balances, cryptocurrency deposits and withdrawals, and KRW deposit/withdrawal push notifications. Responses use a {success, data} envelope; private endpoints require the X-KAPI-KEY header plus timestamp and signature parameters signed with HMAC-SHA256 or ED25519.

OpenAPI Specification

korbit-openapi.yml Raw ↑
# Generated by the API Evangelist enrichment pipeline on 2026-07-19.
# method: generated
# source: https://docs.korbit.co.kr/llms-full.txt (Korbit's own published agent
#   documentation bundle). Korbit does not publish an OpenAPI/AsyncAPI document;
#   this is a faithful transcription of the published reference, not an official
#   Korbit artifact.
openapi: 3.1.0
info:
  title: Korbit Open API v2
  version: 2.0.0
  description: |-
    REST API for the Korbit cryptocurrency exchange (Korea's first virtual-asset exchange). Covers market data (quotation), trading, balances, crypto deposits and withdrawals, and KRW deposit/withdrawal push notifications.

    All responses use the envelope `{"success": true, "data": ...}`; errors use `{"success": false, "error": {"message": "<CODE>"}}`.

    Private endpoints require the `X-KAPI-KEY` header plus `timestamp` and `signature` parameters. Signatures are HMAC-SHA256 (hex) or ED25519 (Base64, URL-encoded) over the exact encoded request string. See the timestamp-window rules: `recvWindow` defaults to 5000 ms, maximum 60000 ms, and the future bound is a fixed +1000 ms.

    This document was generated by the API Evangelist enrichment pipeline from Korbit's own published agent documentation bundle (https://docs.korbit.co.kr/llms-full.txt). Korbit does not publish an OpenAPI document; this is a faithful transcription of the published reference, not an official artifact.
  contact:
    name: Korbit Developers
    url: https://developers.korbit.co.kr
  x-generated-by: API Evangelist enrichment pipeline
  x-source: https://docs.korbit.co.kr/llms-full.txt
servers:
- url: https://api.korbit.co.kr
  description: Production
- url: http://127.0.0.1:9999
  description: Local sandbox (korbit-sandbox.mjs) — mock, not the production server
tags:
- name: Quotation
- name: Trading
- name: Asset
- name: Deposit (Crypto)
- name: Withdrawal (Crypto)
- name: Deposit/Withdrawal (KRW)
- name: Other
paths:
  /v2/tickers:
    get:
      operationId: getTickers
      summary: Get Tickers
      description: Get latest price and trading volume for a symbol or symbols.
      tags:
      - Quotation
      parameters:
      - name: symbol
        in: query
        description: Enter the symbols of the trading pairs you want to query, separated by commas (,).
          If omitted, information for all available trading pairs on Korbit will be returned.
        schema:
          type: string
          examples:
          - btc_krw,eth_krw
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    examples:
                    - true
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        symbol:
                          type: string
                          description: Trading pair symbol.
                          examples:
                          - btc_krw
                        open:
                          type: string
                          description: Open price (24H).
                          examples:
                          - '361922.23'
                        high:
                          type: string
                          description: High price (24H).
                          examples:
                          - '361922.23'
                        low:
                          type: string
                          description: Low price (24H).
                          examples:
                          - '361922.23'
                        close:
                          type: string
                          description: Last price (24H).
                          examples:
                          - '361922.23'
                        prevClose:
                          type: string
                          description: Previous close price (24H).
                          examples:
                          - '261922.23'
                        priceChange:
                          type: string
                          description: changed price. `close - prevClose`.
                          examples:
                          - '100000'
                        priceChangePercent:
                          type: string
                          description: changed price percent. `100 * (close - prevClose) / prevClose`.
                          examples:
                          - '38.18'
                        volume:
                          type: string
                          description: Trading volume (Base, 24H).
                          examples:
                          - '100'
                        quoteVolume:
                          type: string
                          description: Trading volume (Quote/Counter, 24H).
                          examples:
                          - '1000000000'
                        bestBidPrice:
                          type: string
                          description: Best bid price.
                          examples:
                          - '5000'
                        bestAskPrice:
                          type: string
                          description: Best ask price.
                          examples:
                          - '6000'
                        lastTradedAt:
                          type: number
                          description: Last traded timestamp (ms).
                          examples:
                          - 1700000000000
                      required:
                      - symbol
                      - open
                      - high
                      - low
                      - close
                      - prevClose
                      - priceChange
                      - priceChangePercent
                      - volume
                      - quoteVolume
                      - bestBidPrice
                      - bestAskPrice
                      - lastTradedAt
                required:
                - success
              example:
                success: true
                data:
                - symbol: btc_krw
                  open: '77060000'
                  high: '79650000'
                  low: '76550000'
                  close: '77136000'
                  prevClose: '77060000'
                  priceChange: '76000'
                  priceChangePercent: '0.1'
                  volume: '48.73739983'
                  quoteVolume: '3785149733.32633'
                  bestBidPrice: '77136000'
                  bestAskPrice: '77193000'
                  lastTradedAt: 1725525721041
                - symbol: eth_krw
                  open: '3259000'
                  high: '3370000'
                  low: '3222000'
                  close: '3250000'
                  prevClose: '3259000'
                  priceChange: '-9000'
                  priceChangePercent: '-0.28'
                  volume: '161.99278306'
                  quoteVolume: '532827941.01581'
                  bestBidPrice: '3251000'
                  bestAskPrice: '3254000'
                  lastTradedAt: 1725525545630
        '400':
          description: Bad request — see the error envelope and error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
  /v2/orderbook:
    get:
      operationId: getOrderbook
      summary: Get Orderbook
      description: Get orderbook data.
      tags:
      - Quotation
      parameters:
      - name: symbol
        in: query
        required: true
        description: Trading pair.
        schema:
          type: string
          examples:
          - btc_krw
      - name: level
        in: query
        description: Orderbook grouping level. Available levels can be checked via the Get Tick Size Policy
          API. If not provided, grouping will not be applied.
        schema:
          type: string
          examples:
          - '1000'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    examples:
                    - true
                  data:
                    type: object
                    properties:
                      timestamp:
                        type: number
                        description: timestamp (ms).
                        examples:
                        - 1700000000000
                      bids:
                        type: array
                        items:
                          type: object
                          properties:
                            price:
                              type: string
                              description: price.
                              examples:
                              - '250000'
                            qty:
                              type: string
                              description: quantity.
                              examples:
                              - '10'
                            amt:
                              type: string
                              description: Total amount (only set when orderbook grouping is used. When
                                not using grouping, it can be calculated as `price * qty`).
                              examples:
                              - '2500000'
                          required:
                          - price
                          - qty
                        description: bids
                      asks:
                        type: array
                        items:
                          type: object
                          properties:
                            price:
                              type: string
                              description: price.
                              examples:
                              - '250000'
                            qty:
                              type: string
                              description: quantity.
                              examples:
                              - '10'
                            amt:
                              type: string
                              description: Total amount (only set when orderbook grouping is used. When
                                not using grouping, it can be calculated as `price * qty`).
                              examples:
                              - '2500000'
                          required:
                          - price
                          - qty
                        description: asks
                    required:
                    - timestamp
                    - bids
                    - asks
                required:
                - success
              example:
                success: true
                data:
                  timestamp: 1708057740895
                  bids:
                  - price: '73303000'
                    qty: '0.00898326'
                  - price: '73302000'
                    qty: '0.00790837'
                  - price: '73301000'
                    qty: '0.00843099'
                  - price: '73300000'
                    qty: '0.00054024'
                  - price: '73299000'
                    qty: '0.00663446'
                  asks:
                  - price: '73304000'
                    qty: '0.00985212'
                  - price: '73305000'
                    qty: '0.00367505'
                  - price: '73306000'
                    qty: '0.0096254'
                  - price: '73307000'
                    qty: '0.00502544'
                  - price: '73308000'
                    qty: '0.00640584'
        '400':
          description: Bad request — see the error envelope and error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
  /v2/trades:
    get:
      operationId: getTrades
      summary: Get Recent Trades
      description: Get recent trades.
      tags:
      - Quotation
      parameters:
      - name: symbol
        in: query
        required: true
        description: Trading pair.
        schema:
          type: string
          examples:
          - btc_krw
      - name: limit
        in: query
        description: 'limit (range: 1 ~ 500).'
        schema:
          type: number
          examples:
          - 100
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    examples:
                    - true
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        timestamp:
                          type: number
                          description: timestamp (ms).
                          examples:
                          - 1700000000000
                        price:
                          type: string
                          description: price.
                          examples:
                          - '250000'
                        qty:
                          type: string
                          description: quantity.
                          examples:
                          - '10'
                        isBuyerTaker:
                          type: boolean
                          description: whether the taker is the buyer.
                          examples:
                          - true
                        tradeId:
                          type: number
                          description: trade ID (the ID of the trade execution assigned to each trading
                            pair). Monotonically increasing per trading pair, but not guaranteed to be
                            contiguous.
                          examples:
                          - 1234
                      required:
                      - timestamp
                      - price
                      - qty
                      - isBuyerTaker
                      - tradeId
                required:
                - success
              example:
                success: true
                data:
                - timestamp: 1708057271149
                  price: '70507000'
                  qty: '0.00981535'
                  isBuyerTaker: false
                  tradeId: 1004
                - timestamp: 1708057271035
                  price: '70508000'
                  qty: '0.00682475'
                  isBuyerTaker: false
                  tradeId: 1003
                - timestamp: 1708057270922
                  price: '70509000'
                  qty: '0.00844147'
                  isBuyerTaker: false
                  tradeId: 1002
                - timestamp: 1708057270809
                  price: '70510000'
                  qty: '0.00553963'
                  isBuyerTaker: false
                  tradeId: 1001
        '400':
          description: Bad request — see the error envelope and error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
  /v2/candles:
    get:
      operationId: getCandles
      summary: Get Candlesticks
      description: Get historical candlesticks (klines) data.
      tags:
      - Quotation
      parameters:
      - name: symbol
        in: query
        required: true
        description: Trading pair.
        schema:
          type: string
          examples:
          - btc_krw
      - name: interval
        in: query
        required: true
        description: interval `1` — 1 min / `5` — 5 mins / `15` — 15 mins / `30` — 30 mins / `60` — 1
          hour / `240` — 4 hours / `1D` — 1 day / `1W` — 1 week
        schema:
          type: string
          enum:
          - '1'
          - '5'
          - '15'
          - '30'
          - '60'
          - '240'
          - 1D
          - 1W
      - name: start
        in: query
        description: 'start timestamp. (default: listed time).'
        schema:
          type: number
          examples:
          - 1600000000000
      - name: end
        in: query
        description: 'end timestamp. must be larger than `start`. (default: now).'
        schema:
          type: number
          examples:
          - 1700000000000
      - name: limit
        in: query
        required: true
        description: 'limit (range: 1 ~ 200).'
        schema:
          type: number
          examples:
          - 100
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    examples:
                    - true
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        timestamp:
                          type: number
                          description: candle start timestamp.
                          examples:
                          - 1619244573612
                        open:
                          type: string
                          description: open price.
                          examples:
                          - '361922.23'
                        high:
                          type: string
                          description: high price.
                          examples:
                          - '361922.23'
                        low:
                          type: string
                          description: low price.
                          examples:
                          - '361922.23'
                        close:
                          type: string
                          description: close price.
                          examples:
                          - '361922.23'
                        volume:
                          type: string
                          description: volume.
                          examples:
                          - '100'
                      required:
                      - timestamp
                      - open
                      - high
                      - low
                      - close
                      - volume
                required:
                - success
              example:
                success: true
                data:
                - timestamp: 1708041600000
                  open: '71211000'
                  high: '9999990000'
                  low: '300000'
                  close: '71392000'
                  volume: '1.932320026577213946'
                - timestamp: 1708045200000
                  open: '73510000'
                  high: '74605000'
                  low: '300000'
                  close: '72315000'
                  volume: '2.418698679231323743'
                - timestamp: 1708048800000
                  open: '72315000'
                  high: '9999990000'
                  low: '300000'
                  close: '72380000'
                  volume: '1.947520219976227299'
                - timestamp: 1708052400000
                  open: '70267000'
                  high: '74777000'
                  low: '300000'
                  close: '74049000'
                  volume: '2.254855048982521506'
                - timestamp: 1708056000000
                  open: '68304000'
                  high: '74834000'
                  low: '68241000'
                  close: '74825000'
                  volume: '0.630193755379195341'
        '400':
          description: Bad request — see the error envelope and error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
  /v2/currencyPairs:
    get:
      operationId: getCurrencyPairs
      summary: Get Trading Pairs
      tags:
      - Quotation
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    examples:
                    - true
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        symbol:
                          type: string
                          description: trading pair symbol.
                          examples:
                          - btc_krw
                        status:
                          type: string
                          enum:
                          - launched
                          - stopped
                          description: '`launched` — trading available / `stopped` — trading unavailable'
                      required:
                      - symbol
                      - status
                required:
                - success
              example:
                success: true
                data:
                - symbol: btc_krw
                  status: launched
                - symbol: eth_krw
                  status: launched
                - symbol: xrp_krw
                  status: stopped
        '400':
          description: Bad request — see the error envelope and error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
  /v2/tickSizePolicy:
    get:
      operationId: getTickSizePolicy
      summary: Get Tick Size Policy
      description: Get tick size policy and orderbook grouping levels for a trading pair.
      tags:
      - Quotation
      parameters:
      - name: symbol
        in: query
        required: true
        description: Trading pair symbol.
        schema:
          type: string
          examples:
          - xrp_krw
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    examples:
                    - true
                  data:
                    type: array
                    items:
                      type: object
                required:
                - success
              example:
                success: true
                data:
                - symbol: xrp_krw
                  tickSizePolicy:
                  - priceGte: '0'
                    tickSize: '0.0001'
                  - priceGte: '1'
                    tickSize: '0.001'
                  - priceGte: '10'
                    tickSize: '0.01'
                  - priceGte: '100'
                    tickSize: '0.1'
                  - priceGte: '1000'
                    tickSize: '1'
                  - priceGte: '5000'
                    tickSize: '5'
                  - priceGte: '10000'
                    tickSize: '10'
                  - priceGte: '50000'
                    tickSize: '50'
                  - priceGte: '100000'
                    tickSize: '100'
                  - priceGte: '500000'
                    tickSize: '500'
                  - priceGte: '1000000'
                    tickSize: '1000'
                  orderbookLevels:
                  - '0.1'
                  - '1'
                  - '10'
                  - '100'
        '400':
          description: Bad request — see the error envelope and error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded. Honor `Retry-After` / the `Ratelimit` reset window.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
  /v2/orders:
    get:
      operationId: getOrders
      summary: Get Order
      description: |-
        Use either `orderId` or `clientOrderId` to query the status of an individual order.
        However, orders with the statuses `expired` or `canceled` cannot be retrieved approximately 3 days after they have been closed.
      tags:
      - Trading
      parameters:
      - name: symbol
        in: query
        required: true
        description: Trading pair.
        schema:
          type: string
          examples:
          - btc_krw
      - name: accountSeq
        in: query
        description: Account sequence number. Defaults to 1 (main account).
        schema:
          type: number
          examples:
          - 1
      - name: orderId
        in: query
        description: Enter `orderID` (responsed by POST /v2/orders). Enter one of `orderID` or `clientOrderId`.
        schema:
          type: number
          examples:
          - 1234
      - name: clientOrderId
        in: query
        description: Enter `clientOrderId` (requested by POST /v2/orders). Enter one of `orderID` or `clientOrderId`.
        schema:
          type: string
          examples:
          - 20141231-155959-abcdef
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    examples:
                    - true
                  data:
                    type: object
                    properties:
                      orderId:
                        type: number
                        description: Order ID generated by the server.
                        examples:
                        - 1234
                      clientOrderId:
                        type: string
                        description: '`clientOrderId` submitted from the user by POST /v2/orders.'
                        examples:
                        - 20141231-155959-abcdef
                      symbol:
                        type: string
                        description: symbol.
                        examples:
                        - btc_krw
                      orderType:
                        type: string
                        enum:
                        - limit
                        - market
                        - best
                        description: '`limit` — limit order / `market` — market order / `best` — best
                          bid/offer'
                      side:
                        type: string
                        enum:
                        - buy
                        - sell
                      timeInForce:
                        type: string
                        enum:
                        - gtc
                        - ioc
                        - fok
                        - po
                        description: 'Time in Force strategies. Default: - limit order: `gtc` - market
                          order: `ioc` - best bid/offer: no default(Bad Request error if omitted) For
                          market orders, only `ioc` can be entered. `gtc` — Good-Till-Canceled. The order
                          will remain valid until terminated (fully executed or canceled) / `ioc` — Immediate-Or-Cancel.
                          The order will be filled immediately, if can not then will be canceled. (Taker-Only)
                          / `fok` — Fill-Or-Kill. The order will be filled fully, if can not then will
                          be canceled. (Taker-Only) / `po` — Post-Only. If the order would be filled immediately,
                          then will be canceled. (Maker-Only)'
                      price:
                        type: string
                        description: Order price (limit/BBO order only. no price for market order. For
                          BBO orders it's set after the price is determined).
                        examples:
                        - '5000'
                      qty:
                        type: string
                        description: Order quantity (limit/BBO order or sell-side market order only. For
                          BBO orders it's set after the quantity is determined).
                        examples:
                        - '10'
                      amt:
                        type: string
                        description: Purchase amount in counter/quote asset like KRW. (buy-side market/BBO
                          order only).
                        examples:
                        - '50000'
                      filledQty:
                        type: string
                        description: Filled quantity.
                        examples:
                        - '10'
                      filledAmt:
                        type: string
                        description: Filled amount in counter/quote asset like KRW.
                        examples:
                        - '50000'
                      avgPrice:
                        type: string
                        description: Average execution price.
                        examples:
                        - '5000'
                      createdAt:
                        type: number
                        description: Order timestamp (ms).
                        examples:
                        - 1700000000000
                      lastFilledAt:
                        type: number
                        description: Last execution timestamp (ms).
                        examples:
                        - 1700000000000
                      triggeredAt:
                        type: number
                        description: Stop-limit order trigged timestamp.
                        examples:
                        - 1700000000000
                      status:
                        type: string
                        enum:
                        - pending
                        - open
                        - filled
                        - canceled
                        - partiallyFilled
                        - partiallyFilledCanceled
                        - expired
                        description: Order status `pending` — Order pending. When the balance is insufficient
                          or timeInForce condition is triggered, the order may fail and change to the
                          `expired` status. / `open` — Fully unfilled / `filled` — Execution closed. An
                          order whose unfilled remaind

# --- truncated at 32 KB (166 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/korbit/refs/heads/main/openapi/korbit-openapi.yml