Spike

Spike (Spike Technologies) provides a unified health and wearables data API that connects an application to 500+ wearables, IoT devices, CGMs, EMRs, labs, and nutrition sources through a single integration - aggregating Apple Health, Garmin, Fitbit, Oura, Whoop, Dexcom, Withings, Polar, Suunto, Strava, and more. Developers authenticate end users with HMAC signatures, connect providers via hosted OAuth-style integration flows, then query normalized health data - sleep, workouts, time series metrics (heart rate, HRV, glucose, weight, SpO2, steps), daily and interval statistics, nutrition, and lab reports - over a REST API at https://app-api.spikeapi.com/v3, with outbound webhooks pushing record-change events. Spike also ships mobile SDKs (iOS, Android, Flutter, React Native), a Nutrition AI scanner, and an MCP layer for AI-ready health data.

12 APIs 0 Features
Health DataWearablesFitnessDigital HealthData AggregationHIPAA

APIs

Spike Authentication API

Authenticate an application's end users and mint a JWT access token. The application signs the application user ID with its secret using HMAC-SHA256 and exchanges the signature ...

Spike Provider Integrations API

Connect and disconnect a user's data providers. Initialize a hosted integration flow (/providers/{provider_slug}/integration/init and /init_url), receive the provider OAuth call...

Spike Provider Records API

List and retrieve normalized provider records - the discrete health data samples ingested from a user's connected providers - via /queries/provider_records, /queries/provider_re...

Spike Sleep API

Query normalized sleep sessions with stage breakdowns (awake, light, deep, REM), duration, and efficiency via /queries/sleeps and /queries/sleeps/{sleep_id}, unified across ever...

Spike Workouts API

List and retrieve workouts / physical activities with per-activity metrics (duration, distance, calories, heart rate zones) via /queries/workouts and /queries/workouts/{workout_...

Spike Time Series API

Retrieve high-resolution time series for a specified metric via /queries/timeseries, /queries/timeseries/samples, and /queries/timeseries/split (split by provider source). Metri...

Spike Statistics API

Compute aggregated statistics for metrics over time - daily rollups (/queries/statistics/daily), arbitrary intervals (/queries/statistics/interval), and interpolation (/queries/...

Spike Nutrition AI API

Create, analyze, and manage nutrition records. Analyze a food image (/nutrition_records/image), a nutrition-facts label (/nutrition_records/ingredients/label), or a free-text me...

Spike Lab Reports API

Upload lab report documents (base64) for AI extraction, then process, list, and retrieve structured biomarker results via /lab_reports, /lab_reports/process, and /lab_reports/{l...

Spike Users API

Retrieve the current authenticated user's information and connected providers (/userinfo), user properties (/userproperties), and application-level configuration and available p...

Spike SDK Push API

Ingest on-device health data pushed from the Spike mobile SDKs. The SDK posts Apple Health, Android Health Connect, and Samsung Health samples (JSON and protobuf) via /providers...

Spike Webhooks API

Outbound webhook event delivery. After data updates, Spike POSTs a JSON array of events - record_change, provider_integration_created, and provider_integration_deleted - to a we...

Collections

Pricing Plans

Spike Api Plans Pricing

4 plans

PLANS

Rate Limits

Spike Api Rate Limits

4 limits

RATE LIMITS

FinOps

Resources

🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
📰
Blog
Blog

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Spike Application User API
  version: 3.0.2
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
items:
- info:
    name: Auth
    type: folder
  items:
  - info:
      name: Authenticate with HMAC signature
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/auth/hmac
      auth:
        type: none
      body:
        type: json
        data: "{\n  \"application_id\": \"\",\n  \"application_user_id\": \"\",\n  \"signature\": \"\"\n}"
    docs: Exchange an HMAC-SHA256 signature (application_user_id signed with the application secret) for a JWT access token.
  - info:
      name: Authenticate with client token
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/auth/client_token
      auth:
        type: none
      body:
        type: json
        data: '{}'
    docs: Mint an access token using an application-level client token grant.
  - info:
      name: Authenticate with PKCS1 signature
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/auth/pkcs1
      auth:
        type: none
      body:
        type: json
        data: '{}'
    docs: Exchange an RSA PKCS1 signature for a JWT access token.
- info:
    name: Provider Integrations
    type: folder
  items:
  - info:
      name: Initialize a provider integration
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/providers/:provider_slug/integration/init
      params:
      - name: provider_slug
        value: garmin
        type: path
        description: 'Provider slug: garmin, fitbit, oura, whoop, dexcom, withings, polar, strava, and more.'
    docs: Start the hosted integration flow for a provider.
  - info:
      name: Get provider integration init URL
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/providers/:provider_slug/integration/init_url
      params:
      - name: provider_slug
        value: fitbit
        type: path
        description: Provider slug.
    docs: Returns the URL that begins the hosted integration flow, for embedding in your own UI.
  - info:
      name: Delete a provider integration
      type: http
    http:
      method: DELETE
      url: https://app-api.spikeapi.com/v3/providers/:provider_slug/integration
      params:
      - name: provider_slug
        value: oura
        type: path
        description: Provider slug.
    docs: Disconnects a provider from the current user.
- info:
    name: Provider Records
    type: folder
  items:
  - info:
      name: List provider records
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/provider_records
      params:
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Lists normalized provider records for the user, filtered by time range, provider, and metric.
  - info:
      name: Get a provider record
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/provider_records/:record_id
      params:
      - name: record_id
        value: ''
        type: path
        description: The provider record ID.
    docs: Retrieves a single normalized provider record by ID.
- info:
    name: Sleep
    type: folder
  items:
  - info:
      name: List sleeps
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/sleeps
      params:
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Lists normalized sleep sessions with stage breakdowns, duration, and efficiency.
  - info:
      name: Get a sleep session
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/sleeps/:sleep_id
      params:
      - name: sleep_id
        value: ''
        type: path
        description: The sleep session ID.
    docs: Retrieves a single sleep session by ID with full stage data.
- info:
    name: Workouts
    type: folder
  items:
  - info:
      name: List workouts
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/workouts
      params:
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Lists normalized workouts / physical activities with per-activity metrics.
  - info:
      name: Get a workout
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/workouts/:workout_id
      params:
      - name: workout_id
        value: ''
        type: path
        description: The workout ID.
    docs: Retrieves a single workout by ID with full metric detail.
- info:
    name: Time Series
    type: folder
  items:
  - info:
      name: Query time series
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/timeseries
      params:
      - name: metric
        value: heartrate
        type: query
        description: 'Metric: heartrate, heartrate_resting, hrv_rmssd, hrv_sdnn, glucose, weight, body_fat, spo2, breathing_rate,
          steps, distance, calories_burned.'
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Returns a time series for a specified metric over a time range.
  - info:
      name: Get time series samples
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/timeseries/samples
      params:
      - name: metric
        value: glucose
        type: query
        description: Metric identifier.
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Returns raw sample-level time series data for a metric.
  - info:
      name: Query time series split by provider
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/timeseries/split
      params:
      - name: metric
        value: steps
        type: query
        description: Metric identifier.
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Returns time series data for a metric split out per contributing provider source.
- info:
    name: Statistics
    type: folder
  items:
  - info:
      name: Daily statistics
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/statistics/daily
      params:
      - name: metric
        value: steps
        type: query
        description: Metric identifier.
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Returns daily aggregated statistics for a metric over a time range.
  - info:
      name: Interval statistics
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/statistics/interval
      params:
      - name: metric
        value: heartrate
        type: query
        description: Metric identifier.
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Returns statistics aggregated over a specified interval.
  - info:
      name: Interpolation statistics
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/queries/statistics/interpolation
      params:
      - name: metric
        value: glucose
        type: query
        description: Metric identifier.
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Returns interpolated statistics for a metric where gaps are filled between samples.
- info:
    name: Nutrition AI
    type: folder
  items:
  - info:
      name: List nutrition records
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/nutrition_records
      params:
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Lists nutrition records for the user over a time range.
  - info:
      name: Analyze a food image
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/nutrition_records/image
      body:
        type: json
        data: "{\n  \"image\": \"<base64>\"\n}"
    docs: Analyzes a base64 food image and returns a structured nutrition record.
  - info:
      name: Analyze a nutrition-facts label
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/nutrition_records/ingredients/label
      body:
        type: json
        data: "{\n  \"image\": \"<base64>\"\n}"
    docs: Analyzes a nutrition-facts label image and returns structured nutrition fields.
  - info:
      name: Analyze a free-text meal
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/nutrition_records/text
      body:
        type: json
        data: "{\n  \"text\": \"two eggs and toast\"\n}"
    docs: Analyzes a free-text meal description and returns a structured nutrition record.
  - info:
      name: Upload a manual nutrition record
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/nutrition_records/manual
      body:
        type: json
        data: '{}'
    docs: Creates a nutrition record from manually supplied fields.
  - info:
      name: Get a nutrition record
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/nutrition_records/:nutrition_record_id
      params:
      - name: nutrition_record_id
        value: ''
        type: path
        description: The nutrition record ID.
    docs: Retrieves a nutrition record by ID.
  - info:
      name: Modify a nutrition record
      type: http
    http:
      method: PATCH
      url: https://app-api.spikeapi.com/v3/nutrition_records/:nutrition_record_id
      params:
      - name: nutrition_record_id
        value: ''
        type: path
        description: The nutrition record ID.
      body:
        type: json
        data: '{}'
    docs: Adjusts a nutrition record, for example changing portion size.
  - info:
      name: Delete a nutrition record
      type: http
    http:
      method: DELETE
      url: https://app-api.spikeapi.com/v3/nutrition_records/:nutrition_record_id
      params:
      - name: nutrition_record_id
        value: ''
        type: path
        description: The nutrition record ID.
    docs: Removes a nutrition record.
- info:
    name: Lab Reports
    type: folder
  items:
  - info:
      name: List lab reports
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/lab_reports
      params:
      - name: start_time
        value: ''
        type: query
        description: Start of window (ISO 8601).
      - name: end_time
        value: ''
        type: query
        description: End of window (ISO 8601).
    docs: Lists lab reports for the user over a time range.
  - info:
      name: Upload a lab report
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/lab_reports
      body:
        type: json
        data: "{\n  \"document\": \"<base64>\"\n}"
    docs: Uploads a base64-encoded lab report document for AI extraction.
  - info:
      name: Get a lab report
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/lab_reports/:lab_report_id
      params:
      - name: lab_report_id
        value: ''
        type: path
        description: The lab report ID.
    docs: Retrieves a lab report by ID with structured biomarker results.
- info:
    name: Users
    type: folder
  items:
  - info:
      name: Application information
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/applicationinfo
    docs: Returns application-level configuration and available providers.
  - info:
      name: User information
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/userinfo
    docs: Returns the current authenticated user, including connected provider integrations.
  - info:
      name: User properties
      type: http
    http:
      method: GET
      url: https://app-api.spikeapi.com/v3/userproperties
    docs: Returns properties associated with the current user.
- info:
    name: SDK Push
    type: folder
  items:
  - info:
      name: Push Apple Health data
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/providers/apple/push
      body:
        type: json
        data: '{}'
    docs: Ingests Apple Health samples pushed from the Spike iOS SDK.
  - info:
      name: Push Android Health Connect data
      type: http
    http:
      method: POST
      url: https://app-api.spikeapi.com/v3/providers/health_connect/push
      body:
        type: json
        data: '{}'
    docs: Ingests Android Health Connect samples pushed from the Spike Android SDK.
bundled: true