---
seo:
  description: >-
    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…
sidebar:
  label: Overview
title: skcal API
---
HTTP API behind [skcal](https://skcal.fit), 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.

Version 1.0.0

Base URL: `https://app.skcal.fit`

## Service

Liveness and identity probes.

- [`GET /api/health`](/docs/api-reference/service/get-health) — Liveness probe.
- [`GET /api/whoami`](/docs/api-reference/service/whoami) — Resolve the current identity.

## Weight

Body-weight readings and per-reading notes.

- [`GET /api/weight`](/docs/api-reference/weight/list-weight) — List weigh-ins.
- [`POST /api/weight`](/docs/api-reference/weight/add-weight) — Log a weigh-in.
- [`PATCH /api/weight/{id}`](/docs/api-reference/weight/update-weight-note) — Edit a weigh-in note.

## Measurements

Body-part circumference measurements (stored in centimetres).

- [`GET /api/measurements`](/docs/api-reference/measurements/list-measurements) — List measurements.
- [`POST /api/measurements`](/docs/api-reference/measurements/add-measurement) — Record a measurement.

## Nutrition

Per-day calorie and protein totals plus AI meal logging.

- [`GET /api/nutrition`](/docs/api-reference/nutrition/list-nutrition-days) — List daily totals.
- [`PUT /api/nutrition`](/docs/api-reference/nutrition/upsert-nutrition-day) — Upsert a day's totals.
- [`POST /api/nutrition/analyze`](/docs/api-reference/nutrition/analyze-meal) — Log a meal from photos.
- [`POST /api/log/analyze`](/docs/api-reference/nutrition/analyze-any) — Log a meal or workout from photos.
- [`POST /api/nutrition/describe`](/docs/api-reference/nutrition/describe-meal) — Log a meal from a description.
- [`GET /api/nutrition/meals`](/docs/api-reference/nutrition/list-meals) — List meals for a day.
- [`DELETE /api/nutrition/meals/{id}`](/docs/api-reference/nutrition/delete-meal) — Delete a meal.
- [`DELETE /api/nutrition/items/{id}`](/docs/api-reference/nutrition/delete-item) — Delete a food item.
- [`GET /api/nutrition/photo/{key}`](/docs/api-reference/nutrition/get-meal-photo) — Fetch a meal photo.

## Targets

Per-user goals: target weight, calories, and protein.

- [`GET /api/targets`](/docs/api-reference/targets/get-targets) — Get goals.
- [`PUT /api/targets`](/docs/api-reference/targets/update-targets) — Update goals.

## Coach

AI coach chat grounded in the caller's targets, intake, and weight trend.

- [`POST /api/agent`](/docs/api-reference/coach/coach) — Ask the AI coach.

## Workouts

Free-text and photo workout logging, normalized to platform-standard fields.

- [`POST /api/workouts/describe`](/docs/api-reference/workouts/describe-workout) — Log a workout from a description.
- [`GET /api/workouts`](/docs/api-reference/workouts/list-workouts) — List a day's workouts.
- [`DELETE /api/workouts/{id}`](/docs/api-reference/workouts/delete-workout) — Delete a workout.

## Phases

Goal phases (bulk, cut, maintain) with planned vs actual rate of weight change.

- [`GET /api/phases`](/docs/api-reference/phases/list-phases) — List goal phases.
- [`POST /api/phases`](/docs/api-reference/phases/start-phase) — Start a phase.
- [`PATCH /api/phases/{id}`](/docs/api-reference/phases/update-phase) — Edit a phase.
- [`DELETE /api/phases/{id}`](/docs/api-reference/phases/delete-phase) — Delete a phase.
- [`POST /api/phases/{id}/end`](/docs/api-reference/phases/end-phase) — End a phase.

## Training

RP-style mesocycles: volume landmarks, planned sets, logging, feedback, and progression.

- [`GET /api/training/library`](/docs/api-reference/training/get-training-library) — Training library.
- [`POST /api/training/exercises`](/docs/api-reference/training/create-exercise) — Add a custom exercise.
- [`DELETE /api/training/exercises/{id}`](/docs/api-reference/training/delete-exercise) — Delete a custom exercise.
- [`GET /api/training/mesocycles`](/docs/api-reference/training/list-mesocycles) — List mesocycles.
- [`POST /api/training/mesocycles`](/docs/api-reference/training/create-mesocycle) — Create a mesocycle.
- [`GET /api/training/current`](/docs/api-reference/training/get-current-session) — Next workout.
- [`GET /api/training/mesocycles/{id}`](/docs/api-reference/training/get-mesocycle) — Get a mesocycle.
- [`PATCH /api/training/mesocycles/{id}`](/docs/api-reference/training/update-mesocycle) — Edit or end a mesocycle.
- [`DELETE /api/training/mesocycles/{id}`](/docs/api-reference/training/delete-mesocycle) — Delete a mesocycle.
- [`GET /api/training/mesocycles/{id}/sessions/{week}/{day}`](/docs/api-reference/training/get-session) — Get a session.
- [`POST /api/training/mesocycles/{id}/sessions/{week}/{day}/complete`](/docs/api-reference/training/complete-session) — Finish a session.
- [`PUT /api/training/mesocycles/{id}/feedback`](/docs/api-reference/training/set-feedback) — Rate a muscle.
- [`POST /api/training/log`](/docs/api-reference/training/log-training-sets) — Log sets by exercise.
- [`PATCH /api/training/sets/{id}`](/docs/api-reference/training/update-set) — Log or edit a set.
- [`DELETE /api/training/sets/{id}`](/docs/api-reference/training/delete-set) — Delete a set.
- [`POST /api/training/slots/{id}/sets`](/docs/api-reference/training/add-set) — Add a set.
- [`PATCH /api/training/slots/{id}`](/docs/api-reference/training/swap-exercise) — Swap an exercise.

## Dashboard

Pre-aggregated snapshot powering the home screen.

- [`GET /api/dashboard`](/docs/api-reference/dashboard/get-dashboard) — Home-screen snapshot.

## Account

The signed-in account itself, including permanent deletion.

- [`DELETE /api/account`](/docs/api-reference/account/delete-account) — Delete the caller's account.

## Ingest

Token-authenticated machine ingest from the Bluetooth scale listener.

- [`POST /api/ingest/weight`](/docs/api-reference/ingest/ingest-weight) — Ingest a scale reading.

## Spec

The OpenAPI document itself.

- [`GET /openapi.json`](/docs/api-reference/spec/get-openapi) — OpenAPI document.
