Pushing casino ratings
A rating is a record of how a player played: where they sat, what they bet, what they bought in with, what the house won, and over what period. eConnect uses ratings for the Ratings grid, player appraisals, behaviour reports, and the dashboards and alerts built on them.
If your table-management or player-tracking system is the system of record for ratings, push them here and the whole module works on your data.
POST /api/v2/casino-connect/plugins/{pluginInstalledId}/ratings
The body is an array, so this is the batch endpoint as well as the single one.
The payload
[
{
"utcDataTimeStamp": "2026-10-02T21:14:05Z",
"utcRatingStarted": "2026-10-02T20:05:00Z",
"utcRatingEnded": "2026-10-02T21:12:30Z",
"locationId": "PIT-3",
"locationName": "High Limit",
"gamingDeviceId": "BJ-114",
"gamingDeviceName": "Blackjack 114",
"seatNumber": 3,
"patronId": "P-99120",
"patronName": "Example Patron",
"dealerId": "E-2210",
"dealerName": "A. Dealer",
"employeeId": "E-4471",
"employeeName": "A. Supervisor",
"transactionId": "RTG-2026-10-02-114-3",
"averageBet": 75.0,
"bet": 1500.0,
"cashBuyIn": 1000.0,
"chipBuyIn": 500.0,
"casinoWin": 220.0,
"theorWin": 61.5,
"playCount": 42,
"walkedWith": 1280.0,
"isVoided": false
}
]
Fields that carry the weight
| Field | Why it matters |
|---|---|
utcRatingStarted / utcRatingEnded | The period the rating covers. Everything time-based — shift reports, appraisals, the DVR links from a rating row — works from these |
gamingDeviceId | Must match the device as eConnect knows it, or the rating cannot be associated with a camera |
locationId | The pit or area; drives the grouping in reports |
patronId | Your identifier for the player. Keep it stable: it is how a player's history joins up |
averageBet, bet, casinoWin, theorWin | The figures appraisals and behaviour reports are built on |
transactionId | Your own id for the rating. Carry one — it is what makes a retry traceable |
isVoided | Send the void rather than deleting: the record stays, marked |
Every field is optional at the wire level, which is not permission to send a handful: a rating with no times and no figures will be stored and will tell nobody anything.
Matching devices and locations
gamingDeviceId and locationId have to line up with the entities eConnect holds, or the rating
arrives orphaned — visible in the grid, unreachable from a camera. Read the entities first:
GET /api/v2/casino-connect/plugins/{pluginInstalledId}/entities
Map your ids to eConnect's once, at start-up, and fail loudly if a device you are about to send is not in the list. That one check prevents the most common integration fault.
Sending it
curl -X POST \
"https://your-server/api/v2/casino-connect/plugins/$CASINO_ID/ratings" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d @ratings-batch.json
var ratings = new[]
{
new
{
utcDataTimeStamp = DateTime.UtcNow,
utcRatingStarted = start,
utcRatingEnded = end,
locationId = "PIT-3",
gamingDeviceId = "BJ-114",
seatNumber = 3,
patronId = "P-99120",
averageBet = 75.0,
bet = 1500.0,
casinoWin = 220.0,
playCount = 42,
transactionId = $"RTG-{end:yyyyMMdd-HHmmss}-114-3",
},
};
var response = await http.PostAsJsonAsync($"casino-connect/plugins/{casinoId}/ratings", ratings);
response.EnsureSuccessStatusCode();
// The response is the ids eConnect assigned, in the order you sent them.
var ids = await response.Content.ReadFromJsonAsync<List<int>>();
import requests
resp = requests.post(
f"{BASE}/casino-connect/plugins/{casino_id}/ratings",
headers={"Authorization": f"Bearer {access_token}"},
json=[rating], # a list, even for one
timeout=30,
)
resp.raise_for_status()
ids = resp.json()
Related endpoints
| Method | Path | What it does |
|---|---|---|
POST | casino-connect/plugins/{id}/ratings | Add ratings (array) |
POST | casino-connect/plugins/{id}/journal-rating-add | The single-record form |
GET | casino-connect/plugins/{id}/ratings | Query what is there |
GET | casino-connect/plugins/{id}/entities | Devices and locations to map against |
POST | casino-connect/plugins/{id}/bet-sessions/recalculate | Recalculate totals after a correction |
The full list is on the Casino reference page.
Permissions
The service account needs the CasinoConnect* keys for the operations it performs — adding ratings
needs the add key, reading them back needs the view key — and the casino plugin instance must be
within its logical group. Grant the
minimum: an ingress account that only pushes does not need to read. See the
Permission Keys reference.
What operators see
A pushed rating is indistinguishable from one eConnect collected: it appears in Ratings, feeds player appraisals and the behaviour report, and — where the device is associated with a camera — the row opens the footage for the period it covers.