{"api_version":"v1","documentation_url":"/api","generated_at_ms":1791913044724,"generated_at_utc":"2026-10-13T17:37:24Z","key_required":false,"language":"en","matched_count":1,"meta":{"dislocation_types":["price_gap","funding_gap","lst_move","wrapper_gap","pool_gap","fxstable_gap","oracle_gap","depeg","depeg_recovered"],"freshness":"this list is re-read within 5 seconds of an event being written. How late the event itself is depends on what watches it: pools every 30 s, cross-exchange price and funding gaps 2-3 minutes behind the market, oracle gaps every 60 s, stablecoin pegs every 30 minutes, exchange notices every 15 minutes.","kinds":["announcement","peg_move","dislocation","options_daily"],"order":"newest first by at_ms. ?since_ms= keeps rows with at_ms greater than it; ?limit= caps the rows (default 100, at most 500); ?kind= takes a kind or a dislocation type, comma-separated; ?id= returns that one event (the page of each event links to it).","source":"the same events the /news page lists, read by the same code.","units":{"at_ms":"epoch milliseconds UTC when the site recorded the event. For announcements it is the exchange's own publication time, so an announcement found later can carry an EARLIER at_ms than events you already have — de-duplicate by id rather than relying on at_ms order.","baseline_at_ms":"epoch milliseconds UTC of the collection run used as the baseline (about `hours` before at_ms).","circulating_coins":"coins in circulation as reported by DefiLlama at the time.","coingecko_deviation_pct":"percent away from the peg by CoinGecko's price, same formula as to_deviation_pct (for depeg: measured from the same reference as gap_pct).","coingecko_price_at_ms":"epoch milliseconds UTC that CoinGecko gives as the time of its price (DefiLlama's list gives no time for its prices, so the two are fetched together but are not guaranteed to be the same instant).","coingecko_price_in_peg":"CoinGecko's price for the same coin, fetched in the same collection run and converted to the peg currency. A cross-check: from_/to_deviation_pct use DefiLlama's price (see defillama_price_source). Absent before 2026-10-12. For depeg (source = exchange_books): CoinGecko's price read within the last 10 minutes, a cross-check of the books.","confirm_readings":"depeg: readings in a row past the line needed for an alert (3 from exchange books and DEX pools read every 15 seconds; 2 separate CoinGecko updates).","from_deviation_pct":"percent the stablecoin sat away from its peg before the move: (price x FX rate - 1) x 100.","gap_pct":"percent, signed: (this price / reference price - 1) x 100. Positive means above the reference.","high_rate_pct_per_year":"percent per year, simple.","hours":"hours the move was measured over.","low_rate_pct_per_year":"percent per year, simple.","move_pct":"percent, signed: change of the token's exchange ratio over `hours`.","peak_at_ms":"depeg: epoch milliseconds UTC of that peak reading.","peak_gap_pct":"depeg: largest gap to the reference in percent — over the last peak_window_min minutes for an alert, over the whole time off the peg for a return.","peak_price_in_peg":"depeg: the price at that peak, in the peg currency.","peak_window_min":"depeg: minutes the alert's peak is taken over.","pool_fee_pct":"the pool's own swap fee in percent (0.05 = 5 basis points). Absent when the pool's fee is not known.","pool_price":"the pool's own price for one unit of the base asset, read from pool state (not the last trade). In the quote currency; FX uses market convention (USDJPY = yen per dollar).","price_at_ms":"depeg: epoch milliseconds UTC of that price — when the books and pools were read (source = exchange_books / dex_pools / exchange_books_and_dex_pools), or the time CoinGecko gives for its price (source = coingecko).","price_in_peg":"depeg: the price of one coin in the peg currency — USD / EUR / JPY for stablecoins, BTC / ETH / SOL for tokens tied to those. With source = exchange_books: from exchange order books (best bid/ask midpoint, books wider than 0.1% left out; median of 3 or more books, the one nearer the reference when there are 2). With source = dex_pools (or exchange_books_and_dex_pools): from on-chain DEX pool state (TVL of $1M or more), each pool counted like one book under the same rule — see venue_prices. With source = coingecko: CoinGecko's weighted price (vs_currency = that currency, no conversion applied by us).","recovery_threshold_pct":"depeg: the return line in percent (|gap| within it for 10 minutes).","reference_price":"the price it was compared with, same convention.","reference_price_in_peg":"depeg: the price gap_pct is measured from, in the peg currency. 1 when `reference` is \"peg\"; the token's own median of hourly prices over the last 7 days when `reference` is \"median_7d\" (staking tokens whose value per coin grows, e.g. wstETH, jitoSOL).","since_ms":"depeg: epoch milliseconds UTC of the first reading past the line (alert), or of the alert (return).","spread_pct_per_year":"percent per year: the high funding rate minus the low one, simple annualisation (no compounding).","threshold_pct":"depeg: the alert line in percent (|gap| at or above it for confirm_readings readings in a row).","to_deviation_pct":"percent away from its peg after the move, same formula.","venue_price":"the venue's own oracle price, same convention as pool_price.","venue_prices":"depeg (source = exchange_books / dex_pools / exchange_books_and_dex_pools): the books and pools used. kind = book: mid = best bid/ask midpoint in the book's quote currency; spread_pct = (ask - bid) / mid x 100; price_in_peg = mid in the peg currency (USDT-quoted books x the same reading's USDT/USD, the median of the USD books). kind = pool: price_in_quote = the price read from the pool's current state (sqrtPrice, active bin or Curve get_dy — not its last trade) in the pool's quote token; price_in_peg = that x the same reading's price of the quote token (WETH and SOL count as 1); tvl_usd = the pool's TVL in US dollars when it was chosen (pools under $1M are not used).","venues_compared":"how many independent sources formed the reference (for wrapper_gap: how many wrapped tokens; for depeg with source = exchange_books / dex_pools / exchange_books_and_dex_pools: how many exchange books and DEX pools formed the price).","volume_24h_in_peg":"depeg: CoinGecko's 24h trading volume, in the peg currency."}},"plan":"free","refreshed_at_ms":1791913044386,"row_count":1,"rows":[{"at_ms":1791900874203,"at_utc":"2026-10-13T14:14:34Z","data":{"gap_pct":-0.3930322368601247,"reference_price":1460.44,"symbol":"SNDK","venue":"ostium","venue_price":1454.7,"venues_compared":3},"detail_url":"/news/oracle-gap-sndk-ostium-20261013-2314","id":"oracle-gap-sndk-ostium-20261013-2314","kind":"dislocation","subject":"SNDK","summary":"SNDK Oracle price gap: Ostium vs other venues' oracles -0.393% (3 sources)","type":"oracle_gap"}],"skill_url":"/skills/carryroom/SKILL.md","stream_url":"/api/v1/events/stream","surface":"events","truncated":false,"unreadable_kind_tokens":[],"window_days":14}