API reference
GET /api/index
Live kimchi premium from
Upbit,
Bithumb and the ECB. Read-only, no key, cached 8 seconds on the server.
Response fields
| Field | Type | Meaning |
|---|---|---|
at | number | server time of the reading, ms since epoch |
spot | number or null | live index in pp: median of the two tickers ÷ latest ECB fix − 1 |
upbit.price | number | last Upbit KRW-USDT trade, won |
upbit.vol24hKrw | number | Upbit 24-hour traded value, won |
bithumb.price | number | last Bithumb USDT/KRW close, won |
bithumb.vol24hKrw | number | Bithumb 24-hour traded value, won |
ecb.rate | number | ECB USD/KRW reference rate |
ecb.date | string | date of that fix, YYYY-MM-DD |
rolling | object or null | trailing 24-hour average index from hourly closes |
last | object or null | the value the last expiry would settle at |
window | object | the next expiry, when its 24-hour window opens, samples in so far |
expiries.upcoming | number[] | the next expiries, ms since epoch |
errors | object | per-source error text, null when that source answered |
Example
{
"spot": 0.39,
"upbit": { "price": 1364, "vol24hKrw": 54200000000 },
"bithumb": { "price": 1364, "vol24hKrw": 55993094549 },
"ecb": { "rate": 1358.73, "date": "2026-11-06" }
}
When a source fails, its field is null, spot is null, and errors names the source. The endpoint never invents a value.
Units
| Unit | Meaning |
|---|---|
| pp | percentage point of premium |
| ibp | index basis point, 1 pp = 100 ibp; the program stores prices and S in ibp |
| unit | one micro-USDC per ibp of distance; a $10-per-point contract is 100,000 units |