Players
Naming Convention Update
We are transitioning our naming conventions:
venueinstead oftenantplayerinstead ofuser
New endpoints will use the updated terminology.
Get Player List
GET /api/v1/venues/{venue_id}/players
Returns a list of players from the venue (most recent first) using cursor-based pagination with a limit parameter and the response is a list object that wraps the results with additional metadata.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
venue_id |
String | Yes | ID of the venue/club. |
limit |
Int | No | Max objects to return (Max 100, default 20). |
cursor_id |
String | No | Defines the place in the list. Use next_cursor_id from previous response. |
include |
List [String] | No | Optional data to include:BENEFITSSPORTSWALLETS |
Response time
Please note that the response time of the request will depend on the values added to the include parameter.
Response (200)
A list object that contains an object with the following structure in its data field of type list.
| Field | Type | Required | Description |
|---|---|---|---|
player_id |
String | Yes | ID the player. |
name |
String | Yes | Full name of the player. |
email |
String | No | Email address of the player. |
phone |
String | No | Phone number of the player. |
birth_date |
String | No | Birth date of the player. Format: YYYY-MM-DD. |
gender |
String | No | Possible values:MALEFEMALEHIDDEN |
last_registration_date |
Date (UTC) | Yes | Date when the player last registered at this venue. Format: YYYY-MM-DDTHH:MM:SS |
accepts_commercial_communications |
Boolean | Yes | true if the player has explicitly accepted to receive marketing communications from the venue. Otherwise, false. |
sports |
List [Sport] | No | List of sports played by the player with their respective levels. See Sport Model below. |
benefits |
List [Benefit] | No | List of benefits (categories & memberships) the player has at the venue. See Benefit Model below. |
wallets |
List [Wallet] | No | List of wallets the player has at the venue. See Wallet Model below. |
Response format
The fields sports, benefits and wallets will only be included in the response if they were explicitly requested using the include parameter.
Errors
| Status Code | Error | Description |
|---|---|---|
| 400 | INVALID_CURSOR_ID |
Invalid cursor_id. |
| 401 or 403 | - | Either you haven't set the authorization header or the token has expired. |
Example
{
"has_more": true,
"next_cursor_id": "AAAAAAAAAAAAAAAAAAAAAAAA",
"last_modified": "2025-10-15T07:01:58",
"data": [
{
"player_id": "123",
"birth_date": null,
"last_registration_date": "2025-05-21T09:28:45",
"accepts_commercial_communications": false,
"name": "Test player",
"email": "testPlayer@email.com",
"phone": "+34 123456789",
"gender": null,
"sports": [],
"benefits": [
{
"benefit_id": "acd6c2ba-c56f-4cb0-aad6-7e958a7ee3de",
"name": "TEST ADVANCE NO MEMBERSHIP",
"type": "ASSIGNED",
"expires_at": null
}
],
"wallets": []
},
{
"player_id": "234",
"birth_date": "1970-01-01",
"last_registration_date": "2022-07-27T14:39:11",
"accepts_commercial_communications": false,
"name": "Test player 2",
"email": "testPlayer2@email.com",
"phone": "+34 223456789",
"gender": "MALE",
"sports": [],
"benefits": [],
"wallets": [
{
"wallet_id": "amw:3aa9a616-c6d5-45ce-b2dd-3cf45e6805ba",
"name": "Club wallet",
"balance": "9987.5 EUR"
}
]
},
{
"player_id": "345",
"birth_date": "1971-01-01",
"last_registration_date": "2022-07-27T14:19:01",
"accepts_commercial_communications": false,
"name": "Some player",
"email": "someplayer@email.com",
"phone": "+46 1243252385923",
"gender": "MALE",
"sports": [],
"benefits": [],
"wallets": [
{
"wallet_id": "amw:98323c06-e30f-4e68-be33-2644dbcb4c67",
"name": "Club wallet",
"balance": "12.5 EUR"
}
]
},
{
"player_id": "456",
"birth_date": null,
"last_registration_date": "2024-02-05T14:03:44",
"accepts_commercial_communications": false,
"name": "Some player 2",
"email": "someplayer2@email.com",
"phone": "+4 2243252385923",
"gender": "MALE",
"sports": [
{
"sport_id": "PADEL",
"level_value": 2.20
}
],
"benefits": [
{
"benefit_id": "8051cd7a-ec17-4f59-95a5-ebbd4aa5bd4c",
"name": "SIMPLE PRICE 50% DISCOUNT",
"type": "SOLD",
"expires_at": "2024-02-05T14:03:44"
}
],
"wallets": [
{
"wallet_id": "amw:3361ce61-0a36-4951-862c-1e9b7b69a11f",
"name": "wallet app offers",
"balance": "1 EUR"
},
{
"wallet_id": "amw:0fb86581-381a-46db-9e9b-0f632b6e42ab",
"name": "test",
"balance": "100 EUR"
}
]
}
]
}
Get Single Player
GET /api/v1/venues/{venue_id}/players/{player_id}
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
venue_id |
String | Yes | ID of the venue/club. |
player_id |
String | Yes | ID of the player. |
include |
List [String] | No | Optional data to include:BENEFITSSPORTSWALLETS |
Response time
Please note that the response time of the request will depend on the values added to the include parameter.
Response (200)
| Field | Type | Required | Description |
|---|---|---|---|
player_id |
String | Yes | ID the player. |
name |
String | Yes | Full name of the player. |
email |
String | No | Email address of the player. |
phone |
String | No | Phone number of the player. |
birth_date |
String | No | Birth date of the player. Format: YYYY-MM-DD. |
gender |
String | No | Possible values:MALEFEMALEHIDDEN |
last_registration_date |
Date (UTC) | Yes | Date when the player last registered at this venue. Format: YYYY-MM-DDTHH:MM:SS |
accepts_commercial_communications |
Boolean | Yes | true if the player has explicitly accepted to receive marketing communications from the venue. Otherwise, false. |
sports |
List [Sport] | No | List of sports played by the player with their respective levels. See Sport Model below. |
benefits |
List [Benefit] | No | List of benefits (categories & memberships) the player has at the venue. See Benefit Model below. |
wallets |
List [Wallet] | No | List of wallets the player has at the venue. See Wallet Model below. |
Response format
The fields sports, benefits and wallets will only be included in the response if they were explicitly requested using the include parameter.
Errors
| Status Code | Error | Description |
|---|---|---|
| 401 or 403 | - | Either you haven't set the authorization header or the token has expired. |
| 404 | - | Player not found in the venue |
Example
{
"player_id": "<player-id>",
"birth_date": null,
"last_registration_date": "2024-02-05T14:03:44",
"accepts_commercial_communications": false,
"name": "Some player 2",
"email": "someplayer2@email.com",
"phone": "+4 2243252385923",
"gender": "MALE",
"sports": [
{
"sport_id": "PADEL",
"level_value": 2.20
}
],
"benefits": [
{
"benefit_id": "8051cd7a-ec17-4f59-95a5-ebbd4aa5bd4c",
"name": "SIMPLE PRICE 50% DISCOUNT",
"type": "SOLD",
"expires_at": "2024-02-05T14:03:44"
}
],
"wallets": [
{
"wallet_id": "amw:3361ce61-0a36-4951-862c-1e9b7b69a11f",
"name": "wallet app offers",
"balance": "1 EUR"
},
{
"wallet_id": "amw:0fb86581-381a-46db-9e9b-0f632b6e42ab",
"name": "test",
"balance": "100 EUR"
}
]
}
Models
Sport Model
| Field | Type | Required | Description |
|---|---|---|---|
sport_id |
String | Yes | Possible values:PADELTENNISFOOTBALL7FUTSALFOOTBALL_OTHERSPADBOLSQUASHBADMINTONPICKLEBALLBEACH_TENNISBEACH_VOLLEYBASKETBALLVOLLEYBALLCRICKETTABLE_TENNIS |
level_value |
Float | No | Level of the player in this sport. |
Benefit Model
| Field | Type | Required | Description |
|---|---|---|---|
benefit_id |
String | Yes | ID of the benefit. |
name |
String | Yes | Name of the benefit. |
type |
String | Yes | Possible values:ASSIGNED: when a manager has assigned this benefit to the playerSOLD: when a player has purchased the benefit via Playtomic app |
expires_at |
Date (UTC) | No | Expiration date of the benefit. For benefits of type ASSIGNED, the expires_at field indicates when the benefit will expire (if applicable). For benefits of type SOLD, this field represents the end date of the subscription period. Format: YYYY-MM-DDTHH:MM:SS |
Wallet Model
| Field | Type | Required | Description |
|---|---|---|---|
wallet_id |
String | Yes | ID of the wallet. |
name |
String | Yes | Name of the wallet. |
balance |
String [Money] | Yes | Current balance in the wallet. Format: amount currency_code, ie. 10 EUR or 25 USD. |