Skip to content

RMQ DATA FEED

Please use the classic RabbitMQ queue based on AMQPS and the following settings:

port: 5671
host: (ask support)
user: username (ask support for credentials)
password: password (ask support for credentials)
VHost: markets
TLS: true
dialing to: amqps://{username}:{password}@{kero-rabbitmq-host}:5671/markets
queue: {username}

The RabbitMQ server has a default heartbeat of 30s, and a timeout of 7200s. These values can be overridden in your config.

There is a heartbeat message with the key *.*.*.alive that is pushed directly from the server every 15s for you to ensure that the server is still running.

Messages will have a routing key in the format of:

<sport>.<stats_source>.<game_id>.<message_type>

  • <sport> is an enum of values: SOCCER, BASKETBALL, HOCKEY, BASEBALL, FOOTBALL

  • <stats_source> is an enum of values: betradar, sportradar, nba_cdn, genius, statsapi_nhl, opta

  • <game_id> is a source ID of the game

  • <message_type> is an enum of values: EVENT, MARKET

The full feed example you can find here.
FieldTypeRequiredDescription
typestringType of message
Enum: "MARKET"
sub_typestringOptional message subtype
Enum: "TEMPLATE"
actionstringAction to do with the object
Enum: "PUBLISH", "UPDATE_MARKET_ODDS", "SUSPEND", "ACTIVATE",
"UNPUBLISH", "RESOLVE", "REVERSE", "CANCEL"
timestampintegerUNIX timestamp in milliseconds
objectMarketConditional on type and sub_type, see below

Market Object

FieldTypeRequiredDescription
idstringUnique Kero UUID of this market object
event_idstringKero UUID of the event
eventEventEmbedded minimal event object
market_statestringMarket state
Enum: "PUBLISHED","SUSPENDED","TIMED_OUT","RESOLVED","DRAFT"
game_idstringExternal source game ID
key_marketstringUnique key for the market type
is_corebooleanWhether this is a core market
title_variablestring (JSON)Dynamic values for title rendering (can be string or map)
context_note_variablestring (JSON)Dynamic values for context rendering (can be string or map)
constraint_variablestring (JSON)Dynamic values for constraint rendering (can be string or map)
context_note_variable_typestringType of the context_note_variable
(if context_note_variable field has a value of a map,
then context_note_variable_type is a key in this map)
title_variable_typestringFormat type for title_variable
(if title_variable field has a value of a map,
then title_variable_type is a key in this map)
constraint_variable_typestringFormat type for constraint_variable
(if constraint_variable field has a value of a map,
then constraint_variable_type is a key in this map)
answers_variablesmap[string]string (JSON)Dynamic values for answers rendering
key is: answer_a,answer_b,answer_c,etc…
value is JSON string
answers_oddsmap[string]AnswersOddsMapMap of odds per answer
key is: answer_a,answer_b,answer_c,etc…
value is an object of answers odds
market_contextMarketContextDetailsStatistics metadata related to the current action (can be different depending on SPORT)
match_stateMatchStateDetailsStatistics metadata related to the current game moment (can be different depending on SPORT)
resolve_conditionstringCorrect answer for current market (answer_a,answer_b,answer_c, etc.). Shows only on RESOLVE or REVERSE
variables_entitiesmap[string]EntityDynamic metadata related to provided variables
key is a name of a variable from any _variable field
value is an entity object related to it
answers_restrictedmap[string]booleanStates which market answers keys are restricted to bet
(when value is TRUE: means the answer key is suspended).
Such answer key will have a probability set but with a flag (See AnswersOddsMap)
status_reasonstringReason for the current market state. (See Status reasons)

Event Object

FieldTypeRequiredDescription
alternate_game_idsobjectMap of provider-specific game IDs
(key = provider name
(Enum: betradar, sportradar, nba_cdn, genius, statsapi_nhl, opta),
value = provider id)

Answers Odds Map Object

FieldTypeRequiredDescription
answer_aAnswerOddsOdds and prob for answer A
answer_bAnswerOddsOdds and prob for answer B
answer_cAnswerOddsOdds and prob for answer C
Odds and prob for answer …
answer_zAnswerOddsOdds and prob for answer Z

Answers Odds Object

FieldTypeRequiredDescription
is_restrictedbooleanWhether this answer is restricted to bet (TRUE means restricted)
probfloatProbability for the answer
oddsOddsKero Odds in all formats

Odds Object

FieldTypeRequiredDescription
americanstringAmerican odds representation
europeanstringEuropean (Decimal) odds representation
fractionalstringFractional odds representation

Market Context Details Object

The marketContextDetails object contains sport-specific contextual information that provides additional details about the current game state and market conditions. This object varies by sport and includes relevant fields for each specific sport type.

FieldTypeDescription
display_ddystringDisplay information for down, distance, and yards (DDY format)
Example: “2nd & 8”
distancestringYards needed for a first down
Example: “8”
downstringCurrent down number (1-4)
Example: “2”
match_drive_numberstringSequential number of drives in the entire game
Example: “5”
play_numberstringSequential number of plays in the current drive
Example: “3”
team_drive_numberstringSequential number of drives for the specific team
Example: “3”
teamstringTeam associated with the market
Enum: “home”, “away”
player1_full_namestringFull name of the player involved in the market
Note: Field name varies based on market type (player1_full_name, player2_full_name, etc.)

Match State Details Object

The match_state object contains sport-specific information about the current game state and statistics. This object varies by sport and includes relevant fields for each specific sport type.

FieldTypeDescription
current_possessionstringTeam currently in possession of the ball
Enum: “home”, “away”

Entity Object

FieldTypeRequiredDescription
typestringType of the entity. Enum: PLAYER, TEAM
idintegerKero ID of the entity (player or team)
full_namestringEntity full name
short_namestringShortened name of the entity
common_namestringCommonly used name of the entity
jersey_numberstringPlayer’s jersey number

JSON examples:

{
"type": "MARKET",
"sub_type": "TEMPLATE",
"object": {
"id": "f668332f-cc84-46a1-9a91-fdd8e5a46bb6",
"event_id": "7d11a558-5fa1-4c8b-91b6-9b1fce11a36d",
"event": {
"alternate_game_ids": {
"betradar": "55311849"
}
},
"market_state": "PUBLISHED",
"answers_odds": {
"answer_a": {
"is_restricted": false,
"prob": 0.41,
"odds": {
"american": "+122",
"european": "2.22",
"fractional": "61/50"
}
},
"answer_b": {
"is_restricted": true,
"prob": 0.59,
"odds": {
"american": "-100",
"european": "1.87",
"fractional": "61/50"
}
}
},
"game_id": "55311849",
"key_market": "BASEBALL_A_12_7",
"is_core": true,
"market_context": {
"batter_name": "",
"batter_order_position": "0",
"batter_plate_appearance_number": "0",
"inning": "1",
"inning_side": "bottom",
"line": "3.5",
"pitch_number": "1",
"pitcher_name": "Matt Krook",
"plate_appearance_position": "",
"team": "AWAY"
},
"match_state": {
"away_score": "10",
"balls": "0",
"home_score": "5",
"inning": "9",
"inning_side": "top",
"outs": "1",
"strikes": "0"
},
"title_variable": "{\"batter\": \"Matt Lugo\", \"target_value\": \"5th\"}",
"context_note_variable": "{\"player_name\": \"M. Krook\", \"target_value\": \"4.2\"}",
"constraint_variable": "{\"batter\": \"M. Lugo\", \"target_value1\": \"0\", \"target_value2\": \"4\"}",
"context_note_variable_type": "",
"title_variable_type": "",
"constraint_variable_type": "0",
"answers_variables": {
"answer_a": "{\"line\":\"3.5\"}",
"answer_b": "{\"line\":\"3.5\"}"
},
"variables_entities": {
"batter": {
"type": "PLAYER",
"id": 1,
"full_name": "Matt Lugo"
},
"player_name": {
"type": "PLAYER",
"id": 2,
"short_name": "M. Krook"
}
},
"answers_restricted": {
"answer_a": false,
"answer_b": true
}
},
"action": "PUBLISH",
"timestamp": 1747890599809
}