> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.datafortennis.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.datafortennis.com/_mcp/server.

# Make your first reproducible query

Current measured availability and source checks: [System status](https://status.datafortennis.com). Read the [monitoring definitions](/start-here/service-status) before interpreting uptime or an empty live response.


You need an authorized API credential. Use `https://api.datafortennis.com`
over normal HTTPS. Store your credential in a protected curl config supplied by your
operator. Do not put it in a URL, committed file or shared command transcript.

The examples below are request templates. Select real IDs from responses; no
example UUID or release name should be treated as a published record.

## 1. Discover a release

```sh
curl --fail-with-body --config "$DFT_CLIENT_CONFIG" \
  https://api.datafortennis.com/v1/releases
```

The response has `data`, `meta`, `page` and `error`. Choose a release from
`data` and save its `id` as `DFT_RELEASE`. An epoch is a decimal string: retain
it as a string or use a lossless integer type.

## 2. Find a match

```sh
curl --fail-with-body --config "$DFT_CLIENT_CONFIG" --get \
  https://api.datafortennis.com/v1/matches \
  --data-urlencode "release=$DFT_RELEASE" \
  --data-urlencode 'discipline=doubles' \
  --data-urlencode 'limit=10'
```

Select `data[0].id` as `DFT_MATCH`. A doubles match has two sides, each containing
two distinct players. Read its result and coverage before selecting point data.

## 3. Read points and statistics

```sh
curl --fail-with-body --config "$DFT_CLIENT_CONFIG" --get \
  "https://api.datafortennis.com/v1/matches/$DFT_MATCH/points" \
  --data-urlencode "release=$DFT_RELEASE" --data-urlencode 'limit=50'

curl --fail-with-body --config "$DFT_CLIENT_CONFIG" --get \
  "https://api.datafortennis.com/v1/matches/$DFT_MATCH/stats" \
  --data-urlencode "release=$DFT_RELEASE"

curl --fail-with-body --config "$DFT_CLIENT_CONFIG" --get \
  "https://api.datafortennis.com/v1/matches/$DFT_MATCH/coverage" \
  --data-urlencode "release=$DFT_RELEASE"
```

Follow `page.next_cursor` with the same release and filters until it is null.
An empty family for a known match is a valid response, with availability context.
An unknown match ID returns 404.

Health checks are available without a credential:

```sh
curl --fail-with-body https://api.datafortennis.com/health/live
curl --fail-with-body https://api.datafortennis.com/health/ready
```

Liveness reports the running API process. Readiness additionally checks the
serving database and admission/metering path. A 200 health response does not
grant access to data or establish coverage of every data family.

If a connection fails before an HTTP response, check DNS, your network path
and any proxy or VPN configuration. Keep TLS certificate verification enabled.
Application authentication errors return an HTTP response, such as 401.

For the local network environment, apply the explicit TLS trust and hostname
mapping described in its guide to every request. Do not disable verification.