Features Integrations AI & API Pricing Blog Docs
Overview WHOOP Oura Withings Apple Health Glucose Hevy REST API AI & Claude MCP Server

AI & Claude

Your health data is most useful when you can ask questions about it in plain language. VitalTrends gives you three ways to bring your data into an AI conversation.


Option 1: CSV export (any AI)

The simplest approach. Export your data as a CSV and upload it directly to Claude, ChatGPT, or any AI with file upload.

1
Go to Export

In the dashboard, navigate to Export in the sidebar. Choose your date range and data types.

2
Download the CSV

Click Export CSV. The file downloads immediately.

3
Upload to your AI

Attach the CSV in Claude.ai or ChatGPT, then ask questions about it.

Example prompts


Option 2: API + Python / notebooks

For repeatable analysis, query the REST API directly from a Jupyter notebook or script.

import requests
import pandas as pd

API_KEY = "YOUR_API_KEY"
BASE    = "https://vitaltrends.net/api/v1"

def get_whoop_daily(days=90):
    from datetime import date, timedelta
    start = (date.today() - timedelta(days=days)).isoformat()
    r = requests.get(
        f"{BASE}/whoop/daily",
        params={"start": start, "per_page": 1000},
        headers={"Authorization": f"Bearer {API_KEY}"},
    )
    r.raise_for_status()
    return pd.DataFrame(r.json()["data"])

df = get_whoop_daily(90)
print(df[["date","recovery_score","hrv_rmssd_milli"]].describe())

From there you can feed the dataframe as context to the Claude API or use any AI SDK to generate insights programmatically.

The REST API reads and writes. An agent with a workout:write key can upload strength workouts via POST /workout-logs/import (one row per exercise) or POST /workout-logs (structured JSON); uploads are deduplicated against Hevy and appear in the Training Log, stats, and unified feed. Each exercise can include an optional muscle_group, validated against the documented canonical vocabulary so AI-generated logs feed the muscle map consistently. If the field is omitted and the exercise is unknown, VitalTrends retains the normalized input for review instead of silently dropping its classification. A mapping selected in Training Log applies to historical analytics and future occurrences, and workout-log exercise responses return the resolved muscle_group. Agents can read chart-ready muscle balance data with GET /training/muscle-groups/usage, using an inclusive date range or all_time=true. Before writing, an agent can send dedup_mode: "preview"; the response reports whether VitalTrends would create, merge, or update and normalizes all timing without changing the workout or its exercise/equipment mappings. See Uploading workouts.


Option 3: MCP Server (Claude Desktop native)

The most seamless experience. The VitalTrends MCP server connects Claude Desktop directly to your data with no exports needed. Ask questions in Claude and it queries your data in real time.

Read the MCP setup guide to get started.


Privacy note

When you upload a CSV or send API data to a third-party AI (Claude.ai, ChatGPT, etc.), that data leaves VitalTrends and is subject to the AI provider's privacy policy. Use the MCP server if you prefer to keep queries server-side and minimize data exposure.