Build with Healify
Anna, our AI health coach, plus nutrition tracking, bloodwork analysis, DNA insights, and 150+ health metrics — all via a single REST API.
Authentication
JWT Bearer Token
All endpoints require a JWT in the Authorization header. Obtain a token via Apple Sign In or email auth. Tokens expire — use the refresh token to renew.
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
Base URLs
All endpoints are prefixed with /api. The dev environment is a full mirror of production — use it for integration testing.
Chat (Anna AI)
17 endpointsPrimary endpoint for all Anna AI interactions. Add ?streaming=true to get a Server-Sent Events stream. Anna auto-routes to the appropriate specialist agent (nutrition, goals, habits, metrics) based on context.
| Field | Type | Required | Description |
|---|---|---|---|
| message | string | required | User message text |
| sessionId | string | optional | Session ID for conversation continuity |
| context | object | optional | Additional context payload |
POST /api/chat/graph?streaming=true
Authorization: Bearer <token>
Content-Type: application/json
{
"message": "What should I eat for lunch given my recent bloodwork?",
"sessionId": "sess_abc123"
}
data: {"type":"token","content":"Based on your bloodwork, "}
data: {"type":"token","content":"I'd recommend focusing on..."}
data: {"type":"done","sessionId":"sess_abc123","messageId":"msg_xyz"}
Pre-warms the Anna session to minimise first-response latency. Call this when the user opens the chat screen — before they send their first message. No body required.
Confirms a pending destructive operation staged by Anna (e.g., deleting health data). Anna pauses and returns a confirmation token — pass that token here to execute.
Nutrition
13 endpointsRecords a water intake entry for the authenticated user. Returns 201 on success.
| Field | Type | Required | Description |
|---|---|---|---|
| amountMl | number | required | Water amount in millilitres (e.g. 500) |
| loggedAt | string (ISO 8601) | optional | When the water was consumed. Defaults to now. |
POST /api/nutrition/water
Authorization: Bearer <token>
Content-Type: application/json
{
"amountMl": 500,
"loggedAt": "2026-06-19T14:00:00Z"
}
Returns aggregated water intake for today plus individual log entries.
{
"totalMl": 1200,
"goalMl": 2500,
"percentage": 48,
"entries": [
{ "id": "wtr_01", "amountMl": 500, "loggedAt": "2026-06-19T08:00:00Z" },
{ "id": "wtr_02", "amountMl": 700, "loggedAt": "2026-06-19T12:00:00Z" }
]
}
Deletes a water log entry. Owner-scoped — users can only delete their own entries.
Analyse a food photo with AI vision. Returns macros, calories, and identified items. For large files use the presigned S3 flow: GET /nutrition/upload-url → upload → POST /nutrition/analyze-food-key.
{
"foods": [
{ "name": "Grilled Chicken", "calories": 220, "protein": 40, "carbs": 0, "fat": 5 },
{ "name": "Brown Rice", "calories": 215, "protein": 5, "carbs": 45, "fat": 2 }
],
"totals": { "calories": 435, "protein": 45, "carbs": 45, "fat": 7 },
"confidence": 0.91
}
Estimate nutrition for a typed food description. No image required — pass a plain text description and the AI returns estimated macros.
Log a manual food entry with raw macros or from the output of an analyze endpoint.
Returns aggregated nutrition totals for today — calories, macros, and comparison against user goals.
Returns the user's current and longest nutrition logging streak in days.
Health Data
10 endpointsProcess a comprehensive batch of health data. Supports 150+ metric types including heart rate, sleep stages, HRV, respiratory rate, steps, VO2 max, and more. Triggers AI analysis and updates the health profile.
POST /api/health/comprehensive
Authorization: Bearer <token>
Content-Type: application/json
{
"metrics": [
{
"type": "HKQuantityTypeIdentifierHeartRate",
"value": 72,
"unit": "count/min",
"startDate": "2026-06-19T08:00:00Z",
"endDate": "2026-06-19T08:00:30Z"
},
{
"type": "HKCategoryTypeIdentifierSleepAnalysis",
"value": 1,
"startDate": "2026-06-18T23:00:00Z",
"endDate": "2026-06-19T07:00:00Z"
}
]
}
AI-generated personalised health insights and home briefing. Aggregates recent health data to surface trends, anomalies, and recommendations.
Returns the complete list of supported HealthKit metric types with Apple identifiers. Validate your metric types against this list before calling /health/comprehensive.
Health Profile
6 endpointsReturns the complete unified health profile for the authenticated user — aggregated across all data sources (HealthKit, bloodwork, DNA, wearables).
Time-series trend data for health metrics. Use this to build charts and visualise progress over time.
Computes and returns the user's biomarker-based biological age. Requires sufficient health data to generate a meaningful estimate.
Returns a compact health profile summary optimised for dashboard cards — key metrics, scores, and status flags.
Bloodwork
10 endpointsStep 1 of the bloodwork upload flow. Returns a presigned S3 URL for direct file upload (PDF or image).
1. POST /api/bloodwork/presign-upload → { uploadUrl, key }
2. PUT <uploadUrl> with file binary (no auth header needed)
3. POST /api/bloodwork/confirm-upload { key } → triggers AI analysis
Returns all bloodwork reports for the authenticated user, ordered by date descending.
AI-generated plain-English explanation of a bloodwork report — out-of-range markers, trends, and actionable recommendations.
DNA Analysis
8 endpointsReturns a presigned S3 URL for direct DNA raw data file upload. Supports 23andMe and AncestryDNA .txt format. Same two-step flow as bloodwork.
Triggers asynchronous AI analysis of an uploaded DNA file. Returns immediately with a job ID. Poll GET /dna/reports for completion.
Returns a specific DNA report including genetic insights, trait analysis, and health predispositions.
Goals
5 endpointsReturns goal progress with milestone evaluation — percentage complete, estimated completion date, and recent activity.
Create one or more health goals. Anna references these when generating recommendations and coaching responses.
Update existing health goals.
Habits
9 endpointsReturns all active habits with today's completion status. Pass ?date=YYYY-MM-DD to query a specific date.
Mobile shorthand to mark a habit as complete for today. Triggers streak recalculation and Anna context update.
Generate personalised habit recommendations based on the user's health profile and goals. Not persisted — use /habits/recommendations/select to save chosen habits.
Fitness
4 endpointsToday's fitness activity ring summary (V2) — move, exercise, stand, steps, and calories.
Weight, volume, and 1RM progression history for a specific exercise. Ideal for charting strength gains over time.
Meal Plans
6 endpointsGenerate a personalised meal plan. Takes user goals, dietary preferences, and macro targets into account.
POST /api/nutrition/meal-plan
Authorization: Bearer <token>
Content-Type: application/json
{
"days": 7,
"calorieTarget": 2200,
"dietaryPreferences": ["high-protein", "no-gluten"],
"excludeFoods": ["shellfish"]
}
Integrations
8 endpointsReturns the list of available third-party integrations (wearables, health apps, lab services) users can connect.
Initiate a service connection via Pipedream Connect. Returns an OAuth authorisation URL for the user to approve.
User & Auth
18 endpointsAuthenticate with an Apple identity token. Creates an account if the user doesn't exist. Returns a JWT + refresh token.
POST /api/auth/apple
Content-Type: application/json
{
"identityToken": "eyJ...",
"authorizationCode": "c_abc123",
"fullName": { "givenName": "Jane", "familyName": "Doe" }
}
{
"accessToken": "eyJ...",
"refreshToken": "eyJ...",
"user": { "id": "usr_abc123", "email": "jane@example.com" }
}
Returns the full profile of the authenticated user — subscription status, onboarding state, health data counts, and account metadata.