Documentation
Anonymized, k-anonymity-gated aggregates from a young-adult health panel: survey distributions, symptom radar, behavioral cohorts and AI signal reports, as plain JSON over HTTPS. Base URL: https://saviorofhealth.app/api/v1
No individual records. Slices under k=5 are suppressed server-side.
Keys issued per organization after manual review. Revocable any time.
Per-plan daily limits. Every call is logged.
Authentication
Every request needs your access key in the Authorization header. Keys look like hs_live_…, are shown exactly once at issuance, and are stored by us only as a SHA-256 hash. Each key carries scopes (e.g. insights:read). Calls outside your scopes return 403.
curl https://saviorofhealth.app/api/v1/insights \ -H "Authorization: Bearer hs_live_xxxxxxxxxxxxxxxxxxxx"
Plans & rate limits
Limits reset at 00:00 UTC. Exceeding them returns 429. Check consumption any time via /api/v1/meta/usage.
k-Anonymity
Every aggregate slice must contain at least k = 5 distinct respondents. Below that, the API suppresses the slice: distributions return empty with "suppressed": true, time-series points return "value": null. This is enforced server-side and cannot be bypassed by any key. Raw personal records are never exposed through any endpoint. Reporting windows are fixed (7 / 30 / 90 / 365 days) and cohort sizes are rounded to the nearest 5, so overlapping queries cannot be differenced down to one person. Every response carries the license line: aggregate-only, no re-identification.
/api/v1/surveysinsights:readCatalog of every active survey question on the panel, with live response volume. Use the returned key with /insights/{key}.
curl https://saviorofhealth.app/api/v1/surveys \ -H "Authorization: Bearer $HS_KEY"
{
"surveys": [
{
"key": "survey-sleep",
"type": "survey",
"category": "sleep",
"question": "How many hours did you sleep last night?",
"options": ["Under 5", "5–6", "7–8", "8 or more"],
"predict": true,
"sponsor": "Longevity Research Collective",
"responses": 1204
}
]
}/api/v1/insightsinsights:readAnswer distributions + age-cohort splits for every survey that clears the k-anonymity gate.
curl https://saviorofhealth.app/api/v1/insights \ -H "Authorization: Bearer $HS_KEY"
{
"insights": [
{
"key": "survey-sleep",
"question": "How many hours did you sleep last night?",
"n": 1204,
"breakdown": [ { "option": "7–8", "n": 496, "pct": 41.2 } ],
"cohorts": [ { "cohort": "25–29", "topAnswer": "5–6", "pct": 39, "n": 402 } ]
}
]
}/api/v1/insights/{key}insights:readOne survey in depth: full distribution, cohort splits and a daily response trend.
keypathSurvey key from /surveys (e.g. survey-sleep)daysquery · int · default 30Reporting window: 7 · 30 · 90 · 365 (other values round up to the next window)curl "https://saviorofhealth.app/api/v1/insights/survey-sleep?days=30" \ -H "Authorization: Bearer $HS_KEY"
{
"insight": {
"key": "survey-sleep",
"n": 1204,
"breakdown": [ { "option": "7–8", "n": 496, "pct": 41.2 } ],
"cohorts": [ { "cohort": "25–29", "topAnswer": "5–6", "pct": 39, "n": 402 } ],
"trend": [ { "date": "2026-07-01", "n": 88 } ]
}
}/api/v1/radarradar:readLive symptom prevalence across the panel with 3-day trend deltas. An early-warning signal for what young adults are feeling right now.
regionquery · string · optionalMacro-region filter (e.g. East Asia). Omit for Global.curl "https://saviorofhealth.app/api/v1/radar?region=East%20Asia" \ -H "Authorization: Bearer $HS_KEY"
{
"radar": {
"region": "East Asia",
"signals": [
{
"key": "symptom-today",
"question": "Anything bothering you today?",
"n": 861,
"items": [
{ "option": "Fatigue", "n": 292, "pct": 33.9, "deltaPct3d": +4.1 }
]
}
]
}
}/api/v1/cohortscohorts:readBehavioral averages from health logs, grouped by age cohort or region: sleep hours, water intake, mood, exercise, meditation.
metricquery · enumsleep | water | mood | exercise | meditationbyquery · enum · default ageage | regiondaysquery · int · default 30Reporting window: 7 · 30 · 90 · 365 (other values round up to the next window)curl "https://saviorofhealth.app/api/v1/cohorts?metric=sleep&by=age&days=30" \ -H "Authorization: Bearer $HS_KEY"
{
"cohorts": {
"metric": "sleep",
"unit": "hours",
"groups": [
{ "group": "25–29", "avg": 6.4, "n": 140 }
]
}
}/api/v1/trendstrends:readDaily time series for any metric. Days with fewer than k distinct users return value: null with suppressed: true.
metricquery · enum · default responsesresponses | sleep | water | mood | exercise | meditationdaysquery · int · default 30Reporting window: 7 · 30 · 90 · 365 (other values round up to the next window)curl "https://saviorofhealth.app/api/v1/trends?metric=mood&days=30" \ -H "Authorization: Bearer $HS_KEY"
{
"trends": {
"metric": "mood",
"series": [
{ "date": "2026-07-01", "value": 3.6, "n": 74 },
{ "date": "2026-07-02", "value": null, "n": 3, "suppressed": true }
]
}
}/api/v1/demographicsdemographics:readPanel composition: how many respondents per age cohort and macro-region.
curl https://saviorofhealth.app/api/v1/demographics \ -H "Authorization: Bearer $HS_KEY"
{
"demographics": {
"panelSize": 4210,
"ageCohorts": [ { "group": "25–29", "n": 1382 } ],
"regions": [ { "group": "East Asia", "n": 2114 } ]
}
}/api/v1/panelpanel:readPanel health: total size, lifetime response volume, and a daily-active-users series.
daysquery · int · default 30Reporting window: 7 · 30 · 90 · 365 (other values round up to the next window)curl "https://saviorofhealth.app/api/v1/panel?days=30" \ -H "Authorization: Bearer $HS_KEY"
{
"panel": {
"panelSize": 4210,
"totalResponses": 58211,
"dailyActive": [ { "date": "2026-07-01", "activeUsers": 311 } ]
}
}/api/v1/campaignscampaigns:readEvery live commissioned campaign with its questions and response volumes.
curl https://saviorofhealth.app/api/v1/campaigns \ -H "Authorization: Bearer $HS_KEY"
{
"campaigns": [
{
"key": "meridian-metabolic",
"org": "Meridian Metabolic Clinic",
"kind": "clinical",
"live": true,
"questions": [ { "key": "survey-metabolic", "responses": 412 } ]
}
]
}/api/v1/my/campaignscampaigns:readFull results for campaigns commissioned by YOUR organization (matched by the client id bound to your API key, never by name). Powers the Partner Portal. Clinicians can also view this in a dashboard at /partner.
curl https://saviorofhealth.app/api/v1/my/campaigns \ -H "Authorization: Bearer $HS_KEY"
{
"org": "Meridian Metabolic Clinic",
"campaigns": [
{
"key": "meridian-metabolic",
"title": "Metabolic health & GLP-1 awareness (Q3)",
"results": [
{
"question": "Have you tried or considered a GLP-1 product?",
"n": 412,
"breakdown": [ { "option": "Considering it", "n": 178, "pct": 43.2 } ],
"cohorts": [ { "cohort": "25–29", "pct": 47, "n": 156 } ],
"trend": [ { "date": "2026-07-01", "n": 31 } ]
}
]
}
]
}/api/v1/reports/weeklyreports:readAn AI-written narrative signal report over the panel's recent data: bullet insights with numbers plus a "watch next week" line. Cached for 15 minutes.
curl https://saviorofhealth.app/api/v1/reports/weekly \ -H "Authorization: Bearer $HS_KEY"
{
"report": "• Fatigue mentions rose 4.1pp over 3 days, led by the 25–29 cohort…",
"cachedForMinutes": 15
}/api/v1/meta/usageinsights:readYour key's consumption: calls today, lifetime total, plan and daily limit.
curl https://saviorofhealth.app/api/v1/meta/usage \ -H "Authorization: Bearer $HS_KEY"
{
"usage": { "org": "Acme Research", "plan": "pro", "today": 412, "total": 12894, "dailyLimit": 10000 }
}Errors
401Missing / invalid / revoked / expired key403Key lacks the required scope, or client not approved404Unknown resource (e.g. survey key)429Daily rate limit exceeded. Retry after 00:00 UTC400Invalid parameter (message explains which)All errors are JSON: { "error": "…" }
View your survey results in a dashboard at the Partner Portal with the same key, no code needed. Programmatic access: /api/v1/my/campaigns.
Apply for an API key
We review within 2 business days and reply by email.