Site index
Every page on AIFitnessAPI in one place: 420 pages across 25 sections, plus the tools and the blog. Generated from the same data the pages are, so it cannot fall behind them.
Main
- Home
- Search every page and answer
- Fitness & health API directory
- Compare two APIs side by side
- Which fitness API should I use? (picker)
- Fitness API cost planner
- HealthKit ↔ Health Connect type reference
- Every HealthKit type identifier
- HealthKit identifier pages — 127 types with a page of their own
- Every HealthKit error code
- HealthKit data types by group
- HealthKit types by iOS version
- Every HealthKit metadata key
- Health Connect record types
- Every Health Connect permission string
- Every Health Connect aggregate metric
- HealthKit & Health Connect error codes
- Health Connect error codes
- Health Connect SDK releases
- Every Wear OS Health Services data type
- Every pose-estimation keypoint index, by scheme
- Wear OS data type pages — 25 constants with a page of their own
- Google Health API reference: every data type
- Every Google Health API scope
- Fitbit Web API to Google Health API mapping
- Google Health API verification and rate limits
- Google Health API webhooks
- Google Health API error codes
- MCP servers for health and fitness data
- Bluetooth GATT characteristics for fitness devices, byte by byte
- Workout types on HealthKit, Health Connect, Wear OS and the Google Health API, side by side
- Open-source health & fitness libraries
- React Native health data libraries
- Capacitor and Cordova health plugins
- Flutter health data packages
- Python libraries for fitness APIs
- Health SDK release tracker
- Why “today’s steps” is a bug (live demo)
- Changes & deadlines tracker
- API change alerts — watch what you depend on
- Monthly digest archive
- The State of Fitness APIs 2026
- How to build an AI fitness app
- AI fitness app builder guide: no code, just APIs
- Google Fit shutdown centre
- Fitbit Web API retirement centre
- Open datasets (CC BY 4.0)
- Developer API & MCP server
- Embeds & badges for your site
- Glossary
- Blog
- How we verify
- About
- Newsletter
- Privacy
Fitness APIs (17 pages)
- Fitness APIs — section index
- The Best Exercise Database APIs for Developers (2026)
- Exercise Video APIs: Which Exercise Databases Serve Video
- The Best Wearable Fitness & Health-Data APIs (2026)
- The Best Health-Data Aggregator APIs (2026)
- The Best AI Workout & Motion-Tracking APIs (2026)
- The Best Nutrition & Food Database APIs (2026)
- Free & Open-Source Fitness APIs (2026)
- Apple HealthKit vs Google Health Connect (2026)
- Terra vs Vital (Junction): Health-Data APIs Compared (2026)
- Fitbit API vs Garmin API (2026)
- Fitness API vs Building Your Own: How to Decide (2026)
- Garmin Connect IQ vs Health API vs Activity API
- Wearable Data APIs for Corporate Wellness Programs
- Wearable Data Platforms for Research Studies: Fitabase, Labfront, Empatica and Ametris
- Getting Wearable Data into Health Records with FHIR Observation
- Gym and Studio Management Software APIs (2026)
- Smart Ring APIs: Which Rings Give Developers Access (2026)
Guides (11 pages)
- Guides — section index
- Camera Pose Tracking for Fitness Apps: A Practical Guide
- How to Add Rep Counting to Your Fitness App
- How to Add Real-Time Form Feedback to a Workout App
- How to Track Workouts Without a Wearable (Camera-Only)
- How to Add AI Workout Tracking to an iOS App (Swift)
- How to Add AI Workout Tracking to an Android App (Kotlin)
- How to Add AI Workout Tracking to a React Native App
- How to Add AI Workout Tracking to a Flutter App
- How to Add AI Workout Tracking to a Web App (JavaScript)
- How to Improve Pose-Detection Accuracy in Your App
- How to Evaluate AI Motion Tracking SDKs
Build Guides (24 pages)
- Build Guides — section index
- Offline Follow-Along Video, Background Audio and Downloads for Home Workout Apps
- Camera Rep Counting, Form Feedback and Adaptive Plans for AI Fitness Coaching Apps
- Fast, Offline-First Set Logging and Progressive Overload for Strength Training Apps
- Background GPS Tracking for Running Apps on iOS and Android, Without Draining the Battery
- Pose Detection Limits on Floor Poses and Twists, and Video Streaming for Yoga Apps
- Two-Way Trainer-Client Sync and Offline Client Logging for Personal Training Apps
- Range-of-Motion Tracking and the Wellness-vs-Medical-Device Line for Physical Therapy Apps
- Aggregate-Only Employer Reporting and Wearable Sync for Corporate Wellness Apps
- Food Database Search, Barcode Scanning and Fast Logging for Nutrition Tracking Apps
- Native vs Cross-Platform, Firebase vs Supabase: Choosing a Fitness App Tech Stack
- Smoothing Noisy Weigh-Ins and Labelling Calorie Estimates in Weight Loss Apps
- Ingredient Normalisation and Shopping List Generation for Meal Planning Apps
- Sessions That Cross Midnight and Devices That Disagree in Sleep Tracking Apps
- HRV Baselines, the Cold Start and Score Versioning for Recovery Apps
- Background Audio, Interruptions and Lock-Screen Controls for Meditation Apps
- On-Device Storage, Encrypted Sync and Irregular-Cycle Prediction for Cycle Tracking Apps
- Anti-Cheat, Double-Counted Steps and Timezone-Safe Day Closes for Step Challenge Apps
- Accessibility-First Design and Passive Mobility Metrics for Senior Fitness Apps
- Bluetooth Power and Cadence Sensors, Duplicate Rides and Power Averaging in Cycling Apps
- Length Counting, Watch-Only Recording and No Bluetooth Underwater in Swimming Apps
- Offline Maps, Local-First Track Recording and Elevation Gain for Hiking Apps
- Drift-Free Background Interval Timing and Audio Cues Over Music for HIIT Apps
- Multisport Data Models, Deduplicated Imports and Combined Training Load for Triathlon Apps
- Parental Consent, Data Minimisation and Tracker-Free Screens for Kids Fitness Apps
Integration Guides (23 pages)
- Integration Guides — section index
- How to Integrate Apple HealthKit (2026)
- How to Integrate Google Health Connect (2026)
- How to Integrate the Fitbit API (2026)
- How to Integrate the Strava API (2026)
- How to Integrate the Garmin API (2026)
- How to Integrate the Oura API (2026)
- WHOOP API Developer Integration Guide (2026)
- How to Integrate Terra (Health-Data Aggregator) (2026)
- How to Integrate the Nutritionix API (2026)
- How to Integrate the ExerciseDB API (2026)
- How to Integrate the Polar API (2026)
- How to Integrate the Mindbody API (2026)
- How to Integrate the TeamUp API (2026)
- How to Integrate the Mariana Tek API (2026)
- How to Integrate the Wodify API (2026)
- How to Integrate the ABC Glofox API (2026)
- How to Integrate the Withings API (2026)
- How to Integrate Samsung Health with the Data SDK (2026)
- How to Integrate the Suunto API (2026)
- How to Integrate the COROS API (2026)
- How to Integrate the Wahoo Cloud API (2026)
- How to Integrate the Dexcom API (2026)
- How to Integrate the Concept2 Logbook API (2026)
Troubleshooting (30 pages)
- Troubleshooting — section index
- Why Is My Fitness API Returning 401 Unauthorized?
- How to Fix the OAuth redirect_uri Mismatch Error
- Why Is My Fitness API Refresh Token Not Working?
- How to Fix Fitbit API 429 (Rate Limit) Errors
- Why Is HealthKit Returning No Data?
- Why Is Google Health Connect Returning No Data?
- Why Is My Strava Webhook Not Firing?
- Why Is Wearable Data Missing or Delayed?
- Garmin API Access On Hold or Suspended? Here's What's Going On
- Garmin API for Personal Use: Garmin's Official Personal API
- Google Fit API Is Deprecated — What to Use Instead
- Oura Personal Access Tokens Are Deprecated — Here's the Fix
- Fitbit Error Code 401: What It Means and How to Fix It
- HealthKit Authorization Denied: What It Means and What It Hides
- Strava API 401 Unauthorized: What It Means and How to Fix It
- HealthKit Background Delivery Not Working: Why Your Observer Never Fires
- HealthKit errorDatabaseInaccessible: Reads Fail While the Device Is Locked
- HealthKit errorHealthDataUnavailable: The Device Does Not Support HealthKit
- HealthKit errorHealthDataRestricted: An MDM Profile Turned HealthKit Off
- HealthKit errorNoData: The Query Ran and Found Nothing
- HealthKit errorInvalidArgument: Finding the Argument HealthKit Rejected
- HealthKit errorAuthorizationNotDetermined: You Called Before You Asked
- HealthKit errorRequiredAuthorizationDenied: Clinical Records Are a Separate Class
- HealthKit Workout Session Errors: Four Cases, Two of Them Undocumented
- HealthKit errorNotPermissibleForGuestUserMode: Writes Blocked in a Guest Session
- Undocumented HealthKit Errors: Handling a Case Apple Never Described
- Health Connect SecurityException: The Permission Was Not Granted
- Health Connect SDK_UNAVAILABLE and SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED: What Each Status Means
- Health Connect changesTokenExpired: How to Resync Without Losing Data
- Health Connect ERROR_RATE_LIMIT_EXCEEDED: Quota Errors and How to Back Off
Concepts (13 pages)
- Concepts — section index
- What Is a Fitness API?
- What Is a Health-Data Aggregator?
- On-Device vs Cloud Health Data: What's the Difference?
- What Is OAuth 2.0 (and How Health APIs Use It)?
- What Are Webhooks (and Why Fitness APIs Use Them)?
- What Is Pose Estimation (for Fitness Apps)?
- What Is HRV (Heart Rate Variability)?
- What Is VO2 Max (and How Do Wearables Estimate It)?
- What Are Sleep Stages (Awake, Light, Deep, REM)?
- How Do Fitness Apps Estimate Calories Burned?
- Webhooks vs. Polling for Fitness Data: How to Decide
- What Are OAuth Scopes (and How Health APIs Grant Them)?
- What Is RPE (Rating of Perceived Exertion)?
Alternatives (17 pages)
- Alternatives — section index
- The Best Fitbit API Alternatives (2026)
- Google Fit API Alternatives (It's Deprecated) (2026)
- Garmin API Alternatives for Private Use and Production (2026)
- The Best Strava API Alternatives (2026)
- The Best Oura API Alternatives (2026)
- The Best WHOOP API Alternatives (2026)
- Apple HealthKit Alternatives (2026)
- The Best Terra (tryterra.co) Alternatives (2026)
- The Best Nutritionix Alternatives (2026)
- The Best ExerciseDB Alternatives (2026)
- The Best wger Alternatives (2026)
- KinesteX Alternatives, From the Team Behind KinesteX (2026)
- Human API Alternatives for Wearable, Lab and Medical-Record Data (2026)
- MediaPipe Pose Alternatives, Matched to the Reason You Need One
- QuickPose Alternatives, Routed by Why You Are Leaving
- Sency Alternatives, Routed by Why You Are Leaving
- OpenPose Alternatives, Matched to the Reason You Are Leaving
Compliance (23 pages)
- Compliance — section index
- Does My Fitness App Need to Be HIPAA Compliant?
- GDPR for Fitness Apps: What Developers Need to Know
- Is Fitness Data PHI? PII, PHI, and Health Data Untangled
- Does the FDA Regulate Fitness Apps?
- Apple App Store Health Data Rules: What You Need to Ship a HealthKit App
- What does Google Play's health data policy require?
- How to Store Health Data Securely
- How to Get Valid User Consent for Health Data
- What Does a Fitness App Privacy Policy Need to Include?
- Health Data Retention and Deletion: A Developer's Guide
- App Store Guideline 5.1.3: Health and Health Research
- App Store Guideline 5.1.1: Data Collection and Storage
- App Store Guideline 5.1.2: Data Use and Sharing
- App Store Guideline 1.4.1: Physical Harm and Medical Apps
- App Store Guideline 2.5.1: Software Requirements and HealthKit
- Publishing a Health Connect App on Google Play: What's Required
- App Store Guideline 3.1.3(d): Person-to-Person Fitness Training
- App Store Guideline 2.5.4: Background Modes for Workout Apps
- App Store Guideline 2.5.11: SiriKit and Shortcuts in Fitness Apps
- Apple Health Icon, Badge and Naming Rules for HealthKit Apps
- The FTC Health Breach Notification Rule for Health and Fitness Apps
- Washington's My Health My Data Act for Fitness and Health Apps
- Remote Patient Monitoring Devices: What Medicare Requires of the Data
Migrations (11 pages)
- Migrations — section index
- How to migrate from Google Fit to Health Connect
- Migrating from the Fitbit Web API to the Google Health API
- Adding Android to a HealthKit app
- Consolidate wearables: replace direct integrations with one aggregator
- Migrate from an aggregator to direct provider integrations
- How to switch from one health data aggregator to another
- Migrate from polling to webhooks for a fitness API
- Adapting Your Integration to Strava's API Changes Since 2024
- Keep Users Connected During a Fitness API Migration
- Migrate off a deprecated fitness API
- Fitbit Data for Research Studies After the Web API Turndown
Pricing (17 pages)
- Pricing — section index
- Fitbit API Pricing: What Does It Actually Cost?
- Garmin API Pricing: What Does It Actually Cost?
- Strava API Pricing: What Does It Actually Cost?
- Oura API pricing: what it actually costs
- WHOOP API Pricing: What Does It Actually Cost?
- Health data aggregator API pricing: what Terra, Junction, Rook, Spike and four more charge
- What does a nutrition API cost?
- Exercise Database API Pricing: What Does It Cost?
- Are Fitness APIs Free? An Honest Overview
- How Much Does a Fitness API Cost?
- Fitness API Free Tiers Compared: What Free Actually Includes
- Sahha API pricing: plans, per-user costs and what each tier includes
- Thryve API pricing: Start Up, Scale Up and what each plan includes
- Mindbody API Pricing: What Each Call Costs
- QuickPose Pricing: SDK Plans by Monthly Active Device
- Sency Pricing: SencyMotion Plans by Monthly Active User
- Polar API Pricing: Is the AccessLink API Free?
Comparisons (24 pages)
- Comparisons — section index
- Oura vs WHOOP: Which API for Your App?
- Fitbit vs Apple Watch: Which for Your App?
- Strava vs Garmin: Which API for Your App?
- Fitbit vs Oura API: Which for Your App?
- WHOOP vs Garmin: Which for Your App?
- Terra vs ROOK: Which Aggregator API for Your App?
- Terra vs Spike Health: Which Aggregator for Your App?
- Nutritionix vs Edamam: Which Nutrition API to Use?
- Edamam vs Spoonacular: Which Nutrition API?
- ExerciseDB vs wger: Which Exercise API for Your App?
- ExerciseDB vs free-exercise-db: Hosted API or Open Dataset?
- KinesteX vs Sency: Which Motion Tracking SDK?
- KinesteX vs QuickPose: Decide by How Much You Want to Build
- KinesteX vs MediaPipe: Which Layer Do You Want to Own?
- Apple Watch vs WHOOP: Which for Your App?
- Apple Watch vs Garmin: Which Should You Build On?
- Rook vs Spike: Which Health-Data API Fits Your Build?
- USDA FoodData Central vs Open Food Facts: Which Free Food Data?
- Terra vs Thryve: Which Wearable Data API for Your App?
- Terra vs Open Wearables: Managed API or Self-Hosted Open Source?
- Terra vs Sahha: Which Health Data API for Your App?
- QuickPose vs Sency: Pose Toolkit or Motion Product?
- MediaPipe vs MoveNet: 33 Landmarks in 3D or 17 Keypoints Fast?
- MediaPipe vs YOLO Pose: One Person in 3D or Everyone in 2D?
Health Data (29 pages)
- Health Data — section index
- Heart Rate API: How to Get Heart-Rate Data Into Your App
- HRV API: How to Get Heart Rate Variability Data
- VO2 Max API: How to Get VO2 Max Data
- Blood Oxygen (SpO2) API: How to Get SpO2 Data
- Sleep Tracking API: How to Get Sleep Data Into Your App
- Step Counting API: How to Get Step Data
- Workout Detection API: Get Recorded Workout Sessions
- GPS Activity API: How to Get Route Data from Workouts
- Calorie Tracking API: How to Get Calorie Data
- Body Composition API: Weight, Body Fat, and Lean Mass Data
- Menstrual Cycle API: How to Get Cycle Tracking Data
- Blood Glucose API: How to Get Glucose Data Into Your App
- Blood Pressure API: How to Read BP Data In Your App
- Respiratory Rate API: How to Get Breathing-Rate Data
- State of Mind API: How to Read and Write Mood Data in HealthKit
- Medications API: Reading Medication and Dose Logs From HealthKit
- Mental Health Assessments API: PHQ-9 and GAD-7 in HealthKit
- Clinical Records API: Reading FHIR Health Records in HealthKit
- Health Connect Medical Records API: FHIR Data on Android
- Resting Heart Rate API: How to Read RHR From HealthKit and Health Connect
- Body Temperature API: Core, Skin and Wrist Temperature Data
- ECG API: Electrocardiogram and Irregular Rhythm Data
- Distance Tracking API: Walking, Running and Activity Distance by Platform
- Floors Climbed and Elevation API: Floors, Elevation Gain and Altitude
- Active Minutes API: Activity Intensity, Exercise Time and Sedentary Time
- Heart Rate Zones API: Zone Thresholds and Time in Zone
- Cycling Power API: Power, Cadence and Speed Data Across Platforms
- Running Metrics API: Speed, Power, Stride Length and Running Form Data
- Swimming Data API: Strokes, Laps and Swim Distance by Platform
AI Motion (28 pages)
- AI Motion — section index
- Pose Estimation Models Compared: MediaPipe, MoveNet, YOLO and More
- 2D vs 3D Pose Estimation for Fitness Apps
- Pose Estimation Accuracy: What It Means and What Drives It
- Multi-Person Pose Tracking: Top-Down vs Bottom-Up
- On-Device vs Cloud Pose Estimation: Which to Choose
- Real-Time Pose Estimation: Frame Rate, Latency, and Model Trade-offs
- Pose Estimation Hardware Requirements: What You Actually Need
- How Rep Counting Works: The Algorithm Explained
- How Camera-Based Form Feedback Works
- Build vs Buy: AI Motion Tracking
- MediaPipe Pose Landmarker Models: Lite vs Full vs Heavy
- VNDetectHumanBodyPoseRequest: Apple Vision Body Pose on iOS
- Pose Estimation Model Licenses: Which Can You Ship Commercially?
- MoveNet Lightning, Thunder and MultiPose: Inputs, Outputs and Licence
- ML Kit Pose Detection: Base vs Accurate SDK, Landmarks and Limits
- Ultralytics YOLO Pose Models: Sizes, Keypoint Output and Licence
- RTMPose (MMPose): Model Sizes, Keypoint Sets and Deployment
- OpenPose Models: BODY_25 vs COCO, Output Format and Licence
- Squat Detection With Pose Estimation: Landmarks, Camera, Rep Logic
- Push-Up Counter With Computer Vision: Landmarks, Camera, Rep Logic
- Lunge Detection With Pose Estimation: Landmarks, Camera, Rep Logic
- Plank Detection With Pose Estimation: Landmarks, Camera, Hold Logic
- Deadlift Pose Estimation: Landmarks, Camera, Rep Logic
- Bicep Curl Counter With Pose Estimation: Landmarks, Camera, Rep Logic
- Jumping Jack Counter With Pose Estimation: Landmarks, Camera, Rep Logic
- Sit-Up Counter With Pose Estimation: Landmarks, Camera, Rep Logic
- Pull-Up Counter With Computer Vision: Landmarks, Camera, Rep Logic
- Overhead Press Pose Estimation: Landmarks, Camera, Rep Logic
AI Features (12 pages)
- AI Features — section index
- AI Workout Plan Generation: How to Build One That Ships
- AI Food Logging: Text and Photo Nutrition Entry That Actually Works
- Personalizing Your App With a User's Own Wearable Data
- Grounding an LLM in Your Exercise Database
- Writing the System Prompt for an AI Fitness Coach
- AI vs Rules-Based Coaching: Where a Language Model Actually Helps
- How to Evaluate an AI Fitness Feature
- Guardrails for an LLM That Gives Fitness Advice
- Choosing an LLM for a Fitness App: Pick by Job, Not by Leaderboard
- What Does an AI Fitness Feature Cost to Run?
- Structured Output for Workout Plans: Constraining What the Model Returns
- Connecting Wearable Data to AI Assistants Safely
Architecture (15 pages)
- Architecture — section index
- Incremental Sync: Reading Only What Changed Since Last Time
- Backfilling Years of Wearable Data Without Hitting Rate Limits
- Background Sync That Does Not Depend on the Phone Waking Up
- Webhook ingestion for health data: making at-least-once delivery safe
- Mapping Users to Wearable Provider Accounts and Devices
- Deduplicating Health Data From Multiple Sources
- Normalizing wearable data across providers
- Timezones and Day Boundaries: Whose Midnight Defines the Day?
- Missing Data and Gaps in Health Metrics
- How Should You Store Health Time-Series Data?
- Resolving Sync Conflicts in an Offline-First Workout Log
- Versioning Derived Metrics and Recomputing Health History
- Monitoring a Health Data Pipeline for Silent Failures
- Deleting and Exporting a User's Health Data
- Caching Fitness API Responses Without Serving Stale Health Data
Testing (14 pages)
- Testing — section index
- How to Test a HealthKit Integration
- Test Data for Health Connect: Fakes, the Toolbox, and the Generators You Write
- Mock Wearable Data That Is Ugly Enough to Find Bugs
- Testing Background Sync: Three Tests, and Only One Is Real
- Testing an OAuth Integration: The Token Lifecycle, Not the Login Screen
- Provider Sandboxes: Build the Fake, Keep One Real Account
- Testing Webhooks Locally: Replay Signed Payloads, Not Just the Handshake
- Testing 429 Rate-Limit and Outage Handling in a Health Backfill
- Testing Camera Features When You Have No Camera
- Testing Pose Estimation Accuracy with a Regression Corpus
- How to Test a Rep Counting Algorithm
- CI for an App That Needs a Real Device
- Testing Offline Sync and Conflict Resolution
- Testing That a User's Health Data Is Actually Deleted
Cookbook (8 pages)
- Cookbook — section index
- Recipe: Single-Flight Refresh-Token Rotation
- Recipe: A Replay-Safe Health Webhook Receiver
- Recipe: A Rate-Limit-Aware Fetch Wrapper
- Day-Boundary Rollup: Grouping Samples by Civil Date
- Rep Counter: A State Machine and the Scorer That Guards It
- Backfill Checkpointer: A Resumable Window Walker
- Recipe: Interval-Wise Dedupe for Multi-Source Health Samples
- Recipe: Anchor and Token Bookkeeping for Incremental Sync
Connected Devices (12 pages)
- Connected Devices — section index
- Connect a Bluetooth Heart Rate Monitor to Your App (2026)
- Reading Cycling Power, Cadence, and Speed Sensors in an App
- What Is FTMS? The Bluetooth Fitness Machine Service (2026)
- Treadmill App Integration: Reading FTMS Treadmill Data
- Smart Bike Trainer Integration: FTMS and Cycling Power
- Getting Rowing Machine Data Into an App (2026)
- Live Heart Rate From Apple Watch in Your App (2026)
- Wear OS Health Services for Live Workout Data (2026)
- ANT+ vs Bluetooth for Fitness Sensors (2026)
- Web Bluetooth for Fitness Apps in the Browser (2026)
- Core Bluetooth for Fitness Devices on iOS (2026)
- Testing Bluetooth Fitness Device Integrations (2026)
Engagement & Retention (17 pages)
- Engagement & Retention — section index
- Push Notifications for a Fitness App: Permissions and Payload
- Live Activities for Workout Tracking on iOS
- Fitness App Widgets and Watch Complications
- Wear OS Ongoing Activity for Workout Tracking
- ActivityKit Live Activity for an Ongoing Workout
- App Intents: Start a Workout from Siri and Shortcuts
- Android Live Updates for an Ongoing Workout Notification
- Engagement SDKs for Fitness Apps: The Categories, Honestly
- Streaks and Habit Loops in a Fitness App
- Leaderboards and Challenges in a Fitness App
- Adding Social Features to a Fitness App
- Gamification in Fitness Apps: Which Mechanics Fit Exercise
- Does Camera Coaching Improve Retention?
- How to Measure Retention in a Fitness App
- A/B Testing an Engagement Feature
- Fitness App Engagement Metrics That Matter
- Notification Fatigue and Opt-Out in Fitness Apps
Watch Apps (17 pages)
- Watch Apps — section index
- Anatomy of a watchOS Workout App
- HealthKit on Apple Watch: What Changes on the Wrist
- Background Execution on Apple Watch: Two Mechanisms
- WorkoutKit: Scheduling Workouts Into Apple's Workout App
- Mirroring an Apple Watch Workout to iPhone
- Wear OS Fitness App Anatomy: Standalone or Not (2026)
- Wear OS Exercise Tracking with Health Services (2026)
- Wear OS Tiles for a Fitness App (2026)
- Wear OS Phone Sync: The Data Layer and Its Limits (2026)
- watchOS vs Wear OS: Building the App That Runs on the Watch
- Watch App Battery: The Constraint That Decides Scope
- Testing Watch Apps Without a Watch on Every Desk
- CustomWorkout, IntervalBlock and WorkoutScheduler in Swift
- HKWorkoutSession Lifecycle in Swift: Start, Stop, Save
- startMirroringToCompanionDevice: The Mirrored Workout API
- ExerciseClient in Kotlin: Capabilities to endExerciseAsync
- PassiveMonitoringClient and MeasureClient on Wear OS
Accessibility (12 pages)
- Accessibility — section index
- VoiceOver and the numbers that change during a set
- TalkBack and the Android workout screen
- What to call an exercise, a set and a rep range
- Making a health chart readable without the chart
- Dynamic Type on a workout screen: what breaks at 200 percent
- Touch targets when the hand is shaking
- Colour contrast when the screen is in sunlight
- Reduce Motion in a coaching interface
- Gestures and hands-free control during a workout
- Haptics when the audio channel is already busy
- Captions, subtitles and audio descriptions for workout video
- Testing accessibility in a fitness app
Audio Coaching (12 pages)
- Audio Coaching — section index
- playback or ambient: choosing the AVAudioSession category for workout cues
- duckOthers: lowering the user's music for a workout cue, then giving it back
- Spoken workout cues with AVSpeechSynthesizer, and when to stay quiet
- Audio interruptions during a workout on iOS: calls, Siri and the cue that never comes back
- Background audio for an iPhone workout app: UIBackgroundModes audio, and what it does not promise
- Headphones out mid-run: route changes on iOS and AUDIO_BECOMING_NOISY on Android
- Android audio focus for workout cues: AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
- AUDIOFOCUS_REQUEST_FAILED in the background on Android 15: your cue needs a foreground service
- TextToSpeech workout cues on Android: initialization, focus, queue and completion
- Which AudioAttributes usage a workout coaching cue should declare
- Audio cues on the wrist: Wear OS speakers, Bluetooth, and Apple Watch workout sessions
- Testing workout audio cues: calls, Siri, Bluetooth and the podcast that never resumes
HealthKit Queries (9 pages)
- HealthKit Queries — section index
- HKSampleQuery: a one-time snapshot of matching samples
- HealthKit query predicates: predicateForSamples, HKQueryOptions and HKSamplePredicate
- HKStatisticsQuery: one sum, average or extreme over a window
- HKStatisticsCollectionQuery: daily totals, anchorDate and intervalComponents
- HKAnchoredObjectQuery: new samples, deleted objects and the HKQueryAnchor
- HKObserverQuery and enableBackgroundDelivery: how the pair works
- HealthKit async/await queries: HKSampleQueryDescriptor and the other descriptors
- HKWorkoutRouteQuery: reading a workout's GPS route in batches
- HKActivitySummaryQuery: reading Move, Exercise and Stand rings
Phone Sensors (10 pages)
- Phone Sensors — section index
- CMPedometer: steps, distance, floors and cadence from the phone itself
- CMMotionActivityManager: walking, running, driving or still
- CMAltimeter: relative and absolute altitude on iPhone and Apple Watch
- CMHeadphoneMotionManager: head motion from AirPods
- CMBatchedSensorManager: high-frequency motion batches during workouts
- Sensor.TYPE_STEP_COUNTER vs TYPE_STEP_DETECTOR on Android
- The Activity Recognition Transition API and the ACTIVITY_RECOGNITION permission
- The Recording API on mobile: steps without Health Connect
- foregroundServiceType="health": permissions, prerequisites and exceptions
- Android 16: BODY_SENSORS gives way to android.permission.health
Health Connect API (15 pages)
- Health Connect API — section index
- readRecords and ReadRecordsRequest: paging with pageSize and pageToken
- aggregate() and AggregateRequest: totals, averages and deduplicated sources
- aggregateGroupByDuration vs aggregateGroupByPeriod: fixed buckets or calendar buckets
- getChanges and getChangesToken: incremental sync from Health Connect
- insertRecords and clientRecordId: how Health Connect upserts
- deleteRecords: deleting Health Connect records by id, client id or time range
- PermissionController: requesting, checking and revoking Health Connect permissions
- READ_HEALTH_DATA_IN_BACKGROUND: reading Health Connect data from a background worker
- READ_HEALTH_DATA_HISTORY: reading Health Connect data older than 30 days
- Health Connect Metadata: recordingMethod, Device and the fields Health Connect fills in
- HealthConnectFeatures.getFeatureStatus: checking what the user's Health Connect supports
- Health Connect exercise routes: ExerciseRouteResult and the per-session consent flow
- PlannedExerciseSessionRecord: training plans in Health Connect
- Health Connect permission UI: Google's guidance for onboarding, requests and settings
- HealthKit to Health Connect: the API equivalents, call by call
Posts
- Health Connect SDK: 32 Releases, One Stable
- Health Connect Has 219 Permissions
- The Fitness API Cost Your Users Pay
- 'No Data' Means Four Different Things
- HRV: Apple Watch SDNN vs Health Connect RMSSD
- Apple's Newest HealthKit Types Are a Roadmap
- The HealthKit Error That Never Fires
- 58 HealthKit Types Apple Never Explains
- HealthKit: 127 of 240 Types Are iOS 8.0
- Four Ways an API Says Contact Sales
- 12 of 24 Fitness APIs Have an Approval Gate
- Welcome to AIFitnessAPI
- How to Choose a Fitness API in 2026