General
hevy
Query workout data from Hevy including workouts, routines, exercises
---
name: hevy
description: Query workout data from Hevy including workouts, routines, exercises, and history. Use when user asks about their workouts, gym sessions, exercise progress, or fitness routines.
homepage: https://hevy.com
metadata:
clawdbot:
emoji: "🏋️"
requires:
bins: ["hevy"]
env: ["HEVY_API_KEY"]
---
# Hevy CLI
CLI for the Hevy workout tracking API. Query workouts, routines, exercises, and track progress.
## Setup
Requires Hevy Pro subscription for API access.
1. Get API key from https://hevy.com/settings?developer
2. Set environment variable: `export HEVY_API_KEY="your-key"`
## Commands
### Status
```bash
# Check configuration and connection
hevy status
```
### Workouts
```bash
# List recent workouts (default 5)
hevy workouts
hevy workouts --limit 10
# Fetch all workouts
hevy workouts --all
# Show detailed workout
hevy workout <workout-id>
# JSON output
hevy workouts --json
hevy workout <id> --json
# Show weights in kg (default is lbs)
hevy workouts --kg
```
### Routines
```bash
# List all routines
hevy routines
# Show detailed routine
hevy routine <routine-id>
# JSON output
hevy routines --json
```
### Exercises
```bash
# List all exercise templates
hevy exercises
# Search by name
hevy exercises --search "bench press"
# Filter by muscle group
hevy exercises --muscle chest
# Show only custom exercises
hevy exercises --custom
# JSON output
hevy exercises --json
```
### Exercise History
```bash
# Show history for specific exercise
hevy history <exercise-template-id>
hevy history <exercise-template-id> --limit 50
# JSON output
hevy history <exercise-template-id> --json
```
### Creating Routines
```bash
# Create routine from JSON (stdin)
echo '{"routine": {...}}' | hevy create-routine
# Create routine from file
hevy create-routine --file routine.json
# Create a routine folder
hevy create-folder "Push Pull Legs"
# Update existing routine
echo '{"routine": {...}}' | hevy update-routine <routine-id>
# Create custom exercise (checks for duplicates first!)
hevy create-exercise --title "My Exercise" --muscle chest --type weight_reps
# Force create even if duplicate exists
hevy create-exercise --title "My Exercise" --muscle chest --force
```
**⚠️ Duplicate Prevention:** `create-exercise` checks if an exercise with the same name already exists and will error if found. Use `--force` to create anyway (not recommended).
**Routine JSON format:**
```json
{
"routine": {
"title": "Push Day 💪",
"folder_id": null,
"notes": "Chest, shoulders, triceps",
"exercises": [
{
"exercise_template_id": "79D0BB3A",
"notes": "Focus on form",
"rest_seconds": 90,
"sets": [
{ "type": "warmup", "weight_kg": 20, "reps": 15 },
{ "type": "normal", "weight_kg": 60, "reps": 8 }
]
}
]
}
}
```
### Other
```bash
# Total workout count
hevy count
# List routine folders
hevy folders
```
## Usage Examples
**User asks "What did I do at the gym?"**
```bash
hevy workouts
```
**User asks "Show me my last chest workout"**
```bash
hevy workouts --limit 10 # Find relevant workout ID
hevy workout <id> # Get details
```
**User asks "How am I progressing on bench press?"**
```bash
hevy exercises --search "bench press" # Get exercise template ID
hevy history <exercise-id> # View progression
```
**User asks "What routines do I have?"**
```bash
hevy routines
hevy routine <id> # For details
```
**User asks "Find leg exercises"**
```bash
hevy exercises --muscle quadriceps
hevy exercises --muscle hamstrings
hevy exercises --muscle glutes
```
**User asks "Create a push day routine"**
```bash
# 1. Find exercise IDs
hevy exercises --search "bench press"
hevy exercises --search "shoulder press"
# 2. Create routine JSON with those IDs and pipe to create-routine
```
## Notes
- **Duplicate Prevention:** `create-exercise` checks for existing exercises with the same name before creating. Use `--force` to override (not recommended).
- **API Limitations:** Hevy API does NOT support deleting or editing exercise templates - only creating. Delete exercises manually in the app.
- **API Rate Limits:** Be mindful when fetching all data (--all flag)
- **Weights:** Defaults to lbs, use --kg for kilograms
- **Pagination:** Most commands auto-paginate, but limit flags help reduce API calls
- **IDs:** Workout/routine/exercise IDs are UUIDs, shown in detailed views
## API Reference
Full API docs: https://api.hevyapp.com/docs/
### Available Endpoints
- `GET /v1/workouts` - List workouts (paginated)
- `GET /v1/workouts/{id}` - Get single workout
- `GET /v1/workouts/count` - Total workout count
- `GET /v1/routines` - List routines
- `GET /v1/routines/{id}` - Get single routine
- `GET /v1/exercise_templates` - List exercises
- `GET /v1/exercise_templates/{id}` - Get single exercise
- `GET /v1/exercise_history/{id}` - Exercise history
- `GET /v1/routine_folders` - List folders
### Write Operations (supported but use carefully)
- `POST /v1/workouts` - Create workout
- `PUT /v1/workouts/{id}` - Update workout
- `POST /v1/routines` - Create routine
- `PUT /v1/routines/{id}` - Update routine
- `POST /v1/exercise_templates` - Create custom exercise
- `POST /v1/routine_folders` - Create folder
The CLI focuses on read operations. Write operations are available via the API client for programmatic use.
general
By
Comments
Sign in to leave a comment