Skip to content
skcal
Esc
↑↓navigate↵open⌘Jpreview

Home-screen snapshot

Returns the weight summary, targets, latest measurements, shoulder-to-waist ratio, and the given day’s nutrition in one response.

GET/api/dashboard
Authorization
__Secure-better-auth.session_tokenAPI key · cookierequired

Better Auth session. Signing in (Google or email magic link) sets an HttpOnly session cookie that scopes every request to that account. The web app and CLI use this; agents use the OAuth 2.1 flow of the MCP server.

or
AuthorizationBearer token · headerrequired

Personal API key sent as Authorization: Bearer skcal_…. Create and scope keys in the app under your profile → API keys. Keys default to full access; a scoped key is limited to its granted resource:action permissions and cannot manage other keys.

Query parameters
datestring<date>

Day to report nutrition for (YYYY-MM-DD). Defaults to the server's current UTC date.

Responses
200

The dashboard snapshot.

weightWeightSummaryrequired

Latest-weight summary for the dashboard card.

Show properties
latestKgnumber | nullrequired

Most recent weight in kilograms.

weeklyAvgKgnumber | nullrequired

Mean weight over the last seven days.

bodyFatPctnumber | nullrequired

Body-fat percentage from the latest reading.

notestring | nullrequired

Note on the latest reading.

trendTrendPoint[]required

Chronological weight trend (oldest first).

Show properties
Array of TrendPoint
tsinteger<int64>required

Trend-point time as a Unix epoch in milliseconds.

kgnumberrequired

Trend-point body weight in kilograms.

targetsTargetsrequired

The user's current goals shown on the dashboard.

Show properties
idintegerrequired

Auto-increment targets-row identifier.

goalWeightKgnumber | nullrequired

Target body weight in kilograms.

startWeightKgnumber | nullrequired

Starting body weight in kilograms.

targetDateinteger<int64> | nullrequired

Goal date as a Unix epoch in milliseconds.

startDateinteger<int64> | nullrequired

Plan start date as a Unix epoch in milliseconds.

dailyKcalTargetinteger | nullrequired

Daily calorie target.

proteinTargetGinteger | nullrequired

Daily protein target in grams.

heightCmnumber | nullrequired

Height in centimeters.

sexstring | nullrequired

Sex used for calorie math.

Allowed:malefemaleothernull
measurementsLatestMeasurementLatest[]required

Latest value per measured site.

Show properties
Array of MeasurementLatest
sitestringrequired

Body site of this latest measurement.

valueCmnumberrequired

Latest circumference in centimetres.

tsinteger<int64>required

Time of the latest measurement as a Unix epoch in milliseconds.

shoulderToWaistnumber | nullrequired

Shoulder-to-waist ratio (V-taper metric).

nutritionTodayNutritionDay | nullrequired

Today's nutrition totals, or null if nothing is logged.

Show properties
One of:
NutritionDay
userEmailstring<email>required

Owning account email.

datestring<date>required

Calendar day these totals cover (YYYY-MM-DD).

kcalinteger | nullrequired

Total calories logged that day.

proteinGinteger | nullrequired

Total protein in grams logged that day.

hitProteinboolean | nullrequired

Whether the day's protein target was met.

adherencestring | nullrequired

Calorie adherence bucket for the day.

Allowed:underonovernull
null
null
phasePhase | nullrequired

The open goal phase (bulk, cut, or maintain) with its progress, or null when none is set.

Show properties
One of:
Phase
idstring<uuid>required

Phase identifier.

kindstringrequired

Phase type.

Allowed:bulkcutmaintain
startDatestring<date>required

First day.

plannedEndDatestring<date> | nullrequired

Planned last day.

endedDatestring<date> | nullrequired

Day it ended; null while it's the open phase.

activebooleanrequired

True for the open phase.

startWeightLbnumber | nullrequired

Bodyweight at the start, in pounds.

goalWeightLbnumber | nullrequired

Goal bodyweight in pounds.

ratePctPerWeeknumber | nullrequired

Planned weekly change, percent of bodyweight.

dailyKcalTargetinteger | nullrequired

The phase's daily calorie target.

proteinTargetGinteger | nullrequired

The phase's daily protein target in grams.

notestring | nullrequired

Free-text note.

progressPhaseProgressrequired

Planned vs actual rate of change, from a least-squares fit over the phase's weigh-ins.

Show properties
weeksElapsednumberrequired

Weeks since the start (to the end, for a closed phase).

weeksPlannednumber | nullrequired

Planned length in weeks.

latestWeightLbnumber | nullrequired

Latest weigh-in within the phase, in pounds.

changeLbnumber | nullrequired

Change since the start, in pounds.

plannedLbPerWeeknumber | nullrequired

Planned weekly change in pounds.

actualLbPerWeeknumber | nullrequired

Actual weekly change in pounds (null before a week of weigh-ins).

actualPctPerWeeknumber | nullrequired

Actual weekly change as a percent of start weight.

statusstringrequired

Whether the actual rate is within a third of the plan.

Allowed:on_tracktoo_fasttoo_slownot_enough_data
null
null
Try it
Server
Authorization
Parameters
Request
curl -X GET 'https://app.skcal.fit/api/dashboard' \
  -H 'Cookie: __Secure-better-auth.session_token=YOUR_API_KEY' \
  -H 'Accept: application/json'
Response
{
  "weight": {
    "latestKg": 72.6,
    "weeklyAvgKg": 72.9,
    "bodyFatPct": 17.4,
    "note": "morning, fasted",
    "trend": [
      {
        "ts": 1782000000000,
        "kg": 72.6
      }
    ]
  },
  "targets": {
    "id": 1,
    "goalWeightKg": 70,
    "startWeightKg": 78.4,
    "targetDate": 1790000000000,
    "startDate": 1782000000000,
    "dailyKcalTarget": 2100,
    "proteinTargetG": 170
  },
  "measurementsLatest": [
    {
      "site": "waist",
      "valueCm": 81.5,
      "ts": 1782000000000
    },
    {
      "site": "shoulders",
      "valueCm": 122,
      "ts": 1782000000000
    }
  ],
  "shoulderToWaist": 1.497,
  "nutritionToday": {
    "userEmail": "nick@mintlify.com",
    "date": "2026-06-29",
    "kcal": 2150,
    "proteinG": 168,
    "hitProtein": true,
    "adherence": "on"
  },
  "phase": null
}

Was this page helpful?