GlassScore API

The GlassScore API allows clubs and tournament organizers to verify player ratings and eligibility in real-time. Use our API to integrate GlassScore verification into your registration flows.

Base URL
https://api.glassscore.com/v1

Authentication

The GlassScore API uses API keys for authentication. Include your API key in the Authorization header using the Bearer scheme. You can generate API keys from the enterprise portal.

Example Request

bash
curl https://api.glassscore.com/v1/external/players/lookup?q=john@example.com \
  -H "Authorization: Bearer gs_live_abc123xyz..."
🔒 Keep your API keys secure
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
Never expose API keys in client-side code. Store them securely on your backend server and proxy requests through your server.

Errors

GlassScore uses conventional HTTP response codes to indicate the success or failure of an API request.

200
OK
Everything worked as expected.
400
Bad Request
The request was invalid or malformed.
401
Unauthorized
No valid API key provided.
403
Forbidden
The API key doesn't have required permissions.
404
Not Found
The requested resource doesn't exist.
429
Too Many Requests
Too many requests hit the API too quickly. Rate limit exceeded.
500
Internal Server Error
Something went wrong on our end.

Rate Limiting

The GlassScore API limits requests to 100 requests per minute per API key. When you exceed this limit, the API will return a 429 status code.

Response Headers

Rate limit information is included in response headers:

http
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1672531200
💡 Best Practice
Implement client-side caching for player lookups to reduce API calls. Cache results for 5-10 minutes to stay well within rate limits.

Players

Search and retrieve player information including their current GlassScore rating.

GET

Lookup Players

/v1/external/players/lookup

Search for players by name or email. Returns a list of matching players with their current GlassScore ratings.

Query Parameters

Name
Type
Description
q
string
Search query (name or email)

Example Request

bash
curl https://api.glassscore.com/v1/external/players/lookup?q=john@example.com \
  -H "Authorization: Bearer gs_live_abc123xyz..."

Example Response

json
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "first_name": "John",
    "last_name": "Doe",
    "email": "john@example.com",
    "current_glassscore": 8.5,
    "confidence": 0.85
  }
]
GET

Get Player Rating

/v1/external/players/:player_id/rating

Retrieve the current GlassScore rating for a specific player.

Example Request

bash
curl https://api.glassscore.com/v1/external/players/550e8400-e29b-41d4-a716-446655440000/rating \
  -H "Authorization: Bearer gs_live_abc123xyz..."

Example Response

json
{
  "glassscore": 8.5,
  "confidence": 0.85,
  "method": "glassscore_match_result",
  "last_updated": "2025-12-30T10:30:00Z"
}

Eligibility

Check if a player meets specific GlassScore requirements for tournaments, clinics, or open play.

POST

Check Eligibility

/v1/external/eligibility/check

Verify if a player's GlassScore falls within the specified range.

Request Body

Parameter
Type
Description
player_id
string
UUID of the player
min_glassscore
number
Minimum GlassScore required (1.0-16.6)
max_glassscore
number
Maximum GlassScore allowed (1.0-16.6)

Example Request

bash
curl -X POST https://api.glassscore.com/v1/external/eligibility/check \
  -H "Authorization: Bearer gs_live_abc123xyz..." \
  -H "Content-Type: application/json" \
  -d '{
    "player_id": "550e8400-e29b-41d4-a716-446655440000",
    "min_glassscore": 6.0,
    "max_glassscore": 10.0
  }'

Example Response (Eligible)

json
{
  "eligible": true,
  "reason": "Player meets all requirements",
  "player_glassscore": 8.5,
  "confidence": 0.85,
  "method": "glassscore_match_result"
}

Example Response (Not Eligible)

json
{
  "eligible": false,
  "reason": "Player GlassScore (4.5) is below minimum (6.0)",
  "player_glassscore": 4.5,
  "confidence": 0.60,
  "method": "questionnaire"
}