Clubs and slots
Clubs, courts and free slots for a day with prices. Public methods.
List clubs #
GET
/v1/clubsAccess: Public No authorization.
All network clubs: address, court count, price from, whether courts have AI, coordinates (if set).
Example request
curl -X GET "https://your-server/api/v1/clubs"Responses
| Code | detail | Meaning |
|---|---|---|
| 200 | — | Success; example below |
Example response
{
"items": [
{
"id": "c1",
"name": "Flame Padel",
"address": "Skolkovo, courts 4 and 5",
"courts": 6,
"priceFrom": 3500,
"hasAI": true,
"lat": null,
"lon": null
}
]
}Club #
GET
/v1/clubs/{club_id}Access: Public No authorization.
One club in the same format as in the list.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
club_id | string | yes | Club id |
Example request
curl -X GET "https://your-server/api/v1/clubs/c1"Responses
| Code | detail | Meaning |
|---|---|---|
| 200 | — | Success; example below |
| 404 | club_not_found | Club not found |
| 422 | […] | Parameter or body validation error: detail is a list of errors |
Example response
{
"id": "c1",
"name": "Flame Padel",
"address": "Skolkovo, courts 4 and 5",
"courts": 6,
"priceFrom": 3500,
"hasAI": true,
"lat": null,
"lon": null
}Club courts #
GET
/v1/clubs/{club_id}/courtsAccess: Public No authorization.
Club courts: name, indoor or not, AI or not.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
club_id | string | yes | Club id |
Example request
curl -X GET "https://your-server/api/v1/clubs/c1/courts"Responses
| Code | detail | Meaning |
|---|---|---|
| 200 | — | Success; example below |
| 404 | club_not_found | Club not found |
| 422 | […] | Parameter or body validation error: detail is a list of errors |
Example response
{
"items": [
{
"id": "7d1e3b5a-9c2f-4e8d-b6a0-4f2c8e1d9b37",
"name": "Court 4",
"indoor": true,
"hasAI": true
}
]
}Club slots for a day #
GET
/v1/clubs/{club_id}/slotsAccess: Public No authorization.
90-minute slots from club opening to closing for the day (YYYY-MM-DD, today by default). A slot is free if at least one court is free; freeCourts says how many. The price follows the club price grid for a regular player; priceLabel is set for happy hours. The personal price (customer category, promo code) is applied at booking.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
club_id | string | yes | Club id |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
day | string | no | Date YYYY-MM-DD |
Example request
curl -X GET "https://your-server/api/v1/clubs/c1/slots?day=2026-10-03"Responses
| Code | detail | Meaning |
|---|---|---|
| 200 | — | Success; example below |
| 404 | club_not_found | Club not found |
| 400 | bad_day | Invalid date (YYYY-MM-DD expected) |
| 422 | […] | Parameter or body validation error: detail is a list of errors |
Example response
{
"day": "2026-10-03",
"items": [
{
"time": "08:00",
"free": true,
"freeCourts": 2,
"price": 2800,
"priceLabel": "<label>"
},
{"time": "09:30", "free": false, "freeCourts": 0, "price": 3500, "priceLabel": ""}
]
}