API Documentation
Complete reference for integrating with Long Game Lifting. Use these endpoints from the mobile app or any HTTP client to manage workouts, personal records, and training groups.
Base URL
https://longgamelifting.comAll endpoint paths are relative to this base URL.
Authentication
Step 1: Register via POST /api/signup or log in via POST /api/auth/login. Both return an apiToken.
Step 2: Store the token securely on the device (e.g., React Native\'s AsyncStorage or iOS Keychain).
Step 3: Include the token in all authenticated requests:
Authorization: Bearer <your-api-token>The token is a 64-character hex string that does not expire. If you need a new token, re-register or log in again.
Quick Start Example
Register a new user and submit a workout — all from the command line or your app:
# 1. Register
curl -X POST https://longgamelifting.com/api/signup \
-H "Content-Type: application/json" \
-d '{"name": "Jane Doe", "email": "[email protected]", "password": "mypassword123"}'
# Response includes apiToken — save it!
# 2. Submit a workout
curl -X POST https://longgamelifting.com/api/workouts \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"title": "Push Day",
"notes": "Felt strong today",
"duration": 65,
"exercises": [
{
"exerciseName": "Bench Press",
"sets": [
{ "reps": 5, "weight": 225, "unit": "lbs", "rpe": 7 },
{ "reps": 5, "weight": 225, "unit": "lbs", "rpe": 8 },
{ "reps": 3, "weight": 245, "unit": "lbs", "rpe": 9 }
]
},
{
"exerciseName": "Incline DB Press",
"sets": [
{ "reps": 10, "weight": 75, "unit": "lbs" },
{ "reps": 8, "weight": 80, "unit": "lbs" }
]
}
]
}'Authentication
Register and sign in to get your API token. Store the token securely on the device and include it as a Bearer token in all authenticated requests.
Workouts
Submit completed workouts and browse the public Town Square feed. Workouts contain nested exercises, each with ordered sets.
Personal Records (Wall of Fame)
Submit your personal records (1RMs) and browse the Wall of Fame leaderboard. Top 10 heaviest lifts per exercise.
Video Upload
Get a presigned upload URL for PR verification videos. Upload the video directly to cloud storage, then use the returned public URL when submitting your record.
Groups
Create private training groups, join via invite code, and view your group memberships.
Error Responses
All errors return a JSON object with an error field:
{ "error": "Description of what went wrong" }| Status | Meaning |
|---|---|
| 400 | Bad Request — missing or invalid fields |
| 401 | Unauthorized — missing or invalid API token |
| 403 | Forbidden — not a member of the target group |
| 404 | Not Found — invalid invite code or resource |
| 409 | Conflict — email/account/membership already exists |
| 500 | Server Error — something unexpected happened |
Video Verification Flow
To submit a video-verified personal record, follow this 3-step process:
POST to /api/records/upload-video with fileName and contentType
PUT the file bytes to the returned uploadUrl with the matching Content-Type header
POST to /api/records with the publicUrl in the videoUrl field
Notes
- • All request/response bodies are JSON. Always set
Content-Type: application/jsonon POST requests. - • Timestamps are in ISO 8601 format (UTC).
- • The API token does not expire. Store it once after signup/login and reuse it for all requests.
- • Weight units default to "lbs" if not specified. Valid values are
"lbs"and"kg". - • Google SSO users who sign in via the website can also use these API endpoints — they just need to log in once via email/password to get an API token.
