{ "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\": \"\"\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\": \"\"\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\": \"\"\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 }