Skip to content

Quickstart

Treat this like a set. Tick each point as you land it — we keep score in this browser.

Rally tracker · 0/5 points

Sign up as a partner, complete billing, then open API keys and create a live key. Copy it once — we only store a hash.

shell
export PADELRANK_API_KEY="pr_live_..."
GET /v1/players
curl -s "https://api.padelrank.me/v1/players/maria_s" \
    -H "Authorization: Bearer $PADELRANK_API_KEY"

New players start with a provisional PadelRank score. The score updates as they play verified matches.

Starter can only read public profiles. Creating a private amateur needs write:players on Pro or Enterprise.

POST /v1/players
curl -s -X POST "https://api.padelrank.me/v1/players" \
  -H "Authorization: Bearer $PADELRANK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "maria_s",
    "display_name": "Maria Silva",
    "country_code": "PT",
    "profile_is_public": false,
    "roster_slug": "weeknight-amateurs"
  }'

Response includes id (UUID) and username.

After four players exist, post a result your platform witnessed:

POST /v1/matches
curl -s -X POST "https://api.padelrank.me/v1/matches" \
    -H "Authorization: Bearer $PADELRANK_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "external_ref": "your-app-match-9821",
    "played_at": "2026-06-16T18:30:00Z",
    "winning_team": "A",
    "trust_tier": "partner_attested",
    "participants": [
      { "username": "maria_s", "team": "A", "court_position": "left" },
      { "username": "joao_p", "team": "A", "court_position": "right" },
      { "username": "ana_r", "team": "B", "court_position": "left" },
      { "username": "pedro_l", "team": "B", "court_position": "right" }
    ],
    "set_scores": [
      {
        "set_number": 1,
        "team_a_games": 6,
        "team_b_games": 4,
        "game_winners": ["A","A","A","A","B","B","B","B","A","A"]
      },
      {
        "set_number": 2,
        "team_a_games": 6,
        "team_b_games": 2
      }
    ]
  }'

Use a unique external_ref per match in your system — retries with the same ref return 409 duplicate_external_ref.

Next rally