/fitnesshas 22 endpoints covering strength training, cardio zones, recovery, and program generation. This walks through the three you'd use first for a basic training-log app.
One-rep max — three formulas, not one
/one-rep-max takes a lifted weight and rep count, and rather than committing to a single estimation formula (which all have known blind spots at different rep ranges), it computes Epley, Brzycki, and Lombardi separately and returns all three plus an average:
epley = weight × (1 + reps / 30)
brzycki = weight × (36 / (37 − reps))
lombardi = weight × reps^0.10fetch("https://aplicious.com/api/v1/fitness/one-rep-max?weight=100&reps=5&unit=kg", {
headers: { "X-API-Key": "lapi_live_••••" },
});The response includes a note that the average is most accurate when reps stay at 10 or below — all three formulas degrade at higher rep counts, and we'd rather tell you that than quietly return a number that looks precise but isn't.
Training zones for cardio
/target-heart-rate and /training-zones take age (and optionally resting heart rate, for the more accurate Karvonen method) and return the standard zone bands — recovery, fat burn, aerobic, anaerobic, max effort — as heart-rate ranges you can render directly on a workout screen.
Workout plan generation
/workout-plan generates a structured multi-week program from goal, experience level, and days-per-week inputs. /progressive-overload and /deload-week handle the periodization logic on top of a base plan — when to increase load, and when to schedule a recovery week — which is the part most DIY fitness apps skip entirely and just let users wing it.
Putting it together
async function logSet(weight: number, reps: number) {
const res = await fetch(
`https://aplicious.com/api/v1/fitness/one-rep-max?weight=${weight}&reps=${reps}`,
{ headers: { "X-API-Key": process.env.APLICIOUS_KEY! } }
);
const { data } = await res.json();
return data.one_rep_max.average; // store this for progress tracking
}Pair this with /nutrition's macro endpoints (covered in a separate post) and you have the two data sources most training-log apps actually need, both behind the same API key.