{
  "apiVersion": "v1",
  "self": "https://aifitnessapi.com/api/v1/glossary",
  "title": "Fitness and health API glossary",
  "description": "The site's controlled vocabulary: each term's definition, its section, the one page that is its canonical explanation, and its stable fragment id on /glossary.",
  "source": "https://aifitnessapi.com/glossary",
  "verified": {
    "date": "2026-07-31",
    "meaning": "The review date of https://aifitnessapi.com/glossary, the page that publishes these definitions."
  },
  "license": "CC-BY-4.0",
  "licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
  "attribution": "aifitnessapi.com",
  "citeAs": "AIFitnessAPI, \"Fitness & Health API Glossary 2026,\" version 2026.1, aifitnessapi.com, https://aifitnessapi.com/datasets/fitness-api-glossary-2026.json",
  "dataset": {
    "slug": "fitness-api-glossary-2026",
    "name": "Fitness & Health API Glossary 2026",
    "version": "2026.1",
    "json": "https://aifitnessapi.com/datasets/fitness-api-glossary-2026.json",
    "csv": "https://aifitnessapi.com/datasets/fitness-api-glossary-2026.csv"
  },
  "methodology": "The controlled vocabulary behind https://aifitnessapi.com/glossary, published as data. Each term has exactly one canonical explanation on this site — the href column — and one stable fragment id, so a machine reader can cite the definition it used rather than the top of a long page. The definitions are the site's own editorial definitions written against the vendor documentation cited on the linked pages, not quotations from a standards body. Groups are our sections, not an industry taxonomy.",
  "key": "slug",
  "itemUrl": "https://aifitnessapi.com/api/v1/glossary/{slug}",
  "count": 45,
  "excluded": [],
  "fields": {
    "term": "The term as it appears in the glossary",
    "definition": "The site's definition of the term",
    "group": "Glossary section the term belongs to",
    "href": "The canonical aifitnessapi.com page explaining this term",
    "anchor": "Stable fragment on /glossary, computed by termId() in the source module",
    "id": "Absolute, citable URL of the term entry (the JSON-LD DefinedTerm @id)",
    "slug": "The term's citable /glossary fragment without its #term- prefix"
  },
  "items": [
    {
      "term": "HRV (heart rate variability)",
      "definition": "Beat-to-beat variation in heart rhythm, used as a recovery signal — but not one number: the HRV Apple Watch records into HealthKit is SDNN while Health Connect stores RMSSD, and the two are not interconvertible.",
      "group": "Health data & metrics",
      "href": "https://aifitnessapi.com/learn/what-is-hrv",
      "anchor": "#term-hrv",
      "id": "https://aifitnessapi.com/glossary#term-hrv",
      "slug": "hrv"
    },
    {
      "term": "SDNN",
      "definition": "The HRV statistic Apple Watch records into HealthKit — the standard deviation of intervals between normal heartbeats. Do not mix it with RMSSD in one column.",
      "group": "Health data & metrics",
      "href": "https://aifitnessapi.com/matrix",
      "anchor": "#term-sdnn",
      "id": "https://aifitnessapi.com/glossary#term-sdnn",
      "slug": "sdnn"
    },
    {
      "term": "RMSSD",
      "definition": "The HRV statistic Health Connect stores — the root mean square of successive interval differences. A different measure from SDNN, not a unit conversion away. HealthKit added an RMSSD identifier in iOS 27, which Apple had not described as of October 2, 2026.",
      "group": "Health data & metrics",
      "href": "https://aifitnessapi.com/data/hrv-api",
      "anchor": "#term-rmssd",
      "id": "https://aifitnessapi.com/glossary#term-rmssd",
      "slug": "rmssd"
    },
    {
      "term": "VO2 max",
      "definition": "An estimate of aerobic capacity. On consumer devices it is modeled from heart rate and pace, not measured — treat it as a trend, not a lab value.",
      "group": "Health data & metrics",
      "href": "https://aifitnessapi.com/learn/what-is-vo2-max",
      "anchor": "#term-vo2-max",
      "id": "https://aifitnessapi.com/glossary#term-vo2-max",
      "slug": "vo2-max"
    },
    {
      "term": "SpO2 (blood oxygen)",
      "definition": "Peripheral oxygen saturation from an optical sensor. A data type existing does not mean data will be there — it needs a device that measures it.",
      "group": "Health data & metrics",
      "href": "https://aifitnessapi.com/data/blood-oxygen-api",
      "anchor": "#term-spo2",
      "id": "https://aifitnessapi.com/glossary#term-spo2",
      "slug": "spo2"
    },
    {
      "term": "Sleep stages",
      "definition": "Light, deep, REM and awake segments a device infers from movement and heart rate. Definitions and boundaries differ by vendor, so they do not compare one-to-one.",
      "group": "Health data & metrics",
      "href": "https://aifitnessapi.com/learn/what-are-sleep-stages",
      "anchor": "#term-sleep-stages",
      "id": "https://aifitnessapi.com/glossary#term-sleep-stages",
      "slug": "sleep-stages"
    },
    {
      "term": "Active vs total calories",
      "definition": "Active calories are the burn above rest; total adds basal metabolic rate. Providers disagree on which they report, which is a normalization trap.",
      "group": "Health data & metrics",
      "href": "https://aifitnessapi.com/learn/how-fitness-apps-estimate-calories",
      "anchor": "#term-active-vs-total-calories",
      "id": "https://aifitnessapi.com/glossary#term-active-vs-total-calories",
      "slug": "active-vs-total-calories"
    },
    {
      "term": "Measured vs estimated",
      "definition": "Some metrics are sensed (steps, heart rate); others are modeled (VO2 max, calories, some sleep). Storing the distinction keeps you from presenting a guess as a reading.",
      "group": "Health data & metrics",
      "href": "https://aifitnessapi.com/data",
      "anchor": "#term-measured-vs-estimated",
      "id": "https://aifitnessapi.com/glossary#term-measured-vs-estimated",
      "slug": "measured-vs-estimated"
    },
    {
      "term": "HealthKit",
      "definition": "Apple's on-device health store. Not a cloud API — there is no server endpoint; your app reads it locally with permission and syncs itself.",
      "group": "Platforms & providers",
      "href": "https://aifitnessapi.com/integrate/healthkit",
      "anchor": "#term-healthkit",
      "id": "https://aifitnessapi.com/glossary#term-healthkit",
      "slug": "healthkit"
    },
    {
      "term": "Health Connect",
      "definition": "Android's on-device health store — Google's counterpart to HealthKit. Also local-only, and it deduplicates only Activity and Sleep, via its aggregate API.",
      "group": "Platforms & providers",
      "href": "https://aifitnessapi.com/integrate/google-health-connect",
      "anchor": "#term-health-connect",
      "id": "https://aifitnessapi.com/glossary#term-health-connect",
      "slug": "health-connect"
    },
    {
      "term": "Health-data aggregator",
      "definition": "A third party (Terra, Rook, and others) that normalizes many wearable and health sources behind one API — often the right buy instead of building integrations yourself.",
      "group": "Platforms & providers",
      "href": "https://aifitnessapi.com/learn/what-is-a-health-data-aggregator",
      "anchor": "#term-health-data-aggregator",
      "id": "https://aifitnessapi.com/glossary#term-health-data-aggregator",
      "slug": "health-data-aggregator"
    },
    {
      "term": "Exercise database API",
      "definition": "A catalogue of exercises with metadata and media. Watch the licensing — some open options are AGPL copyleft, which matters for closed-source apps.",
      "group": "Platforms & providers",
      "href": "https://aifitnessapi.com/fitness-apis/exercise-database-apis",
      "anchor": "#term-exercise-database-api",
      "id": "https://aifitnessapi.com/glossary#term-exercise-database-api",
      "slug": "exercise-database-api"
    },
    {
      "term": "Fitness API",
      "definition": "Any API a developer uses to get fitness or health data or content — wearables, aggregators, exercise or nutrition catalogues, or AI motion tracking. Choose by job.",
      "group": "Platforms & providers",
      "href": "https://aifitnessapi.com/learn/what-is-a-fitness-api",
      "anchor": "#term-fitness-api",
      "id": "https://aifitnessapi.com/glossary#term-fitness-api",
      "slug": "fitness-api"
    },
    {
      "term": "OAuth (for health data)",
      "definition": "The delegated-access handshake that lets a user grant your app read access to their provider account without sharing a password. The token lifecycle is where it breaks in production.",
      "group": "Integration & auth",
      "href": "https://aifitnessapi.com/learn/what-is-oauth-for-health-data",
      "anchor": "#term-oauth",
      "id": "https://aifitnessapi.com/glossary#term-oauth",
      "slug": "oauth"
    },
    {
      "term": "Webhook",
      "definition": "A provider-initiated callback telling you something changed. Most fitness webhooks are thin change-pointers, so the handler's job is usually to enqueue a fetch, not to trust the payload.",
      "group": "Integration & auth",
      "href": "https://aifitnessapi.com/learn/what-are-webhooks",
      "anchor": "#term-webhook",
      "id": "https://aifitnessapi.com/glossary#term-webhook",
      "slug": "webhook"
    },
    {
      "term": "401 vs 403",
      "definition": "A 401 means your token is bad, missing, expired or revoked; a 403 means the token is valid but lacks the scope. They point at different fixes.",
      "group": "Integration & auth",
      "href": "https://aifitnessapi.com/fix/fitness-api-401-unauthorized",
      "anchor": "#term-401-vs-403",
      "id": "https://aifitnessapi.com/glossary#term-401-vs-403",
      "slug": "401-vs-403"
    },
    {
      "term": "Rate limit / 429",
      "definition": "A provider capping your request volume. 429 is defined in RFC 6585, where the Retry-After header is optional — so design to back off even when it is absent.",
      "group": "Integration & auth",
      "href": "https://aifitnessapi.com/fix/fitbit-api-429-rate-limit",
      "anchor": "#term-rate-limit-429",
      "id": "https://aifitnessapi.com/glossary#term-rate-limit-429",
      "slug": "rate-limit-429"
    },
    {
      "term": "Refresh token rotation",
      "definition": "When a provider issues a new refresh token on every refresh. Lose the new one and the user is disconnected permanently — a case worth testing explicitly.",
      "group": "Integration & auth",
      "href": "https://aifitnessapi.com/fix/refresh-token-not-working",
      "anchor": "#term-refresh-token-rotation",
      "id": "https://aifitnessapi.com/glossary#term-refresh-token-rotation",
      "slug": "refresh-token-rotation"
    },
    {
      "term": "Pose estimation",
      "definition": "Finding body keypoints in each camera frame. A normal RGB phone camera is enough for 2D and even monocular 3D — no depth sensor required.",
      "group": "AI motion & camera",
      "href": "https://aifitnessapi.com/learn/what-is-pose-estimation",
      "anchor": "#term-pose-estimation",
      "id": "https://aifitnessapi.com/glossary#term-pose-estimation",
      "slug": "pose-estimation"
    },
    {
      "term": "2D vs 3D pose",
      "definition": "2D gives pixel coordinates; monocular 3D adds an estimated depth that is less reliable for occluded and out-of-plane joints. Say which you need.",
      "group": "AI motion & camera",
      "href": "https://aifitnessapi.com/motion/2d-vs-3d-pose-estimation",
      "anchor": "#term-2d-vs-3d-pose",
      "id": "https://aifitnessapi.com/glossary#term-2d-vs-3d-pose",
      "slug": "2d-vs-3d-pose"
    },
    {
      "term": "Rep counting",
      "definition": "Turning a keypoint stream into a count — a classification problem, tested with precision and recall against a labelled corpus, not a demo of ten push-ups.",
      "group": "AI motion & camera",
      "href": "https://aifitnessapi.com/motion/how-rep-counting-works",
      "anchor": "#term-rep-counting",
      "id": "https://aifitnessapi.com/glossary#term-rep-counting",
      "slug": "rep-counting"
    },
    {
      "term": "Form feedback",
      "definition": "Comparing joint angles and range of motion to a target. A coaching aid, not medical or physical-therapy advice — a distinction worth stating in the product.",
      "group": "AI motion & camera",
      "href": "https://aifitnessapi.com/motion/how-form-feedback-works",
      "anchor": "#term-form-feedback",
      "id": "https://aifitnessapi.com/glossary#term-form-feedback",
      "slug": "form-feedback"
    },
    {
      "term": "On-device vs cloud inference",
      "definition": "Running the model on the phone (low latency, private, no per-frame cost) versus in the cloud (heavier models, consistent, but latency and streaming-video privacy weight).",
      "group": "AI motion & camera",
      "href": "https://aifitnessapi.com/motion/on-device-vs-cloud-pose-estimation",
      "anchor": "#term-on-device-vs-cloud-inference",
      "id": "https://aifitnessapi.com/glossary#term-on-device-vs-cloud-inference",
      "slug": "on-device-vs-cloud-inference"
    },
    {
      "term": "Deduplication",
      "definition": "Resolving the same activity written by several apps or devices. Neither platform does it for raw reads the way people assume — it is a resolution layer you design.",
      "group": "Architecture & data quality",
      "href": "https://aifitnessapi.com/architecture/deduplicate-health-data",
      "anchor": "#term-deduplication",
      "id": "https://aifitnessapi.com/glossary#term-deduplication",
      "slug": "deduplication"
    },
    {
      "term": "Day boundary problem",
      "definition": "“Today's steps” is a civil-date question, not a UTC range. DST days aren't 24 hours, so a fixed window silently drops or double-counts an hour twice a year.",
      "group": "Architecture & data quality",
      "href": "https://aifitnessapi.com/day-boundaries",
      "anchor": "#term-day-boundary-problem",
      "id": "https://aifitnessapi.com/glossary#term-day-boundary-problem",
      "slug": "day-boundary-problem"
    },
    {
      "term": "Late-arriving data",
      "definition": "Health samples are not append-only — a watch syncs hours late, a user edits yesterday, a provider revises last night's sleep. Any total computed once and considered final will be wrong.",
      "group": "Architecture & data quality",
      "href": "https://aifitnessapi.com/architecture/incremental-sync",
      "anchor": "#term-late-arriving-data",
      "id": "https://aifitnessapi.com/glossary#term-late-arriving-data",
      "slug": "late-arriving-data"
    },
    {
      "term": "Idempotent ingestion",
      "definition": "Making a duplicated event a no-op. In health data a doubly-processed event silently doubles a user's calories rather than throwing, so the dedupe key is load-bearing.",
      "group": "Architecture & data quality",
      "href": "https://aifitnessapi.com/architecture/webhook-ingestion",
      "anchor": "#term-idempotent-ingestion",
      "id": "https://aifitnessapi.com/glossary#term-idempotent-ingestion",
      "slug": "idempotent-ingestion"
    },
    {
      "term": "Backfill",
      "definition": "Importing a user's history as a budgeted, resumable job — recent-first so the app is useful immediately, and chunked so a crash resumes rather than restarts.",
      "group": "Architecture & data quality",
      "href": "https://aifitnessapi.com/architecture/historical-backfill",
      "anchor": "#term-backfill",
      "id": "https://aifitnessapi.com/glossary#term-backfill",
      "slug": "backfill"
    },
    {
      "term": "Metric versioning",
      "definition": "Recording which formula produced a derived value, so improving a calorie or readiness formula doesn't silently rewrite a user's history.",
      "group": "Architecture & data quality",
      "href": "https://aifitnessapi.com/architecture/metric-versioning-and-recompute",
      "anchor": "#term-metric-versioning",
      "id": "https://aifitnessapi.com/glossary#term-metric-versioning",
      "slug": "metric-versioning"
    },
    {
      "term": "Health Connect record (Record)",
      "definition": "The unit of data in Health Connect's Jetpack client. Every data type is a class implementing the Record interface, such as StepsRecord or WeightRecord, which Google's reference calls the \"common interface shared by readable or writable records\". Each one carries a metadata object.",
      "group": "Health Connect API",
      "href": "https://aifitnessapi.com/health-connect",
      "anchor": "#term-health-connect-record",
      "id": "https://aifitnessapi.com/glossary#term-health-connect-record",
      "slug": "health-connect-record"
    },
    {
      "term": "Aggregate metric (AggregateMetric)",
      "definition": "A total Health Connect computes for you, such as StepsRecord.COUNT_TOTAL. Google's reference calls AggregateMetric an \"identifier to supported metrics for aggregation\": you pass a set of them to aggregate() and read each value from the AggregationResult it returns.",
      "group": "Health Connect API",
      "href": "https://aifitnessapi.com/health-connect/aggregate-metrics",
      "anchor": "#term-aggregate-metric",
      "id": "https://aifitnessapi.com/glossary#term-aggregate-metric",
      "slug": "aggregate-metric"
    },
    {
      "term": "Changes token",
      "definition": "Health Connect's sync cursor. getChangesToken() returns a string \"representing a point in time\" for the record types you name, and getChanges() returns the upserts and deletions since then plus the next token. Google documents that changes tokens are only valid for 30 days; an expired one sets changesTokenExpired and you re-sync.",
      "group": "Health Connect API",
      "href": "https://aifitnessapi.com/health-connect-api/getchanges-incremental-sync",
      "anchor": "#term-changes-token",
      "id": "https://aifitnessapi.com/glossary#term-changes-token",
      "slug": "changes-token"
    },
    {
      "term": "Health Connect permission (HealthPermission)",
      "definition": "A per-record-type grant such as android.permission.health.READ_STEPS or WRITE_STEPS, declared in the manifest and requested at runtime. Google defines HealthPermission as \"a permission either to read or write data associated with a Record type\". Reading in the background and reading the entire history are separate permissions.",
      "group": "Health Connect API",
      "href": "https://aifitnessapi.com/health-connect/permissions",
      "anchor": "#term-health-connect-permission",
      "id": "https://aifitnessapi.com/glossary#term-health-connect-permission",
      "slug": "health-connect-permission"
    },
    {
      "term": "getSdkStatus",
      "definition": "The availability check to run before calling Health Connect. Google documents three results: SDK_AVAILABLE (call getOrCreate), SDK_UNAVAILABLE (for example, the Android version is too low, so hide the integration) and SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED (the provider is missing or needs an update).",
      "group": "Health Connect API",
      "href": "https://aifitnessapi.com/health-connect",
      "anchor": "#term-getsdkstatus",
      "id": "https://aifitnessapi.com/glossary#term-getsdkstatus",
      "slug": "getsdkstatus"
    },
    {
      "term": "Audio session category (AVAudioSession)",
      "definition": "How an iOS app tells the system what kind of audio it makes. Apple's default session silences other background audio when the app plays, and goes quiet under the Ring/Silent switch and screen lock, so a coaching app sets a category such as playback to change that.",
      "group": "Audio coaching & workout sessions",
      "href": "https://aifitnessapi.com/audio-coaching/avaudiosession-category-workout-app",
      "anchor": "#term-audio-session-category",
      "id": "https://aifitnessapi.com/glossary#term-audio-session-category",
      "slug": "audio-session-category"
    },
    {
      "term": "Audio ducking (duckOthers)",
      "definition": "Lowering other apps' audio while yours plays instead of stopping it. Apple's duckOthers option needs the playAndRecord, playback or multiRoute category, lasts while your session is active, and Apple says to use it for a few seconds at a time. For spoken cues in an exercise app, Apple also recommends interruptSpokenAudioAndMixWithOthers.",
      "group": "Audio coaching & workout sessions",
      "href": "https://aifitnessapi.com/audio-coaching/avaudiosession-duckothers-workout-cues",
      "anchor": "#term-audio-ducking",
      "id": "https://aifitnessapi.com/glossary#term-audio-ducking",
      "slug": "audio-ducking"
    },
    {
      "term": "Audio focus (AudioFocusRequest)",
      "definition": "Android's rule that only one app holds audio focus at a time. An app requests it with an AudioFocusRequest before playing. A transient request with AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK lets music keep playing at reduced volume, and Google documents that since Android 8.0 the system ducks the other app for you.",
      "group": "Audio coaching & workout sessions",
      "href": "https://aifitnessapi.com/audio-coaching/android-audio-focus-may-duck",
      "anchor": "#term-audio-focus",
      "id": "https://aifitnessapi.com/glossary#term-audio-focus",
      "slug": "audio-focus"
    },
    {
      "term": "AVSpeechSynthesizer",
      "definition": "Apple's text-to-speech object, which \"produces synthesized speech from text utterances\". It speaks AVSpeechUtterance objects in the order queued and can pause or stop them. Apple notes the system does not retain the synthesizer, so you have to keep a reference until speech finishes.",
      "group": "Audio coaching & workout sessions",
      "href": "https://aifitnessapi.com/audio-coaching/avspeechsynthesizer-workout-cues",
      "anchor": "#term-avspeechsynthesizer",
      "id": "https://aifitnessapi.com/glossary#term-avspeechsynthesizer",
      "slug": "avspeechsynthesizer"
    },
    {
      "term": "HKLiveWorkoutBuilder",
      "definition": "The HealthKit object that, in Apple's words, \"constructs a workout incrementally based on live data from an active workout session\". It builds the HKWorkout sample while an HKWorkoutSession runs.",
      "group": "Audio coaching & workout sessions",
      "href": "https://aifitnessapi.com/watch-apps/watchos-workout-app-anatomy",
      "anchor": "#term-hkliveworkoutbuilder",
      "id": "https://aifitnessapi.com/glossary#term-hkliveworkoutbuilder",
      "slug": "hkliveworkoutbuilder"
    },
    {
      "term": "WorkoutKit",
      "definition": "Apple's framework to \"create, preview, and sync workout compositions to the Workout app\". With the user's permission, a WorkoutScheduler syncs scheduled workouts to Apple Watch, where they appear under your app's name and icon. Workout health data still comes from HealthKit.",
      "group": "Audio coaching & workout sessions",
      "href": "https://aifitnessapi.com/watch-apps/workoutkit-scheduled-workouts",
      "anchor": "#term-workoutkit",
      "id": "https://aifitnessapi.com/glossary#term-workoutkit",
      "slug": "workoutkit"
    },
    {
      "term": "Health Services (ExerciseClient)",
      "definition": "The workout client in Wear OS Health Services (androidx.health:health-services-client). Google describes ExerciseClient as the client that lets an app \"subscribe to the health data of a device during an exercise\", and it is also how an app sets exercise goals.",
      "group": "Audio coaching & workout sessions",
      "href": "https://aifitnessapi.com/devices/wear-os-health-services",
      "anchor": "#term-health-services",
      "id": "https://aifitnessapi.com/glossary#term-health-services",
      "slug": "health-services"
    },
    {
      "term": "PHI (protected health information)",
      "definition": "The HIPAA category. Whether your fitness data is PHI depends on who you are and who you share it with — a consumer app is often outside HIPAA entirely, but not always.",
      "group": "Compliance & AI",
      "href": "https://aifitnessapi.com/compliance/is-fitness-data-phi",
      "anchor": "#term-phi",
      "id": "https://aifitnessapi.com/glossary#term-phi",
      "slug": "phi"
    },
    {
      "term": "General wellness policy",
      "definition": "The FDA position that it does not intend to examine low-risk wellness products. There is no approval to claim — and diagnosis or treatment claims can push you out of it.",
      "group": "Compliance & AI",
      "href": "https://aifitnessapi.com/compliance/fda-fitness-app-regulation",
      "anchor": "#term-general-wellness-policy",
      "id": "https://aifitnessapi.com/glossary#term-general-wellness-policy",
      "slug": "general-wellness-policy"
    },
    {
      "term": "RAG / grounding",
      "definition": "Constraining an LLM to a vetted catalogue instead of free-generating. For a few-thousand-row exercise table, plain retrieval usually beats vector search.",
      "group": "Compliance & AI",
      "href": "https://aifitnessapi.com/ai/ground-llm-in-exercise-database",
      "anchor": "#term-rag-grounding",
      "id": "https://aifitnessapi.com/glossary#term-rag-grounding",
      "slug": "rag-grounding"
    },
    {
      "term": "Guardrails (health advice)",
      "definition": "The deterministic gate in front of an LLM giving exercise or nutrition guidance. A model asked to police itself in the same call gets talked out of it.",
      "group": "Compliance & AI",
      "href": "https://aifitnessapi.com/ai/llm-safety-fitness-advice",
      "anchor": "#term-guardrails",
      "id": "https://aifitnessapi.com/glossary#term-guardrails",
      "slug": "guardrails"
    }
  ]
}