Last Set Mindset
Developer API
v1.0 Try the Demo →

API Reference

The Last Set Mindset API gives you programmatic access to 15 years of CrossFit Open workouts, an intelligent scaling engine, and AI-powered workout generation — all in one clean REST API.

Overview

The API is designed around three core capabilities:

Workout Library — Query, filter, and retrieve all CrossFit Open workouts from 2011 to present. Filter by year, scoring type, movements, time domain, and more.

Scaling Engine — Instantly scale any workout to beginner, scaled, Rx, or Rx+ intensity for men or women. Returns movement substitutions and adjusted weights.

AI Generator — Describe a workout in plain English and receive a complete, Open-inspired workout with Rx/scaled weights, coaching notes, and programming context.

Authentication

All API requests require an API key passed via the X-API-Key header.

X-API-Key: lsm_your_api_key_here

To get an API key, contact us. A demo key is available for testing with a 50 request/month limit.

Base URL

https://api.lastsetmindset.com/v1

Response Format

All responses are JSON and follow this envelope format:

{
  "data": { ... },       // The response payload
  "meta": {
    "usage": 42,         // Calls used this month
    "limit": 500,        // Monthly call limit
    "remaining": 458     // Remaining calls
  }
}

List Workouts

GET /v1/workouts Returns a filtered list of Open workouts

Query Parameters

ParamTypeDescription
yearintegerFilter by year (2011–2026) optional
typestringamrap for_time max_weight optional
max_timeintegerMax time cap in minutes optional
min_timeintegerMin time cap in minutes optional
movementstringMust include movement (repeatable) optional
excludestringMust exclude movement (repeatable) optional
keywordstringKeyword search in description optional
limitintegerMax results (default 50, max 100) optional
Example Request
curl https://api.lastsetmindset.com/v1/workouts?type=amrap&max_time=12&movement=thruster \
  -H "X-API-Key: lsm_your_key"

Get Workout

GET /v1/workouts/:workout_number Returns a single workout by number
curl https://api.lastsetmindset.com/v1/workouts/24.3 \
  -H "X-API-Key: lsm_your_key"

Scale Workout

GET /v1/workouts/:workout_number/scale Returns a scaled version of a workout
ParamTypeDescription
levelstringbeginner scaled rx rx+ — default: scaled optional
genderstringmen women — default: men optional
Example Response
{
  "data": {
    "workout": { "workout_number": "24.3", "description": "...", ... },
    "scaled": {
      "level": "scaled",
      "rep_percent": 80,
      "movement_substitutions": {
        "bar muscle-up": "chest-to-bar pull-up",
        "overhead squat": "front squat"
      },
      "weights": {
        "weights": "70 lb"
      }
    }
  }
}

Random Workout

GET /v1/workouts/random Returns a random workout, with optional filters

Accepts the same type, max_time, movement, and exclude params as the list endpoint.

curl "https://api.lastsetmindset.com/v1/workouts/random?type=for_time&exclude=muscle-up" \
  -H "X-API-Key: lsm_your_key"

Generate Workout (AI)

POST /v1/generate Generate an original workout using AI

Describe a workout in plain English. The AI generates a complete, Open-inspired workout including Rx/scaled weights for men and women, coaching notes, and programming context.

Body FieldTypeDescription
promptstringPlain English workout description required
Example Request
curl -X POST https://api.lastsetmindset.com/v1/generate \
  -H "X-API-Key: lsm_your_key" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "A 12-minute AMRAP with dumbbell snatches and box jumps, moderate intensity"}'
Example Response
{
  "data": {
    "workout": {
      "name": "Box Snatch",
      "description": "Complete as many rounds and reps as possible in 12 minutes of:\n12 Dumbbell snatches (50/35 lb)\n9 Box jump overs (24/20 in)\n6 Burpees",
      "scoring_type": "amrap",
      "time_cap": 12,
      "movements": ["dumbbell snatch", "box jump over", "burpee"],
      "rx_men": {"db": "50 lb", "box": "24 in"},
      "rx_women": {"db": "35 lb", "box": "20 in"},
      "scaled_men": {"db": "35 lb", "box": "20 in"},
      "scaled_women": {"db": "20 lb", "box": "20 in"},
      "coaching_notes": "Break the snatches early. Aim for unbroken box jump overs.",
      "open_inspiration": "Inspired by 17.1 and 22.1 — dumbbell-heavy with monostructural cardio"
    }
  }
}

Scale Custom Workout

POST /v1/scale Scale any workout object, including AI-generated ones
Body FieldTypeDescription
workoutobjectWorkout object with movements and rx_men/rx_women required
levelstringbeginner scaled rx rx+ optional
genderstringmen women optional

Usage Stats

GET /v1/usage Returns call usage for your API key
{
  "data": {
    "total_calls": 142,
    "this_month": 42,
    "limit": 500,
    "remaining": 458,
    "by_endpoint": [
      {"endpoint": "/v1/generate", "calls": 28},
      {"endpoint": "/v1/workouts", "calls": 14}
    ]
  }
}

Workout Object

FieldTypeDescription
workout_numberstringe.g. "24.3", "19.1"
yearintegerYear of the Open
namestring|nullWorkout name if it has one
descriptionstringFull whiteboard-style description
scoring_typestringamrap for_time max_weight
time_capinteger|nullTime cap in minutes
movementsarrayList of movement names
rx_menobjectRx weights/heights for men
rx_womenobjectRx weights/heights for women
scaled_menobjectStandard scaled weights for men
scaled_womenobjectStandard scaled weights for women
notesstring|nullAdditional notes

Scale Levels

LevelWeightVolumeMovements
beginner50% of Rx60% of Rx2 steps easier
scaled75% of Rx80% of Rx1 step easier
rx100%100%As prescribed
rx+120% of Rx110% of Rx1 step harder

Pricing

Starter
$49/month
500 API calls/month
Full workout library access
Scaling engine
AI workout generation
Email support
Enterprise
Custom
Unlimited calls
Everything in Studio
Custom integrations
Dedicated support
White-label options

All plans include a 14-day free trial. Contact us to get started.