Vital website screenshot

Vital

Vital (now operating as Junction, formerly tryVital) is a health-data API platform that gives digital-health, virtual-care, diagnostics, wellness, and EHR/EMR builders a single integration to wearable-device data and nationwide lab testing. Connect 300+ wearables and health devices — Apple HealthKit, Android Health Connect, Oura, Whoop, Garmin, Fitbit, Withings, Dexcom, Freestyle Libre, Withings, Polar, and the rest — through the Vital Link Widget; ingest normalized daily summaries and per-sample timeseries for sleep, activity, body, workouts, heart rate, HRV, glucose, blood pressure, SpO2, ECG, and menstrual cycle; order at-home testkits, at-home phlebotomy, walk-in / Patient Service Center lab collection, and on-site collection across all 50 U.S. states; retrieve structured biomarker results; and run Junction Sense continuous queries to turn raw data into clinically actionable insights. Backed by SOC 2 Type 2, ISO 27001, GDPR-ready, and HIPAA-compliant infrastructure with both US and EU regional deployments.

8 APIs 13 Features
Health DataWearablesLab TestingDigital HealthHealthtechHealthcareHIPAAHealthKitHealth ConnectEHREMRBiomarkersDiagnosticsContinuous Glucose MonitoringSleepActivityHeart RateWebhooksPhlebotomyLab Orders

APIs

Vital Users API

Create, list, get, update, and delete end users on the Junction (Vital) platform. Each user represents a person whose wearable, device, and lab data is ingested under your team....

Vital Link API

Connect end users to their wearable and health-data providers. Generate Link tokens that drive the Vital Link Widget, complete OAuth / email / password / demo provider flows, de...

Vital Wearables Data API

Read normalized wearable-device data across 300+ supported devices. Daily summary endpoints cover sleep, sleep cycles, activity, body composition, workouts, menstrual cycle, ECG...

Vital Lab Testing API

Order, fulfill, and retrieve lab tests across a nationwide US lab network spanning all 50 states including NY, NJ, and RI. Covers at-home testkits, at-home phlebotomy, walk-in /...

Vital Lab Report Parser API

Submit existing lab-result PDFs to be parsed and normalized into structured biomarker results. Create a lab-report parser job, then poll for status and the parsed result set — u...

Vital Sense API

Junction Sense — query and aggregation API for per-user health data. Run on-demand aggregate queries across a user's ingested wearable and lab data, fetch the result table for a...

Vital Team API

Read and administer team-level resources on the Junction (Vital) platform. Get team metadata, search team users by uuid or client_user_id, fetch the Svix webhook portal URL for ...

Vital Management API

Programmatically manage all Junction regional and global resources for your organization. Authenticated with a separate x-vital-management-api-key, this API governs organization...

Collections

Vital Link API

POSTMAN

Vital Sense API

POSTMAN

Vital Team API

POSTMAN

Vital Users API

POSTMAN

Arazzo Workflows

Vital Schedule an At-Home Phlebotomy Draw

Confirm phlebotomy coverage for an address, place an at-home order, find a slot, and book it.

ARAZZO

Vital Await Lab Order Completion and Retrieve Results

Poll an existing order until it completes, then pull its result metadata and raw results.

ARAZZO

Vital Browse Lab Tests and Inspect Markers

List your team's lab tests, fetch one in detail, and enumerate its biomarkers.

ARAZZO

Vital Cancel a Lab Order and Send the User a Portal Link

Cancel an order, confirm the cancellation, then mint a communications portal URL deeplinked to it.

ARAZZO

Vital Create a Lab Order and Poll Until Resolved

Place an order set lab order for a user and poll its lifecycle status until it completes, cancels, or fails.

ARAZZO

Vital Connect a Demo Provider and Verify Connected Sources

Create a user, attach a demo provider, then confirm the connection landed on the user record.

ARAZZO

Vital Provision a User and Hand Off a Mobile Sign-In Token

Create a Vital user, mint a mobile sign-in token, and read back the user's connected providers.

ARAZZO

Vital Onboard a User and Connect a Wearable

Create a Vital user, mint a Link token, and surface the available providers to connect.

ARAZZO

Vital Create and Register a Lab Testkit Order

Create an unregistered testkit order, register it against a sample, then read the order back.

ARAZZO

Vital Inventory a User's Connected Devices

Resolve a user by client_user_id, list their devices, and fetch the first device in detail.

ARAZZO

Pricing Plans

Vital Io Plans Pricing

4 plans

PLANS

Rate Limits

Vital Io Rate Limits

0 limits

RATE LIMITS

FinOps

Features

300+ wearable and health-device integrations

Apple HealthKit, Android Health Connect, Samsung Health, Oura, Whoop, Garmin, Fitbit, Withings, Polar, Strava, Wahoo, Cronometer, Ultrahuman, Peloton, Zwift, Hammerhead, Dexcom (G6 and G7), Freestyle Libre (cloud + BLE), Abbott LibreView, 8Sleep, Beurer, Kardia, Accu-Chek, Contour, Omron — all behind a single, normalized schema.

Vital Link Widget and Connect app

Drop-in user-facing UI that handles OAuth, email/password, and mobile-SDK connection flows. Generate a one-time Link token, hand it to the widget or Connect app, and the widget runs the full consent-and-connect handshake for any supported provider.

Nationwide lab-testing network

A single API to order at-home testkits, at-home phlebotomy, walk-in / Patient Service Center collection, and on-site collection across all 50 US states including NY, NJ, and RI — with no test upcharges and built-in operational support (result tracking, reminders, exception handling, 6-day support).

Normalized biomarker and timeseries schema

Every supported device, lab, and provider is mapped onto Vital's normalized schema so your app sees one Sleep, one Activity, one Heart Rate, one Glucose, one Biomarker — regardless of which Fitbit / Garmin / Quest / Labcorp source it came from.

Junction Sense — continuous queries

Define a continuous aggregate query once (e.g. "weekly HRV baseline", "monthly glucose time-in-range") and Junction recomputes it as new data lands. Read the materialized result table per user or run an ad-hoc query.

Webhooks with Svix-backed delivery

Daily-data created/updated events for every wearable resource, historical-pull completion, lab-test orders + appointments + critical results, lab-report parser status, provider connection events, and continuous-query result changes. Backed by Svix for retry, signing, and a per-team management portal.

ETL pipelines (BYO destination)

Pipe ingested data directly into your own infrastructure — Azure Event Hubs, Google Cloud Pub/Sub, or RabbitMQ — instead of (or in addition to) webhooks. Configurable per team.

US and EU regional deployments

Pick your data residency — production and sandbox base URLs are split into api.us.junction.com and api.eu.junction.com. Regional API key prefixes (pk_us, pk_eu, sk_us, sk_eu) prevent cross-region key reuse.

Mobile SDKs for HealthKit and Health Connect

First-party Swift, Kotlin, Flutter, and React Native SDKs that wrap Apple HealthKit and Android Health Connect, plus Bluetooth Devices SDKs for direct device pairing (Accu-Chek, Beurer BLE, Contour, Freestyle Libre BLE, Omron BLE).

Typed server SDKs (Fern-generated)

Python, TypeScript/Node, Go, and Java SDKs are generated from a single Fern API spec — keeping the SDK surface in lockstep with the underlying OpenAPI 3.1 definition.

HIPAA, SOC 2 Type 2, ISO 27001, GDPR-ready

BAA-eligible HIPAA infrastructure, SOC 2 Type 2 and ISO 27001 attestations, plus EU-region GDPR-aligned deployment. Suitable for regulated digital-health, virtual-care, and diagnostics workloads.

Sandbox with synthetic data

Dedicated sandbox environment (api.sandbox.us.junction.com / .eu.) with sk_* API keys, demo providers, and synthetic user lifecycle simulation so you can build and test without touching real PHI.

Lab report parser

Submit existing lab-result PDFs (from other labs, historical patient records) and Vital normalizes them into the same biomarker schema as Junction-fulfilled orders.

Use Cases

Virtual-first / digital-health clinics

Add wearable monitoring and ordering of standard lab panels to telehealth visits without integrating dozens of device APIs and lab vendors.

Consumer diagnostics and wellness platforms

White-label at-home testkits, deliver results in-app, and pair them with continuous wearable context (sleep, HRV, glucose) to drive coaching and lifestyle programs.

EHR / EMR and healthcare SaaS providers

Embed Junction as a labs-and-devices module inside an EHR/EMR product so customers get ordering, results, and wearable data without leaving the chart.

Cardiometabolic and CGM programs

Pull continuous-glucose-monitor data from Dexcom, Freestyle Libre, and Abbott LibreView; pair with lab biomarkers (HbA1c, lipid panel, fasting insulin); compute glucose-variability metrics with Sense.

Sleep, recovery, and performance apps

Normalized sleep, sleep-cycle, HRV, workout, and recovery data from Oura, Whoop, Garmin, Fitbit, Apple Watch, and 25+ other devices in one schema.

Women's-health and fertility platforms

Menstrual-cycle, basal-body-temperature, and hormone-panel lab data combined for cycle tracking and fertility coaching.

Population-health and research cohorts

Backfill historical wearable + lab data across thousands of users via bulk-import, bulk-pull, and historical-pull endpoints. Push to ETL pipelines for in-house analytics.

AI agents over patient health data

Expose normalized wearable + lab data to AI agents (via Naftiko capabilities or MCP) so agents can reason over a patient's biomarkers, sleep, and activity without bespoke per-source adapters.

Integrations

Apple HealthKit

First-class iOS Swift SDK plus Flutter / React Native bindings stream HealthKit categories (sleep, activity, HR, HRV, workouts, ECG, glucose, blood pressure, body) into the Vital normalized schema.

Android Health Connect

Kotlin / Flutter / React Native SDKs read from Android Health Connect — Samsung Health, Google Fit successor, Fitbit Android, and other Health Connect publishers — through one bridge.

Samsung Health

Read Samsung-Health data on Android via the Health SDK without writing Samsung-Health-specific code.

Oura, Whoop, Garmin, Fitbit, Withings, Polar

OAuth-based cloud providers, all behind one Link Widget flow and one normalized data schema.

Dexcom and Freestyle Libre (cloud + BLE)

Continuous-glucose monitoring via Dexcom cloud (v3), Freestyle Libre cloud, Abbott LibreView, and direct Bluetooth Low Energy for newer Libre models. Normalized into the glucose timeseries resource.

8Sleep, Peloton, Zwift, Hammerhead

Non-OAuth cloud providers covering connected mattresses and indoor-training platforms.

Strava, Wahoo, Cronometer, Ultrahuman

Additional OAuth providers covering endurance training, nutrition logging, and metabolic wearables.

Bluetooth devices via Devices SDK

Accu-Chek, Beurer BLE, Contour, Freestyle Libre BLE, Omron BLE — paired directly to the user's phone through the Vital Devices SDK and reported back through the same API.

ETL destinations (Azure / GCP / RabbitMQ)

Forward ingested data to Azure Event Hubs, Google Cloud Pub/Sub, or RabbitMQ for in-house analytics pipelines.

Anthropic Claude

Junction's normalized health-data API is a natural fit as a tool surface for Anthropic Claude agents — pair the Vital OpenAPI specs in this repo with Claude tool calling (or Naftiko capabilities / MCP servers) to let Claude reason over a patient's sleep, HRV, glucose, lab biomarkers, and order new lab panels under appropriate medical oversight.

Svix

Vital's webhook delivery is Svix-backed — your team can be issued a Svix management portal URL for managing webhook endpoints, signing secrets, and delivery history.

Fern

The Junction OpenAPI definition and the Python/TypeScript/Go/Java server SDKs are generated with Fern from a single source of truth (github.com/tryVital/vital-fern-api).

Solutions

For digital-health builders

One API for the two hardest health-data integrations — wearables and labs — so a small team can ship a clinical-grade product without negotiating individual vendor contracts.

For diagnostics companies

Add a software layer (ordering, results, patient app) over a managed nationwide lab network without building lab-vendor integrations or running a fulfillment ops team in-house.

For platforms adding wearable data

Replace per-device SDKs and OAuth flows with one Link Widget and one normalized timeseries + summary schema covering 300+ devices.

For enterprises

SOC 2 Type 2, ISO 27001, HIPAA, GDPR-ready, US/EU regional deployments, white-label app branding, uptime SLAs, prioritized integrations, ETL pipelines, and Analytics API access on the Scale plan.

Semantic Vocabularies

Vital Io Context

31 classes · 9 properties

JSON-LD

API Governance Rules

Vital API Rules

9 rules · 3 errors 5 warnings 1 info

SPECTRAL

JSON Structure

Vital Lab Order Structure

0 properties

JSON STRUCTURE

Vital User Structure

0 properties

JSON STRUCTURE

Example Payloads

Vital Create Order Example

2 fields

EXAMPLE

Vital Create User Example

2 fields

EXAMPLE

Vital Lab Result Example

2 fields

EXAMPLE

Vital Link Token Example

2 fields

EXAMPLE

Vital Sleep Summary Example

2 fields

EXAMPLE

Resources

🔗
PostmanWorkspace
PostmanWorkspace
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🌐
Portal
Portal
🔗
Documentation
Documentation
🔗
APIReference
APIReference
🚀
GettingStarted
GettingStarted
🚀
GettingStarted
GettingStarted
🌐
Console
Console
📝
Signup
Signup
🔗
Login
Login
💰
Pricing
Pricing
🟢
StatusPage
StatusPage
📄
ChangeLog
ChangeLog
🔗
RateLimiting
RateLimiting
🔗
Documentation
Documentation
🔑
Authentication
Authentication
🔗
Webhooks
Webhooks
🔗
Documentation
Documentation
🔗
Security
Security
👥
GitHubOrganization
GitHubOrganization
👥
GitHubRepository
GitHubRepository
👥
GitHubRepository
GitHubRepository
🔗
SampleApp
SampleApp
🔗
OpenAPI
OpenAPI
🔗
OpenAPI
OpenAPI
🔗
OpenAPI
OpenAPI
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
🔗
SampleApp
SampleApp
🔗
SpectralRules
SpectralRules
🔗
Vocabulary
Vocabulary
🔗
JSONLD
JSONLD
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Vital Wearables Data API
  version: 0.4.497
request:
  auth:
    type: apikey
    key: x-vital-api-key
    value: '{{x-vital-api-key}}'
    placement: header
items:
- info:
    name: summary
    type: folder
  items:
  - info:
      name: Get User Electrocardiogram
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/electrocardiogram/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: start_date
        value: ''
        type: query
      - name: end_date
        value: ''
        type: query
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
    docs: Get electrocardiogram summary for user_id
  - info:
      name: Get User Sleep Cycle
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/sleep_cycle/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: start_date
        value: ''
        type: query
      - name: end_date
        value: ''
        type: query
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
    docs: Get sleep cycle for user_id
  - info:
      name: Get User Profile
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/profile/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
    docs: Get profile for user_id
  - info:
      name: Get User Profile Raw
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/profile/:user_id/raw
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
    docs: Get raw profile for user_id
  - info:
      name: Get User Devices Raw
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/devices/:user_id/raw
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
    docs: Get Devices for user_id
  - info:
      name: Get User Activity
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/activity/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get activity summary for user_id
  - info:
      name: Get User Activity Raw
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/activity/:user_id/raw
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get raw activity summary for user_id
  - info:
      name: Get User Workouts
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/workouts/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get workout summary for user_id
  - info:
      name: Get User Workouts Raw
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/workouts/:user_id/raw
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get raw workout summary for user_id
  - info:
      name: Get User Sleep
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/sleep/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get sleep summary for user_id
  - info:
      name: Get User Sleep Raw
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/sleep/:user_id/raw
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get raw sleep summary for user_id
  - info:
      name: Get User Body
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/body/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get Body summary for user_id
  - info:
      name: Get User Body Raw
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/body/:user_id/raw
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get raw Body summary for user_id
  - info:
      name: Get Meals
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/meal/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Get user's meals
  - info:
      name: Get User Menstrual Cycles
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/summary/menstrual_cycle/:user_id
      params:
      - name: user_id
        value: ''
        type: path
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
      - name: end_date
        value: ''
        type: query
    docs: Get User Menstrual Cycles
- info:
    name: timeseries
    type: folder
  items:
  - info:
      name: Get User Sleep Stream
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/sleep/:sleep_id/stream
      params:
      - name: sleep_id
        value: ''
        type: path
        description: The Vital Sleep ID
    docs: Get Sleep stream for a user_id
  - info:
      name: Get User Workouts
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/workouts/:workout_id/stream
      params:
      - name: workout_id
        value: ''
        type: path
        description: The Vital ID for the workout
    docs: Get User Workouts
  - info:
      name: Workout Swimming Stroke
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/workout_swimming_stroke/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Workout Swimming Stroke
  - info:
      name: Workout Distance
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/workout_distance/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Workout Distance
  - info:
      name: Heart Rate Recovery One Minute
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/heart_rate_recovery_one_minute/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Heart Rate Recovery One Minute
  - info:
      name: Waist Circumference
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/waist_circumference/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Waist Circumference
  - info:
      name: Lean Body Mass
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/lean_body_mass/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Lean Body Mass
  - info:
      name: Body Mass Index
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/body_mass_index/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Body Mass Index
  - info:
      name: Basal Body Temperature
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/basal_body_temperature/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Basal Body Temperature
  - info:
      name: Handwashing
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/handwashing/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Handwashing
  - info:
      name: Daylight Exposure
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/daylight_exposure/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Daylight Exposure
  - info:
      name: Uv Exposure
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/uv_exposure/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Uv Exposure
  - info:
      name: Fall
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/fall/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Fall
  - info:
      name: Inhaler Usage
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/inhaler_usage/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Inhaler Usage
  - info:
      name: Peak Expiratory Flow Rate
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/peak_expiratory_flow_rate/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Peak Expiratory Flow Rate
  - info:
      name: Forced Vital Capacity
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/forced_vital_capacity/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Forced Vital Capacity
  - info:
      name: Forced Expiratory Volume 1
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/forced_expiratory_volume_1/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Forced Expiratory Volume 1
  - info:
      name: Wheelchair Push
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/wheelchair_push/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Wheelchair Push
  - info:
      name: Sleep Breathing Disturbance
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/sleep_breathing_disturbance/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Sleep Breathing Disturbance
  - info:
      name: Sleep Apnea Alert
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/sleep_apnea_alert/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Sleep Apnea Alert
  - info:
      name: Stand Duration
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/stand_duration/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        description: Provider oura/strava etc
      - name: start_date
        value: ''
        type: query
        description: Date from in YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will
          be set to 00:00:00
      - name: end_date
        value: ''
        type: query
        description: Date to YYYY-MM-DD or ISO formatted date time. If a date is provided without a time, the time will be
          set to 23:59:59
    docs: Stand Duration
  - info:
      name: Stand Hour
      type: http
    http:
      method: GET
      url: https://api.us.junction.com/v2/timeseries/:user_id/stand_hour/grouped
      params:
      - name: user_id
        value: ''
        type: path
      - name: cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: next_cursor
        value: ''
        type: query
        description: The cursor for fetching the next page, or `null` to fetch the first page.
      - name: provider
        value: ''
        type: query
        de

# --- truncated at 32 KB (86 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vital-io/refs/heads/main/apis.yml