{"as_of":"2026-10-08T15:49:52.045568+00:00","version":"3.2.0","uptime":"see /v1/stats for cumulative","source_window_minutes":15,"rows_field":"rows_15m","deprecated_fields":{"rows_1h":"rows_15m"},"live_odds_sources_1h":[],"live_props_sources_1h":[{"source":"underdog","rows_15m":44021,"window_minutes":15,"sports_covered":16,"latest_age_seconds":9,"source_latest_age_seconds":9,"health_scope":"source","healthy":true,"sla_state":"ok","sla_thresholds_s":{"tight":60.0,"slack":300.0,"stale":1800.0},"row_healthy":true,"row_sla_state":"ok","rows_1h":44021,"stale_fixture_sports":[]}],"live_sources_1h":[{"source":"underdog","rows_15m":44021,"window_minutes":15,"sports_covered":16,"latest_age_seconds":9,"source_latest_age_seconds":9,"health_scope":"source","healthy":true,"sla_state":"ok","sla_thresholds_s":{"tight":60.0,"slack":300.0,"stale":1800.0},"row_healthy":true,"row_sla_state":"ok","rows_1h":44021,"tables":["prop_snapshots"]}],"live_props_1h":{"rows_1h":0,"sources":0,"sports":0,"window_minutes":60},"sla_by_source":{"underdog":{"sla":"ok","age_s":9,"thresholds_s":{"tight":60.0,"slack":300.0,"stale":1800.0},"quality_score":90,"source_quality_sla":"ok","source_quality_age_s":8.0}},"sla_basis":{"judged_on":"rows written to odds_snapshots and prop_snapshots","window":"this payload's per-source window (status_window_minutes)","thresholds":"src/contracts/per_book_sla, the same table /books/{key} prints","differs_from":"/v1/meta/source-quality, which judges a 10 minute window and falls back to poller pulses and latest_state when the archive read is slow, so it can call a book ok while it has written no row. That verdict is republished here per source as source_quality_sla / source_quality_age_s; when the two disagree, `sla` is the one about rows a customer can actually query."},"sla_source_quality_error":null,"poller_health":{"bovada":{"count":0,"last_ts":0,"age_s":null,"backoff_skips":0,"paths_in_backoff":{},"half_markets_dropped":{}},"pinnacle":{"scope":"lane_pool","currently_paused":false,"paused_remaining_s":0.0,"consecutive_403s":0,"trip_after":10,"current_pause_s":0.0,"trips_lifetime":0,"last_trip_age_s":null,"lifetime_403s":0,"lifetime_200s":0,"block_rate":0.0,"lanes":{"mode":"pool","active":null,"switches":0,"direct_preferred":false,"currently_paused":false,"paused_remaining_s":0.0,"lanes":[{"label":"lane_1","proxy":"http://172.18.0.1:18888","direct":false,"healthy":true,"cooldown_remaining_s":0.0,"consecutive_failures":0,"requests":0,"failures":0,"trips":0,"client_open":false,"endpoint_cooldowns":0,"endpoint_cooldown_max_remaining_s":0.0},{"label":"lane_2","proxy":"http://172.18.0.1:18889","direct":false,"healthy":true,"cooldown_remaining_s":0.0,"consecutive_failures":0,"requests":0,"failures":0,"trips":0,"client_open":false,"endpoint_cooldowns":0,"endpoint_cooldown_max_remaining_s":0.0}]},"discovery":{"ttl_s":900,"sports":{}}},"board_events":{"since_ms":1791447705308,"phantom_events_merged":625,"decorated_names_folded":1052,"doubleheaders_split":0,"dateless_events_attached":319,"dateless_events_unanchored":214,"dateless_events_dropped":0,"dateless_events_served":214,"id_collisions_merged":0,"id_collisions_kept_apart":0,"last":{"sport_key":"americanfootball_ncaaf","source":"fanduel","raw_home":"Louisiana Tech","raw_away":"Louisiana","kept_home":"Louisiana Tech","kept_away":"UL Lafayette"},"last_id_collision":null},"event_orientation":{"since_ms":1791447705314,"pairs_corrected":1736,"index_builds":4311,"index_build_failures":0,"last":{"sport_key":"basketball_nba","source":"fanduel","surface":"events","row_home":"Chicago Bulls","row_away":"Toronto Raptors","served_home":"Toronto Raptors","served_away":"Chicago Bulls"},"matchups_indexed":3},"two_sided_markets":{"since_ms":1791447705399,"one_sided_dropped":368,"by_key":{"odds|fanduel|tennis_itf_m25_darwin_aus|h2h":88,"odds|fanduel|tennis_itf_w50_heraklion_gre|h2h":56,"odds|fanduel|tennis_itf_m25_santa_margherita_di_pula_ita|h2h":44,"odds|fanduel|tennis_itf_w15_cipolletti_arg|h2h":37,"odds|fanduel|tennis_itf_m15_monastir_tun|h2h":29,"odds|fanduel|tennis_itf_w15_sharm_elsheikh_egy|h2h":27,"odds|fanduel|tennis_itf_w35_santa_margherita_di_pula_ita|h2h":26,"odds|hardrock|americanfootball_ncaaf|h2h":14,"odds|fliff|basketball_nba|alternate_spreads":14,"odds|fanduel|tennis_itf_m25_luan_chn|h2h":11,"odds|fanduel|tennis_itf_w35_monastir_tun|h2h":9,"odds|fliff|americanfootball_nfl|alternate_spreads":7,"odds|fanduel|tennis_atp|h2h":3,"odds|rushbet|americanfootball_ncaaf|h2h":3},"by_key_truncated":false,"last":"odds|fanduel|tennis_itf_m25_darwin_aus|h2h"},"one_fixture_once":{"since_ms":1791447705308,"folded":16652,"undecided":4466,"anchor_side_folded":2802,"anchor_side_refused":14,"by_sport":{"soccer_epl":{"folded":7122,"undecided":0},"americanfootball_ncaaf":{"folded":1497,"undecided":3193},"tennis_atp":{"folded":122,"undecided":33},"esports_cs2":{"folded":33,"undecided":0},"soccer_italy_serie_a":{"folded":1544,"undecided":265},"soccer_france_ligue_one":{"folded":972,"undecided":2},"soccer_portugal_primeira_liga":{"folded":311,"undecided":0},"soccer_mexico_ligamx":{"folded":173,"undecided":0},"soccer_spain_la_liga":{"folded":1771,"undecided":272},"soccer_germany_bundesliga":{"folded":660,"undecided":512},"soccer_usa_mls":{"folded":365,"undecided":26},"esports_valorant":{"folded":30,"undecided":0},"soccer_belgium_first_div":{"folded":34,"undecided":4},"soccer_england_championship":{"folded":1184,"undecided":4},"soccer_brazil_serie_b":{"folded":46,"undecided":0},"soccer_finland_veikkausliiga":{"folded":1,"undecided":14},"soccer_greece_super_league":{"folded":0,"undecided":4},"soccer_argentina_liga_pro":{"folded":193,"undecided":9},"soccer":{"folded":4,"undecided":0},"soccer_uefa_champs_league":{"folded":134,"undecided":0},"soccer_uefa_europa_conference_league":{"folded":12,"undecided":12},"soccer_colombia_primera_a":{"folded":62,"undecided":0},"soccer_uefa_conference_league":{"folded":2,"undecided":2},"soccer_conmebol_copa_sudamericana":{"folded":4,"undecided":1},"mma_mixed_martial_arts":{"folded":0,"undecided":34},"tennis":{"folded":142,"undecided":20},"soccer_netherlands_eredivisie":{"folded":26,"undecided":12},"esports":{"folded":61,"undecided":0},"soccer_other":{"folded":0,"undecided":7},"soccer_uefa_europa_league":{"folded":73,"undecided":0},"soccer_austria_2_liga":{"folded":0,"undecided":6},"soccer_norway_eliteserien":{"folded":24,"undecided":6},"soccer_poland_ekstraklasa":{"folded":15,"undecided":3},"soccer_sweden_allsvenskan":{"folded":12,"undecided":0},"soccer_turkey_super_league":{"folded":0,"undecided":1},"soccer_netherlands_eerste_divisie":{"folded":2,"undecided":0},"table_tennis":{"folded":14,"undecided":24},"esports_dota_2":{"folded":3,"undecided":0},"soccer_serbia_super_liga":{"folded":2,"undecided":0},"soccer_brazil_campeonato":{"folded":2,"undecided":0}},"by_reason":{"unrelated":3880,"number":556,"both_sides_occupied":8,"qualifier":22},"by_fold_reason":{"both_sides":1000},"last_undecided":{"sport_key":"tennis","kept":["Pablo Llamas Ruiz v Petr Nesterov","Pablo Llamas Ruiz v Pyotr Nesterov"]},"last_fold":{"sport_key":"americanfootball_ncaaf","reason":"both_sides","merged":["Marshall Thundering Herd v Coastal Carolina Chanticleers","Marshall v Coastal Carolina"]},"last_anchor_fold":{"sport_key":"soccer_brazil_campeonato","folded":"Fluminense","onto":"Fluminense FC"},"last_anchor_refused":{"sport_key":"esports","spellings":["100 Thieves","100 thieves"],"also_on_another_fixture_today":["100 Thieves"]}},"player_attribution":{"since_ms":1791447705400,"unattributed_dropped":0,"by_key":{},"by_key_truncated":false,"last":null},"team_total_subject":{"since_ms":1791447705408,"anonymous_team_total_dropped":0,"by_key":{},"by_key_truncated":false,"last":null},"archive_dateless_rows":{"historical_odds":3196,"prop_closing_lines":4436},"stream_initial":{"since_ms":1791447707558,"scope":"this_process","attempts":1,"delivered":1,"partial":0,"closed_1013":0,"by_surface":{"ws_initial":{"attempts":1,"delivered":1,"partial":0,"closed_1013":0},"sse_initial":{"attempts":0,"delivered":0,"partial":0,"closed_1013":0}},"last_partial_reason":null,"last_failure_stage":null}},"data_freshness":{"all_sources_healthy":true,"stale_sources":[],"health_rule":"per-book SLA from /books/{key}, judged once per source on its freshest write across every table inside this payload's own window: inside the slack window is healthy, a breach is not. Suppressed and retired keys carry that word instead of a verdict and are excluded from all_sources_healthy. Judged on WRITES only, so it can differ from the same book's sla on /v1/meta/source-quality; see sla_basis.","suppressed_sources":["betclic","bwin","winamax"],"retired_sources":["maverick_games"],"sources_without_rows":["atg","bet365","betmgm","betonline","betrivers","betrivers_ca","betway","betway_mz","bovada","caesars","draftkings","fanatics","fanduel","fliff","hardrock","kalshi","kalshi-crypto","novig","paf","parx","pick6","pinnacle","pmu","pointsbet","polymarket","prizepicks","prophetx","rushbet","sleeper","stake","sugarhouse","superbet","tenbet","tipico","unibet","unibet_au","unibet_be","unibet_de","unibet_dk","unibet_ee","unibet_fi","unibet_fr","unibet_ie","unibet_it","unibet_nl","unibet_no","unibet_ro","unibet_se"],"sources_without_rows_error":null}}