Gym Dashboard

Hevy workout data — reverse-engineered API, automated daily via GitHub Actions

Python Chart.js Hevy API GitHub Actions
Back to Projects

Project Overview

This dashboard pulls workout data from the Hevy gym tracking app via its private API. Since Hevy doesn't offer a public API (without a Pro subscription), I reverse-engineered the endpoints using Postman, built a Python fetcher, and set up automated daily syncs through GitHub Actions.

The data includes every set, rep, and weight for all exercises across every workout — giving rich insight into training volume, muscle group distribution, personal records, and consistency over time.

The Journey

Step 1: Looking for an API

Hevy does have an official API, but it requires a Hevy Pro subscription. Without paying for Pro, the API documentation is inaccessible and the endpoints return authentication errors. Time for the same playbook that worked for COROS: reverse-engineer it.

Step 2: Capturing the Private API

Using Postman as a proxy, I captured the HTTP requests the Hevy app makes when loading workouts. The key discovery was the user_workouts_paged endpoint on api.hevyapp.com, which returns full workout data including every exercise, set, rep count, weight, RPE, muscle groups, and personal records.

Authentication uses a session token (auth-token header) plus a hardcoded API key. The endpoint supports pagination via limit and offset parameters, though with a max page size of 5 workouts per request.

Step 3: Building the Pipeline

Following the same pattern as the COROS integration, I built fetch_hevy.py — a zero-dependency Python script that authenticates, paginates through all workouts, computes per-exercise and per-workout aggregates (volume, max weight, PR counts), and writes everything to a clean JSON file. A GitHub Actions cron job runs this daily.

Workout Stats Hevy

Loading...

Volume Over Time

Weekly Total Volume (lbs)

Muscle Group Breakdown

Sets by Muscle Group

Muscle Group Distribution

Workout Patterns

Day of Week Distribution

Workout Duration Trend

Progress Tracking

Personal Records Over Time

Volume per Workout

Workout Split

Push vs Pull Distribution

Sets per Workout Trend

Recent Workouts

Loading...

Architecture

Technologies Used

Python JavaScript Chart.js Hevy API GitHub Actions Data Viz

GitHub Repository

View on GitHub