openapi: 3.0.3 info: title: Upbit REST Exchange - Account Quotation API description: Upbit is a leading South Korean cryptocurrency exchange operated by Dunamu Inc., offering REST and WebSocket APIs for market data retrieval, order management, account balances, and transaction history. Developers must register an Upbit account with security level 2 or higher to issue API keys. Authenticated requests use JWT bearer tokens (HS512) generated from an Access Key and Secret Key pair, while public quotation endpoints (market data, tickers, orderbooks, candles) require no authentication. Upbit supports KRW, BTC, and USDT trading markets and complies with travel-rule regulations for digital asset transfers. version: 1.3.2 termsOfService: https://upbit.com/service_center/terms contact: url: https://global-docs.upbit.com/docs/support license: name: Upbit Open API Usage Agreement url: https://upbit.com/service_center/terms servers: - url: https://api.upbit.com/v1 description: Global API endpoint security: [] tags: - name: Quotation description: Public market data endpoints — no authentication required paths: /market/all: get: operationId: listTradingPairs summary: List trading pairs description: Returns a list of all trading pair identifiers available on Upbit. No authentication required. tags: - Quotation parameters: - name: is_details in: query required: false schema: type: boolean description: If true, returns additional market detail fields responses: '200': description: List of trading pairs content: application/json: schema: type: array items: type: object properties: market: type: string description: Market identifier (e.g., KRW-BTC) korean_name: type: string description: Korean name of the asset english_name: type: string description: English name of the asset '429': description: Rate limit exceeded /candles/seconds: get: operationId: listCandlesSeconds summary: List second candles description: Returns OHLCV second candles for the specified market. No authentication required. tags: - Quotation parameters: - name: market in: query required: true schema: type: string description: Market identifier (e.g., KRW-BTC) - name: to in: query required: false schema: type: string format: date-time description: End time for candles (ISO 8601 format) - name: count in: query required: false schema: type: integer minimum: 1 maximum: 200 description: Number of candles to return (max 200) responses: '200': description: List of second candles content: application/json: schema: type: array items: $ref: '#/components/schemas/CandleResponse' '429': description: Rate limit exceeded /candles/minutes/{unit}: get: operationId: listCandlesMinutes summary: List minute candles description: Returns OHLCV minute candles for the specified market and unit interval. No authentication required. tags: - Quotation parameters: - name: unit in: path required: true schema: type: integer enum: - 1 - 3 - 5 - 10 - 15 - 30 - 60 - 240 description: Minute interval (1, 3, 5, 10, 15, 30, 60, or 240) - name: market in: query required: true schema: type: string description: Market identifier (e.g., KRW-BTC) - name: to in: query required: false schema: type: string format: date-time description: End time for candles (ISO 8601 format) - name: count in: query required: false schema: type: integer minimum: 1 maximum: 200 description: Number of candles to return (max 200) responses: '200': description: List of minute candles content: application/json: schema: type: array items: allOf: - $ref: '#/components/schemas/CandleResponse' - type: object properties: unit: type: integer description: Minute unit of the candle '429': description: Rate limit exceeded /candles/days: get: operationId: listCandlesDays summary: List day candles description: Returns OHLCV daily candles for the specified market. No authentication required. tags: - Quotation parameters: - name: market in: query required: true schema: type: string description: Market identifier (e.g., KRW-BTC) - name: to in: query required: false schema: type: string format: date-time description: End time for candles (ISO 8601 format) - name: count in: query required: false schema: type: integer minimum: 1 maximum: 200 description: Number of candles to return (max 200) - name: converting_price_unit in: query required: false schema: type: string description: Quote currency for price conversion (e.g., KRW) responses: '200': description: List of daily candles content: application/json: schema: type: array items: allOf: - $ref: '#/components/schemas/CandleResponse' - type: object properties: prev_closing_price: type: string description: Previous day closing price (decimal string) change_price: type: string description: Price change from previous close (decimal string) change_rate: type: string description: Change rate from previous close (decimal string) '429': description: Rate limit exceeded /candles/weeks: get: operationId: listCandlesWeeks summary: List week candles description: Returns OHLCV weekly candles for the specified market. No authentication required. tags: - Quotation parameters: - name: market in: query required: true schema: type: string description: Market identifier (e.g., KRW-BTC) - name: to in: query required: false schema: type: string format: date-time description: End time for candles (ISO 8601 format) - name: count in: query required: false schema: type: integer minimum: 1 maximum: 200 description: Number of candles to return (max 200) responses: '200': description: List of weekly candles content: application/json: schema: type: array items: allOf: - $ref: '#/components/schemas/CandleResponse' - type: object properties: first_day_of_period: type: string format: date description: First day of the week period (YYYY-MM-DD) '429': description: Rate limit exceeded /candles/months: get: operationId: listCandlesMonths summary: List month candles description: Returns OHLCV monthly candles for the specified market. No authentication required. tags: - Quotation parameters: - name: market in: query required: true schema: type: string description: Market identifier (e.g., KRW-BTC) - name: to in: query required: false schema: type: string format: date-time description: End time for candles (ISO 8601 format) - name: count in: query required: false schema: type: integer minimum: 1 maximum: 200 description: Number of candles to return (max 200) responses: '200': description: List of monthly candles content: application/json: schema: type: array items: allOf: - $ref: '#/components/schemas/CandleResponse' - type: object properties: first_day_of_period: type: string format: date description: First day of the month period (YYYY-MM-DD) '429': description: Rate limit exceeded /candles/years: get: operationId: listCandlesYears summary: List year candles description: Returns OHLCV yearly candles for the specified market. No authentication required. tags: - Quotation parameters: - name: market in: query required: true schema: type: string description: Market identifier (e.g., KRW-BTC) - name: to in: query required: false schema: type: string format: date-time description: End time for candles (ISO 8601 format) - name: count in: query required: false schema: type: integer minimum: 1 maximum: 200 description: Number of candles to return (max 200) responses: '200': description: List of yearly candles content: application/json: schema: type: array items: allOf: - $ref: '#/components/schemas/CandleResponse' - type: object properties: first_day_of_period: type: string format: date description: First day of the year period (YYYY-MM-DD) '429': description: Rate limit exceeded /trades/ticks: get: operationId: listPairTrades summary: List pair trades description: Returns recent trade ticks for the specified trading pair. No authentication required. tags: - Quotation parameters: - name: market in: query required: true schema: type: string description: Market identifier (e.g., KRW-BTC) - name: to in: query required: false schema: type: string description: End trade time (HHmmss or HHmmssSSS format) - name: count in: query required: false schema: type: integer minimum: 1 maximum: 500 description: Number of trade ticks to return - name: cursor in: query required: false schema: type: string description: Pagination cursor (sequential_id from prior response) - name: days_ago in: query required: false schema: type: integer minimum: 0 maximum: 7 description: Number of days ago to fetch trades (0–7) responses: '200': description: List of trade ticks content: application/json: schema: type: array items: type: object properties: market: type: string trade_date_utc: type: string description: Trade date (UTC) trade_time_utc: type: string description: Trade time (UTC) timestamp: type: integer format: int64 trade_price: type: string description: Trade price (decimal string) trade_volume: type: string description: Trade volume (decimal string) prev_closing_price: type: string description: Previous closing price (decimal string) change_price: type: string description: Price change (decimal string) ask_bid: type: string enum: - ASK - BID description: Whether the trade was an ask or bid sequential_id: type: integer format: int64 description: Sequential trade identifier '429': description: Rate limit exceeded /ticker: get: operationId: listTickers summary: List pair tickers description: Returns current ticker information for specified trading pairs. No authentication required. tags: - Quotation parameters: - name: markets in: query required: true schema: type: string description: Comma-separated list of market identifiers (e.g., KRW-BTC,KRW-ETH) responses: '200': description: List of tickers content: application/json: schema: type: array items: $ref: '#/components/schemas/TickerResponse' '429': description: Rate limit exceeded /ticker/all: get: operationId: listQuoteTickers summary: List quote-currency tickers description: Returns ticker information for all trading pairs in the specified quote currencies. No authentication required. tags: - Quotation parameters: - name: quote_currencies in: query required: true schema: type: string description: Comma-separated quote currencies (e.g., KRW,BTC,USDT) responses: '200': description: List of tickers for all pairs in given quote currencies content: application/json: schema: type: array items: $ref: '#/components/schemas/TickerResponse' '429': description: Rate limit exceeded /orderbook: get: operationId: listOrderbooks summary: List orderbooks description: Returns orderbook snapshots for specified trading pairs. No authentication required. tags: - Quotation parameters: - name: markets in: query required: true schema: type: string description: Comma-separated list of market identifiers - name: level in: query required: false schema: type: number description: Aggregation level for orderbook - name: count in: query required: false schema: type: integer description: Number of orderbook levels to return responses: '200': description: List of orderbook snapshots content: application/json: schema: type: array items: type: object properties: market: type: string description: Market identifier timestamp: type: integer format: int64 description: Orderbook timestamp (milliseconds) total_ask_size: type: string description: Total ask size (decimal string) total_bid_size: type: string description: Total bid size (decimal string) orderbook_units: type: array items: type: object properties: ask_price: type: string bid_price: type: string ask_size: type: string bid_size: type: string level: type: number description: Aggregation level applied '429': description: Rate limit exceeded /orderbook/instruments: get: operationId: listOrderbookInstruments summary: List orderbook instruments description: Returns orderbook instrument metadata including tick size and supported aggregation levels. No authentication required. tags: - Quotation parameters: - name: markets in: query required: true schema: type: string description: Comma-separated list of market identifiers responses: '200': description: List of orderbook instruments content: application/json: schema: type: array items: type: object properties: market: type: string quote_currency: type: string tick_size: type: string description: Minimum price increment (decimal string) supported_levels: type: array items: type: number '429': description: Rate limit exceeded /orderbook/supported_levels: get: operationId: listOrderbookLevels summary: List supported orderbook levels description: Returns the supported aggregation levels for orderbooks of specified markets. No authentication required. tags: - Quotation parameters: - name: markets in: query required: true schema: type: string description: Comma-separated list of market identifiers responses: '200': description: Supported orderbook levels per market content: application/json: schema: type: array items: type: object properties: market: type: string supported_levels: type: array items: type: number '429': description: Rate limit exceeded components: schemas: TickerResponse: type: object properties: market: type: string description: Market identifier (e.g., KRW-BTC) trade_date: type: string description: Trade date (UTC, YYYYMMDD) trade_time: type: string description: Trade time (UTC, HHmmss) trade_date_kst: type: string description: Trade date (KST, YYYYMMDD) trade_time_kst: type: string description: Trade time (KST, HHmmss) trade_timestamp: type: integer format: int64 description: Trade timestamp (milliseconds) opening_price: type: string description: Opening price (decimal string) high_price: type: string description: High price (decimal string) low_price: type: string description: Low price (decimal string) trade_price: type: string description: Latest trade price (decimal string) prev_closing_price: type: string description: Previous closing price (decimal string) change: type: string enum: - RISE - EVEN - FALL description: Price change direction change_price: type: string description: Absolute price change (decimal string) change_rate: type: string description: Relative price change rate (decimal string) signed_change_price: type: string description: Signed price change (decimal string) signed_change_rate: type: string description: Signed change rate (decimal string) trade_volume: type: string description: Trade volume (decimal string) acc_trade_price: type: string description: Accumulated trade price today (decimal string) acc_trade_price_24h: type: string description: Accumulated trade price (24h, decimal string) acc_trade_volume: type: string description: Accumulated trade volume today (decimal string) acc_trade_volume_24h: type: string description: Accumulated trade volume (24h, decimal string) highest_52_week_price: type: string description: 52-week high price (decimal string) highest_52_week_date: type: string description: Date of 52-week high (YYYY-MM-DD) lowest_52_week_price: type: string description: 52-week low price (decimal string) lowest_52_week_date: type: string description: Date of 52-week low (YYYY-MM-DD) timestamp: type: integer format: int64 description: Ticker timestamp (milliseconds) CandleResponse: type: object properties: market: type: string description: Market identifier candle_date_time_utc: type: string format: date-time description: Candle start time (UTC) candle_date_time_kst: type: string format: date-time description: Candle start time (KST) opening_price: type: string description: Opening price (decimal string) high_price: type: string description: High price (decimal string) low_price: type: string description: Low price (decimal string) trade_price: type: string description: Closing price (decimal string) timestamp: type: integer format: int64 description: Candle timestamp (milliseconds) candle_acc_trade_price: type: string description: Accumulated trade price in candle period (decimal string) candle_acc_trade_volume: type: string description: Accumulated trade volume in candle period (decimal string) securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: JWT HS512 token generated from Access Key and Secret Key. Include query_hash and query_hash_alg=SHA512 in the payload when query parameters or JSON body exist. externalDocs: description: Upbit Developer Center url: https://global-docs.upbit.com/reference