Live-API validation¶
Confirms that the client code isn't just tested against httpx.MockTransport
— it actually reaches real upstreams.
Polymarket Gamma (public, no auth)¶
Live snapshot taken 2026-04-19:
| market_id | volume USD | price YES | question (truncated) |
|---|---|---|---|
| 540816… | 1,559,024 | 0.535 | Russia-Ukraine Ceasefire before GTA VI? |
| 540819… | 11,067,916 | 0.485 | Will Jesus Christ return before GTA VI? |
| 540820… | 592,771 | 0.515 | Trump out as President before GTA VI? |
| 540817… | 698,439 | 0.610 | New Rihanna Album before GTA VI? |
| 540818… | 726,913 | 0.545 | New Playboi Carti Album before GTA VI? |
Every field parses cleanly; volume + price roundtrip through our Pydantic
models; the GammaClient retry survives 500s (verified in unit test).
UMA OOv2 (public Goldsky)¶
10 most recent polygon OOv2 requests in the last 14 days, bonds in USDC:
YES_OR_NO_QUERY-17765327 state=Requested bond=$ 500.00
YES_OR_NO_QUERY-17764205 state=Requested bond=$ 250.00
YES_OR_NO_QUERY-17764205 state=Requested bond=$ 250.00
YES_OR_NO_QUERY-17764205 state=Requested bond=$ 250.00
YES_OR_NO_QUERY-17764205 state=Requested bond=$ 250.00
UMA Managed OOv2 (Polymarket's post-UMIP-189 oracle)¶
3 most recent managed oracle requests (proposer whitelisted):
YES_OR_NO_QUERY-17765665 state=Requested bond=$ 500.00
YES_OR_NO_QUERY-17765664 state=Requested bond=$ 500.00
YES_OR_NO_QUERY-17765664 state=Requested bond=$ 500.00
$500 floor matches UMIP-189's store.computeFinalFee for standard Polymarket
proposals.
Gotcha: Goldsky URL rotation¶
The blueprint warned "Goldsky endpoint IDs rotate" — and they did. Today's
project id is project_clus2fndawbcc01w31192938i (new), not the blueprint's
clcxirpj1c5vx2aton4ou0iin. Both config.py and .env.example updated;
the UMA subgraphs README is the
canonical source for the current URL.
Gotcha: schema changed too¶
The blueprint's query referenced an entity called Request with a flat
time field. The live subgraph calls it OptimisticPriceRequest and
tracks per-stage timestamps (requestTimestamp, proposalTimestamp,
disputeTimestamp, settlementTimestamp). The client now uses those and
flattens them into our OracleEvent shape one-per-stage.
Reproducing¶
# Polymarket — no credentials needed
pytest -m network apps/kfish-core/tests/test_live_apis.py::test_polymarket_gamma_live_returns_active_markets
# UMA OOv2 — no credentials needed
pytest -m network apps/kfish-core/tests/test_live_apis.py::test_uma_goldsky_oov2_live_returns_recent_requests
# Managed OOv2
pytest -m network apps/kfish-core/tests/test_live_apis.py::test_uma_goldsky_moov2_live_returns_polymarket_requests
All 4 tests green as of 2026-04-19. The fourth test
(test_request_to_events_flattens_lifecycle) exercises the
request-to-events flattening on live Goldsky output so a schema change
upstream is caught before the nightly pipeline hits it.