Skip to main content
All API requests require a Bearer token in the Authorization header.

Getting your API token

Sign in via the auth endpoint:
curl -X POST https://app.framesports.com/api/v1/auth \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "password": "your-password"}'
Response
{
  "token": "your-api-token"
}
If your account has two-factor authentication enabled, include the otp_attempt parameter:
curl -X POST https://app.framesports.com/api/v1/auth \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "password": "your-password", "otp_attempt": "123456"}'

Using your token

Include the token in every request:
curl https://app.framesports.com/api/v1/games \
  -H "Authorization: Bearer your-api-token"
Requests without a valid token return 401 Unauthorized.

Selecting an account

If your user belongs to multiple accounts (or has governing body access to other clubs), the API defaults to your primary account. Use the Account-Id header to switch:
curl https://app.framesports.com/api/v1/games \
  -H "Authorization: Bearer your-api-token" \
  -H "Account-Id: acct_abc123"
You can find your account IDs via the List Accounts endpoint.
ScenarioResponse
Header omittedDefault account is used
Valid, accessible accountThat account’s data is returned
Account exists but you don’t have access403 Forbidden
Account doesn’t exist404 Not Found

Signing out

curl -X DELETE https://app.framesports.com/api/v1/auth \
  -H "Authorization: Bearer your-api-token"