# Bithumb
## Venue and constructor
Spot only.
| `BithumbAdapter::new()` | Public REST and streams |
| `.with_credentials(access_key, secret_key)` | Account, order, and private-stream methods |
| `Market` | `Market::spot(Exchange::Bithumb, "BTC", "KRW")` |
| `MarketInfo::native_symbol` | `KRW-BTC` |
## REST
| `markets(MarketKind::Spot)` | `/v1/market/all?isDetails=true` | Listed Spot markets |
| `markets(MarketKind::Perpetual)` | — | `Ok(vec![])` |
| `trades(market, limit)` | `/v1/trades/ticks` | `limit: 1..=500`; `None -> 1`; newest-first |
| `order_book(market, depth)` | `/v1/orderbook` | `depth: 1..=30`; at most `depth` levels per side; `None -> 30`; remove `quantity == 0`, sort, then truncate locally |
| `ticker(market)` | `/v1/ticker` | One market snapshot |
`HTTP 2xx + {"error": ...} -> Error::Exchange`. Numeric `error.name` values
remain string codes.
## Candles
| Exposed intervals | `Min1`, `Min3`, `Min5`, `Min15`, `Min30`, `Hour1`, `Hour4`, `Day1`, `Week1`, `Month1` |
| Native interval not exposed | `10m` |
| Provider page cap | 200 |
| Provider calls per request | `<= 100` |
| Preflight candle estimate | `<= 20_000` |
| Provider `to` | `format_kst(ceil_second(to))`; exclusive |
| `Min1`, `Min3`, `Min5`, `Min15`, `Min30`, `Hour1` | UTC unit boundaries |
| `Hour4` | `03:00`, `07:00`, `11:00`, `15:00`, `19:00`, `23:00` |
| `Day1` | `15:00` |
| `Week1` | Sunday `15:00` |
| `Month1` | `15:00` on the final UTC day of the previous month |
## Streams
| `Feed::Trades` | Public execution events |
| `Feed::OrderBook` | Full snapshot; remove `quantity == 0`; up to 15 levels per side; raw provider `timestamp` unit: µs |
| `Feed::Ticker` | Snapshot and real-time updates |
| `Feed::Candles(_)` | `Error::Unsupported` before connection |
## Private and provider-specific APIs
Credentials enable balances, open orders, place/cancel order, and account
streams. `open_orders()` performs one `/v1/orders` call and returns at most 100
orders.
| Limit buy or sell | `Size::Base` |
| Market buy | `Size::Quote` |
| Market sell | `Size::Base` |
| `OrderRequest::time_in_force.is_some()` | `Error::InvalidRequest` |
| `OrderRequest::reduce_only == true` | `Error::Unsupported` |
| `cancel_order(...)` | Cancellation acknowledgement; `status = Cancelled`; fill fields unavailable |
Access the following provider-specific methods through `Client::adapter()`.
| `market_warnings()` | One raw `NONE` or `CAUTION` value per listed market |
| `market_alerts()` | Active rows only; one row per market and criterion; `ends_at` converted from KST to UTC |
| `market_warning == CAUTION` | `MarketStatus::Unknown` |
| `BithumbAlertStep::Caution` | Alert-system step `주의`; no `MarketStatus` change |
## Limits and official links
| Public REST | 150/s |
| Private REST | 140/s |
| Order REST | Additional throttling above 10/s |
| WebSocket connections | 10/s per IP; HTTP 429; repeated excess may block for 10 minutes |
`maxt` does not throttle requests. Derivatives, `MarketKind::Perpetual`, public
candle streams, and `time_in_force` are not supported.
- [Documentation index](https://apidocs.bithumb.com/llms.txt)
- [Request limits](https://apidocs.bithumb.com/docs/api-%EC%9A%94%EC%B2%AD-%EC%88%98-%EC%A0%9C%ED%95%9C-%EC%95%88%EB%82%B4.md)
- [Recent trades](https://apidocs.bithumb.com/reference/%EC%B2%B4%EA%B2%B0-%EB%82%B4%EC%97%AD-%EC%A1%B0%ED%9A%8C.md)
- [Candles](https://apidocs.bithumb.com/reference/%EB%B6%84minute-%EC%BA%94%EB%93%A4-%EC%A1%B0%ED%9A%8C.md)
- [WebSocket](https://apidocs.bithumb.com/reference/%EA%B8%B0%EB%B3%B8-%EC%A0%95%EB%B3%B4.md)
- [Orders](https://apidocs.bithumb.com/reference/%EC%A3%BC%EB%AC%B8-%EC%9A%94%EC%B2%AD.md)
[Common API](../common-api.md) · [Provider support](../providers.md)