Prediction Hunt/ API
WebSockets / Channels / Arbitrage

Arbitrage

WS·arb·Pro Tier+·KalshiPolymarketOpinionPredictItProphetXPredict.fun

Alerts when our arb engine finds or updates a cross-platform opportunity for a subscribed match group, and when an opportunity expires.

Overview

Use case: Drive arb terminals and notifications tied to match groups you care about.

Requirements

  • Pro or Enterprise API key.
  • Subscribe with group_ids only (match group ids).
  • market_ids are ignored for this channel.

Send

FieldTypeRequiredNotes
actionstringyesMust be "subscribe" for this section.
channelstringyesMust be "arb".
market_idsstring[]unsupportedIgnored / not used by this channel.
group_idsnumber[]optionalGroup scope; expands to markets linked to each group.
wildcardbehaviornot availableAt least one supported id list should be provided.

Receive

Data messages use the standard envelope: channel, type, ts, data. Types for this channel include: arb_update, arb_expired.

Data fields (inside data)

FieldTypeDescription
typestringarb_update or arb_expired. arb_expired carries only type + group_id.
group_idnumberMatch group id.
group_titlestringHuman-readable group title (arb_update only).
event_typestringEvent category (arb_update only).
event_datestringEvent date (arb_update only).
risk_free_return_after_feesnumberNet-of-fees ROI as a percent (e.g. 5.49 = 5.49%). Same value the REST /arb endpoint exposes as roi_pct.
lowest_yes / lowest_noobjectEach leg: { price (cents), source, url, market_id, ticker }.
yes_leg_depth / no_leg_depthnumberExecutable depth for each leg in USD (REST /arb: legs[].liquidity_usd).
max_wager_amountnumberMax executable wager in USD (REST /arb: max_wager_usd).
yes_fee_usd / no_fee_usdnumberPer-leg entry (taker) fee in USD for ONE contract at the quoted price; not linear in size (REST /arb: legs[].fee_usd).
updated_atnumberUnix timestamp of the update.