openapi: 3.1.0
info:
title: Spike Application User Auth Provider Integrations API
description: 'Spike (Spike Technologies) unified health and wearables data API. A single integration layer that connects an application to 500+ wearables, IoT devices, CGMs, EMRs, labs, and nutrition sources - Apple Health, Garmin, Fitbit, Oura, Whoop, Dexcom, FreeStyle Libre, Withings, Polar, Suunto, Strava, and more. Applications authenticate their end users with HMAC signatures to mint a JWT access token, connect providers through hosted integration flows, then query normalized health data (sleep, workouts, time series, statistics), analyze nutrition and lab reports, and receive record-change webhooks.
This document is grounded in Spike''s published OpenAPI (v3.0.2) and public documentation at https://docs.spikeapi.com. Path, method, base URL, auth, and provider surfaces are confirmed from the official OpenAPI. Request and response schemas are modeled generically here where full component schemas were not enumerated - see endpointsModeled notes in review.yml.'
version: 3.0.2
contact:
name: Spike Technologies
url: https://www.spikeapi.com
servers:
- url: https://app-api.spikeapi.com/v3
description: Spike Application User API
security:
- bearer: []
tags:
- name: Provider Integrations
description: Connect and disconnect a user's health data providers.
paths:
/providers/{provider_slug}/integration/init:
parameters:
- $ref: '#/components/parameters/ProviderSlug'
get:
operationId: initProviderIntegration
tags:
- Provider Integrations
summary: Initialize a provider integration
description: Start the hosted integration flow for a provider (for example garmin, fitbit, oura, whoop, dexcom, withings). Redirects the user into the provider's OAuth-style consent screen.
responses:
'302':
description: Redirect to the provider authorization screen.
'401':
$ref: '#/components/responses/Unauthorized'
/providers/{provider_slug}/integration/init_url:
parameters:
- $ref: '#/components/parameters/ProviderSlug'
get:
operationId: getProviderIntegrationInitUrl
tags:
- Provider Integrations
summary: Get a provider integration init URL
description: Returns the URL that begins the hosted integration flow for a provider, for embedding in your own UI.
responses:
'200':
description: The integration initialization URL.
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/providers/{provider_slug}/integration:
parameters:
- $ref: '#/components/parameters/ProviderSlug'
delete:
operationId: deleteProviderIntegration
tags:
- Provider Integrations
summary: Delete a provider integration
description: Disconnects a provider from the current user and removes the stored authorization.
responses:
'200':
description: The integration was deleted.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/providers/{provider_slug}/integration/callback:
parameters:
- $ref: '#/components/parameters/ProviderSlug'
get:
operationId: providerIntegrationCallback
tags:
- Provider Integrations
summary: Provider OAuth callback
description: OAuth redirect callback endpoint hit by the provider after the user authorizes access. Each provider also has an explicit callback path (for example /providers/garmin/integration/callback, /providers/fitbit/integration/callback, /providers/dexcom/integration/callback).
security: []
responses:
'302':
description: Redirect back into the application after linking.
components:
parameters:
ProviderSlug:
name: provider_slug
in: path
required: true
description: Provider identifier, for example garmin, fitbit, oura, whoop, dexcom, freestyle_libre, withings, polar, suunto, strava, coros, wahoo, ultrahuman, omron_us, omron_eu, huawei, google_fit, google_health, biostrap, luna, map_my_fitness.
schema:
type: string
responses:
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing or invalid access token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
error:
type: string
message:
type: string
securitySchemes:
bearer:
type: http
scheme: bearer
bearerFormat: JWT