Skip to content

List venues

GET
/venues
curl --request GET \
--url 'https://api.krkplaystennis.example/v1/venues?limit=20&cursor=bWF0XzJ2YjZucDRrdGY&district=Podg%C3%B3rze' \
--header 'X-API-Key: <X-API-Key>'

Returns tennis venues ordered by name.

limit
integer
default: 20 >= 1 <= 100

Maximum number of items to return.

cursor
string

The next_cursor value from the previous page. Omit it to get the first page.

Example

bWF0XzJ2YjZucDRrdGY
district
string

Returns only venues in this Kraków district.

Example

Podgórze

A page of venues.

Media typeapplication/json
object
data
required
Array<object>
object
id
required

A venue ID. Starts with ven_.

string
/^ven_[a-z0-9]{10}$/
name
required
string
district
required

The Kraków district.

string
address
required
string
courts
required
Array<object>
object
number
required
integer
>= 1
surface
required
string
Allowed values: clay hard grass carpet artificial_grass
indoor
required

true for an indoor court or a court under a seasonal dome.

boolean
next_cursor
required

Pass this value as cursor to get the next page. null means this is the last page.

string | null

Examples

Examplevenues

All venues

{
"data": [
{
"id": "ven_3xr8tn5cva",
"name": "Nowa Huta Indoor Tennis Hall",
"district": "Nowa Huta",
"address": "al. Serwisowa 21, 31-940 Kraków",
"courts": [
{
"number": 1,
"surface": "hard",
"indoor": true
},
{
"number": 2,
"surface": "hard",
"indoor": true
},
{
"number": 3,
"surface": "carpet",
"indoor": true
}
]
},
{
"id": "ven_7hk2p9wq4m",
"name": "Riverside Courts Podgórze",
"district": "Podgórze",
"address": "ul. Rakietowa 7, 30-532 Kraków",
"courts": [
{
"number": 1,
"surface": "clay",
"indoor": false
},
{
"number": 2,
"surface": "clay",
"indoor": false
},
{
"number": 3,
"surface": "clay",
"indoor": false
},
{
"number": 4,
"surface": "hard",
"indoor": true
}
]
}
],
"next_cursor": null
}

The request is malformed, for example a query parameter has the wrong type.

Media typeapplication/problem+json

An error, as RFC 9457 problem details.

object
type
required

A URL that identifies the error type and links to its documentation.

string format: uri
title
required

A short summary of the error type. It’s the same for every error of this type.

string
status
required

The HTTP status code.

integer
>= 400 <= 599
detail
required

An explanation of this occurrence of the error.

string
instance

The request path that caused the error.

string
errors

One item per invalid field or parameter. Only for invalid-request, invalid-score, and validation-failed.

Array<object>
object
pointer
required

A JSON Pointer to the invalid field in the request body, or #/ followed by the name of an invalid query parameter.

string
detail
required

What’s wrong with the field and how to fix it.

string

Examples

ExampleinvalidRequest

Limit out of range

{
"type": "https://saverio-cirillo.com/krk-plays-tennis-api/errors/#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "The request has 1 invalid parameter.",
"instance": "/v1/players",
"errors": [
{
"pointer": "#/limit",
"detail": "limit must be between 1 and 100."
}
]
}

The credentials are missing, invalid, or expired.

Media typeapplication/problem+json

An error, as RFC 9457 problem details.

object
type
required

A URL that identifies the error type and links to its documentation.

string format: uri
title
required

A short summary of the error type. It’s the same for every error of this type.

string
status
required

The HTTP status code.

integer
>= 400 <= 599
detail
required

An explanation of this occurrence of the error.

string
instance

The request path that caused the error.

string
errors

One item per invalid field or parameter. Only for invalid-request, invalid-score, and validation-failed.

Array<object>
object
pointer
required

A JSON Pointer to the invalid field in the request body, or #/ followed by the name of an invalid query parameter.

string
detail
required

What’s wrong with the field and how to fix it.

string

Examples

Exampleunauthenticated

Missing API key

{
"type": "https://saverio-cirillo.com/krk-plays-tennis-api/errors/#unauthenticated",
"title": "Authentication required",
"status": 401,
"detail": "Send a valid API key in the X-API-Key header.",
"instance": "/v1/players/plr_2b7xq9mhk4"
}

You sent too many requests. Wait for the number of seconds in Retry-After, then retry.

Media typeapplication/problem+json

An error, as RFC 9457 problem details.

object
type
required

A URL that identifies the error type and links to its documentation.

string format: uri
title
required

A short summary of the error type. It’s the same for every error of this type.

string
status
required

The HTTP status code.

integer
>= 400 <= 599
detail
required

An explanation of this occurrence of the error.

string
instance

The request path that caused the error.

string
errors

One item per invalid field or parameter. Only for invalid-request, invalid-score, and validation-failed.

Array<object>
object
pointer
required

A JSON Pointer to the invalid field in the request body, or #/ followed by the name of an invalid query parameter.

string
detail
required

What’s wrong with the field and how to fix it.

string

Examples

ExamplerateLimited

Rate limit reached

{
"type": "https://saverio-cirillo.com/krk-plays-tennis-api/errors/#rate-limited",
"title": "Rate limit reached",
"status": 429,
"detail": "This API key is limited to 60 requests per minute. Retry after 30 seconds.",
"instance": "/v1/matches"
}
Retry-After
integer
>= 1

Number of seconds to wait before you retry.

Example
30

© 2026 Saverio Cirillo · KRKplaysTennis is a fictional API · Built with Starlight