← Back to Skills
General

hevy

mjrussell By mjrussell 👁 7 views ▲ 0 votes

Query workout data from Hevy including workouts, routines, exercises

GitHub
---
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

Comments

Sign in to leave a comment

Loading comments...