Players Report
GET /api/client/reports/players
Retrieve a paginated list of players with comprehensive analytics including activity, financial summary, RTP, and profitability. The response includes per-player details and aggregated totals across all matching records.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (default: 1) |
filter[per_page] | integer | No | Items per page (default: 50) |
filter[fromDate] | string | No | Start date in YYYY-MM-DD format |
filter[toDate] | string | No | End date in YYYY-MM-DD format |
filter[provider_id][] | integer | No | Filter by provider ID(s) |
filter[currency_id][] | string | No | Filter by currency ISO code(s) (e.g., USD, CRC) |
filter[has_transactions] | boolean | No | Only include players with transactions (true / false) |
filter[search] | string | No | Search by player username |
Combining Filters
You can combine multiple filters to narrow down results. For example, to find active players in USD from a specific provider:
?filter[has_transactions]=true&filter[currency_id][]=USD&filter[provider_id][]=5Request
Headers
| Header | Value | Required |
|---|---|---|
Accept | application/json | Yes |
X-Client-Secret | Your UUID secret | Yes |
Request Example
curl -X GET 'https://api.syssoft1.com/api/client/reports/players?page=1&filter[per_page]=50&filter[has_transactions]=true' \
-H 'Accept: application/json' \
-H 'X-Client-Secret: fd5a9710-d7f8-47af-a2c5-d553f9029706'Example with Search
curl -X GET 'https://api.syssoft1.com/api/client/reports/players?filter[search]=player123' \
-H 'Accept: application/json' \
-H 'X-Client-Secret: fd5a9710-d7f8-47af-a2c5-d553f9029706'Example with Date Range and Currency
curl -X GET 'https://api.syssoft1.com/api/client/reports/players?page=1&filter[fromDate]=2026-03-01&filter[toDate]=2026-04-13&filter[currency_id][]=USD&filter[currency_id][]=CRC' \
-H 'Accept: application/json' \
-H 'X-Client-Secret: fd5a9710-d7f8-47af-a2c5-d553f9029706'Response
Successful Response — 200 OK
{
"data": [
{
"id": 789,
"username": "player123",
"client": "inte",
"country": "CR",
"currency": "USD",
"status": true,
"total_transactions": 450,
"games_played": 12,
"total_bets": {
"raw": 5000.00,
"formatted": "$5,000.00",
"large_number": "5K"
},
"total_wins": {
"raw": 4200.00,
"formatted": "$4,200.00",
"large_number": "4.2K"
},
"total_rollbacks": {
"raw": 100.00,
"formatted": "$100.00",
"large_number": "100"
},
"total_free_spins": {
"raw": 50.00,
"formatted": "$50.00",
"large_number": "50"
},
"profit": {
"raw": 650.00,
"formatted": "$650.00",
"large_number": "650"
},
"rtp": "86.00%",
"last_activity": "2026-04-13 09:15:00",
"created_at": "2026-01-15 08:00:00"
}
],
"pagination": {
"current_page": 1,
"total": 45,
"per_page": 50,
"total_pages": 1
},
"totals": {
"total_players": 45,
"total_transactions": 12500,
"total_bets": {
"raw": 250000.00,
"formatted": "$250,000.00",
"large_number": "250K"
},
"total_wins": {
"raw": 225000.00,
"formatted": "$225,000.00",
"large_number": "225K"
},
"profit": {
"raw": 25000.00,
"formatted": "$25,000.00",
"large_number": "25K"
},
"return_to_player": "90.00%"
}
}Response Fields
data[] — Player Records
| Field | Type | Description |
|---|---|---|
id | integer | Unique player identifier |
username | string | Player username |
client | string | Client/operator identifier |
country | string | ISO country code (e.g., CR, US) |
currency | string | Player's currency ISO code |
status | boolean | Whether the player account is active |
total_transactions | integer | Total number of transactions |
games_played | integer | Number of distinct games played |
total_bets | object | Total amount wagered with raw, formatted, large_number |
total_wins | object | Total amount won with raw, formatted, large_number |
total_rollbacks | object | Total rollback amount with raw, formatted, large_number |
total_free_spins | object | Total free spin amount with raw, formatted, large_number |
profit | object | Net profit from this player with raw, formatted, large_number |
rtp | string | Return to Player percentage |
last_activity | string | Last activity timestamp (YYYY-MM-DD HH:mm:ss) |
created_at | string | Account creation timestamp (YYYY-MM-DD HH:mm:ss) |
pagination — Pagination Information
| Field | Type | Description |
|---|---|---|
current_page | integer | Current page number |
total | integer | Total number of records |
per_page | integer | Records per page |
total_pages | integer | Total number of pages |
totals — Aggregated Totals
The totals object provides aggregated values across all records matching the current filters (not just the current page).
| Field | Type | Description |
|---|---|---|
total_players | integer | Total number of players matching filters |
total_transactions | integer | Sum of all player transactions |
total_bets | object | Aggregated bets with raw, formatted, large_number |
total_wins | object | Aggregated wins with raw, formatted, large_number |
profit | object | Aggregated profit with raw, formatted, large_number |
return_to_player | string | Overall RTP percentage across all players |
Understanding Player Metrics
RTP (Return to Player)
The rtp field represents the percentage of total bets that was returned to the player as wins and rollbacks.
Formula: (total_wins + total_rollbacks) / total_bets * 100
A lower RTP indicates higher profitability for the operator.
Profit
The profit field represents the net revenue generated by the player.
Formula: total_bets - total_wins - total_rollbacks
Status
The status field indicates whether the player's account is currently active (true) or inactive (false). Inactive players may still appear in historical reports.
Try It Out
Parameters
pageintegerfilter[per_page]integerfilter[fromDate]stringfilter[toDate]stringfilter[provider_id][]arrayfilter[currency_id][]stringfilter[has_transactions]booleanfilter[search]stringRequest URL
https://api.syssoft1.com/api/client/reports/playersError Responses
| Code | Description |
|---|---|
401 | Invalid or inactive client secret. See Authentication. |
422 | Invalid query parameters. Check parameter types and formats. |
429 | Rate limit exceeded. Wait and retry. See Error Handling. |