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, browse the public Town Square feed, and edit your own workouts from the website. 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.
Workout Reviews
Rate and review community workouts. Users can submit 1–5 star ratings with optional comments. One review per user per workout (upsert). Reviews are also included in the GET /api/workouts response.
Weekly Stats
Get your personal training statistics for the current week and month. Used to power the homepage progress bar.
Leaderboards
Community leaderboards ranked by actual weight lifted, body-part volume, and total weekly tonnage. All leaderboards use public workouts only.
Body Measurements
Track body measurements over time — bodyweight, chest, waist, hips, arms, thighs, and neck. Used by the Tracker page.
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.
