skcal API
HTTP API behind skcal, the AI-native way to manage your health. The iPhone, Android, and web apps, the CLI, and the MCP server are all clients of this typed API.
Every record is scoped to the signed-in account’s email, so one account can never read another’s data. The scale-ingest route is the one exception: it is authenticated with a bearer token and attributes readings to a configured owner.
Nutrition is logged from a freeform text description, which is sent to Claude, which returns per-item calories and protein.
https://app.skcal.fitService
Liveness and identity probes.
Weight
Body-weight readings and per-reading notes.
Measurements
Body-part circumference measurements (stored in centimetres).
Nutrition
Per-day calorie and protein totals plus AI meal logging.
- GETList daily totals
/api/nutrition - PUTUpsert a day's totals
/api/nutrition - POSTLog a meal from photos
/api/nutrition/analyze - POSTLog a meal or workout from photos
/api/log/analyze - POSTLog a meal from a description
/api/nutrition/describe - GETList meals for a day
/api/nutrition/meals - DELETEDelete a meal
/api/nutrition/meals/{id} - DELETEDelete a food item
/api/nutrition/items/{id} - GETFetch a meal photo
/api/nutrition/photo/{key}
Targets
Per-user goals: target weight, calories, and protein.
Coach
AI coach chat grounded in the caller’s targets, intake, and weight trend.
Workouts
Free-text and photo workout logging, normalized to platform-standard fields.
- POSTLog a workout from a description
/api/workouts/describe - GETList a day's workouts
/api/workouts - DELETEDelete a workout
/api/workouts/{id}
Phases
Goal phases (bulk, cut, maintain) with planned vs actual rate of weight change.
- GETList goal phases
/api/phases - POSTStart a phase
/api/phases - PATCHEdit a phase
/api/phases/{id} - DELETEDelete a phase
/api/phases/{id} - POSTEnd a phase
/api/phases/{id}/end
Training
RP-style mesocycles: volume landmarks, planned sets, logging, feedback, and progression.
- GETTraining library
/api/training/library - POSTAdd a custom exercise
/api/training/exercises - DELETEDelete a custom exercise
/api/training/exercises/{id} - GETList mesocycles
/api/training/mesocycles - POSTCreate a mesocycle
/api/training/mesocycles - GETNext workout
/api/training/current - GETGet a mesocycle
/api/training/mesocycles/{id} - PATCHEdit or end a mesocycle
/api/training/mesocycles/{id} - DELETEDelete a mesocycle
/api/training/mesocycles/{id} - GETGet a session
/api/training/mesocycles/{id}/sessions/{week}/{day} - POSTFinish a session
/api/training/mesocycles/{id}/sessions/{week}/{day}/complete - PUTRate a muscle
/api/training/mesocycles/{id}/feedback - POSTLog sets by exercise
/api/training/log - PATCHLog or edit a set
/api/training/sets/{id} - DELETEDelete a set
/api/training/sets/{id} - POSTAdd a set
/api/training/slots/{id}/sets - PATCHSwap an exercise
/api/training/slots/{id}
Dashboard
Pre-aggregated snapshot powering the home screen.
Account
The signed-in account itself, including permanent deletion.
Ingest
Token-authenticated machine ingest from the Bluetooth scale listener.
Spec
The OpenAPI document itself.