# Upbit API
> Live spot market data from Upbit, South Korea's largest crypto exchange and one of the highest-volume venues in the world — served straight from its public API, no key, nothing cached. Get a market's price, 24h change, high/low, 24h volume and value and 52-week range (in Korean won, Bitcoin or Tether); rank every market for a quote currency by 24h trade value; list Upbit's trading pairs with their Korean and English names; and pull daily, weekly or monthly OHLC candles. Upbit's KRW prices are the reference for the "kimchi premium" — a distinct Korean-market venue, separate from other exchange feeds.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/upbit-api/..."
```

## Pricing
- **Free** (Free) — 3,600 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 82,000 calls/Mo, 6 req/s
- **Pro** ($26/Mo) — 420,000 calls/Mo, 15 req/s
- **Business** ($61/Mo) — 2,550,000 calls/Mo, 40 req/s

## Endpoints

### Upbit

#### `GET /v1/candles` — Daily/weekly/monthly OHLC candles

**Parameters:**
- `market` (query, required, string) — Market code QUOTE-BASE Example: `KRW-BTC`
- `unit` (query, optional, string) — days, weeks or months (default days) Example: `days`
- `count` (query, optional, string) — Number of candles 1-200 (default 30) Example: `30`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/upbit-api/v1/candles?market=KRW-BTC&unit=days&count=30"
```

**Response:**
```json
{
    "data": {
        "unit": "days",
        "count": 30,
        "market": "KRW-BTC",
        "source": "Upbit",
        "candles": [
            {
                "low": 91500000,
                "high": 94470000,
                "open": 92555000,
                "close": 92476000,
                "value": 110456180603.31,
                "volume": 1193.080022,
                "time_kst": "2026-06-10T09:00:00",
                "time_utc": "2026-06-10T00:00:00"
            },
            {
                "low": 91700000,
                "high": 94980000,
                "open": 94735000,
                "close": 92555000,
                "value": 124485287109.73,
                "volume": 1333.84496,
                "time_kst": "2026-06-09T09:00:00",
                "time_utc": "2026-06-09T00:00:00"
            },
            {
                "low": 94000000,
                "high": 96400000,
                "open": 95502000,
                "close": 94730000,
                "value": 129712074079.51,
                "volume": 1362.867831,
                "time_kst": "2026-06-08T09:00:00",
                "time_utc": "2026-06-08T00:00:00"
            },
            {
                "low": 92353000,
                "high": 97000000,
                "open": 92560000,
                "close": 95430000,
                "value": 178738402295.37,
                "volume": 1892.840645,
                "time_kst": "2026-06-07T09:00:00",
                "time_utc": "2026-06-07T
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/markets` — List trading pairs with Korean/English names

**Parameters:**
- `quote` (query, optional, string) — Filter by quote: KRW, BTC, USDT (omit for all) Example: `KRW`
- `limit` (query, optional, string) — Max results (default 200) Example: `200`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/upbit-api/v1/markets?quote=KRW&limit=200"
```

**Response:**
```json
{
    "data": {
        "count": 200,
        "quote": "KRW",
        "total": 263,
        "source": "Upbit",
        "markets": [
            {
                "base": "WAXP",
                "quote": "KRW",
                "market": "KRW-WAXP",
                "korean_name": "왁스",
                "english_name": "WAX"
            },
            {
                "base": "CARV",
                "quote": "KRW",
                "market": "KRW-CARV",
                "korean_name": "카브",
                "english_name": "CARV"
            },
            {
                "base": "LSK",
                "quote": "KRW",
                "market": "KRW-LSK",
                "korean_name": "리스크",
                "english_name": "Lisk"
            },
            {
                "base": "0G",
                "quote": "KRW",
                "market": "KRW-0G",
                "korean_name": "제로지",
                "english_name": "0G"
            },
            {
                "base": "WIF",
                "quote": "KRW",
                "market": "KRW-WIF",
                "korean_name": "도그위프햇",
                "english_name": "dogwifhat"
            },
            {
                "base": "TRAC",
                "quote": "KRW",
                "market": "KRW-TRAC",
                "korean_name": "오리진트레일",
                "english_name": "OriginTrail"
            },
            {
                "base": "BORA",
                "quote": "KR
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/meta` — Service metadata and endpoint list

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/upbit-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "source": "Upbit API (api.upbit.com, live)",
        "service": "upbit-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/ticker": "Ticker for one or more markets (market=KRW-BTC or symbol=BTC&quote=KRW; comma-separated markets allowed).",
            "GET /v1/candles": "Daily/weekly/monthly OHLC (market=KRW-BTC, unit=days, count=30).",
            "GET /v1/markets": "List trading pairs with Korean/English names (quote=KRW optional, limit=200).",
            "GET /v1/tickers": "All markets for a quote ranked by 24h trade value (quote=KRW, limit=30)."
        },
        "description": "Live spot market data from Upbit, South Korea's largest crypto exchange and one of the highest-volume venues in the world. The ticker endpoint returns a market's price, 24h change, high/low, 24h volume and value and 52-week range (in KRW, BTC or USDT); the tickers endpoint ranks every market for a quote currency by 24h trade value; the markets endpoint lists trading pairs with Korean and English names; the candles endpoint returns daily/weekly/monthly OHLC. Live, no key, nothing stored. Upbit's KRW prices are the reference for the kimchi premium — a distinct Korean-market venue, separate from other exchange feeds.",
        "market_count": 748,
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-10T22:56:31.309Z",
        "request_id": "a0a8d3bd-4a3d-4ed7-9388-50195fbdb83a"
    },
    "status": 
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/ticker` — Ticker for one or more markets

**Parameters:**
- `market` (query, required, string) — Market code QUOTE-BASE (comma-separated allowed) Example: `KRW-BTC`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/upbit-api/v1/ticker?market=KRW-BTC"
```

**Response:**
```json
{
    "data": {
        "low": 91500000,
        "base": "BTC",
        "high": 94470000,
        "open": 92555000,
        "price": 92476000,
        "quote": "KRW",
        "market": "KRW-BTC",
        "source": "Upbit",
        "low_52w": 89000000,
        "high_52w": 179869000,
        "timestamp": 1781132188258,
        "prev_close": 92555000,
        "change_price": -79000,
        "change_24h_pct": -0.0854,
        "trade_value_24h": 114777091474.75,
        "trade_volume_24h": 1239.773745
    },
    "meta": {
        "timestamp": "2026-06-10T22:56:31.680Z",
        "request_id": "66faa801-3160-43c8-9d23-1a1c671942a4"
    },
    "status": "ok",
    "message": "Ticker retrieved successfully",
    "success": true
}
```

#### `GET /v1/tickers` — All markets for a quote ranked by 24h trade value

**Parameters:**
- `quote` (query, required, string) — Quote currency: KRW, BTC or USDT Example: `KRW`
- `limit` (query, optional, string) — Max results 1-200 (default 30) Example: `30`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/upbit-api/v1/tickers?quote=KRW&limit=30"
```

**Response:**
```json
{
    "data": {
        "count": 30,
        "quote": "KRW",
        "source": "Upbit",
        "tickers": [
            {
                "low": 1642,
                "base": "XRP",
                "high": 1710,
                "open": 1707,
                "price": 1653,
                "quote": "KRW",
                "market": "KRW-XRP",
                "low_52w": 1603,
                "high_52w": 4972,
                "timestamp": 1781132190135,
                "prev_close": 1706,
                "change_price": -53,
                "change_24h_pct": -3.1067,
                "trade_value_24h": 152044379854.16,
                "trade_volume_24h": 90675763.840594
            },
            {
                "low": 647,
                "base": "WLD",
                "high": 789,
                "open": 762,
                "price": 661,
                "quote": "KRW",
                "market": "KRW-WLD",
                "low_52w": 340,
                "high_52w": 2906,
                "timestamp": 1781132190131,
                "prev_close": 761,
                "change_price": -100,
                "change_24h_pct": -13.1406,
                "trade_value_24h": 128841694015.5,
                "trade_volume_24h": 176161282.072022
            },
            {
                "low": 91500000,
                "base": "BTC",
                "high": 94470000,
                "open": 92555000,
                "price": 92476000,
                "quote": "KRW",
                "marke
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/upbit-api
OpenAPI spec: https://www.oanor.com/api/upbit-api/openapi.json
