Log a body measurement
log_body_measurementAdds- What it does
- Adds a new record and leaves what you had alone. Safe to retry: the same call twice changes nothing more.
- Permission
- Body measurements, change
measurements:write
What your assistant is told
Log a body-measurement entry for the calling user. Pass weightKg for a quick weigh-in, bodyFatPercent for a body-composition reading, or circumferences for a tape session — any combination. At least one of the three is required. takenAt is optional and defaults to now — pass an ISO 8601 datetime if logging for an earlier moment. Returns the new entry's id. Reusing an idempotencyKey that already landed returns that entry instead of a second one — except for an entry you are not allowed to see (a weigh-in imported from the user's scale or watch while the assistant switch for imported data is off), which is refused as an id already in use, like any id that is not yours. Generate a fresh key per logging attempt and that never comes up.
Parameters
weightKgnumber, optionalBodyweight in kilograms. Omit for tape-only sessions.bodyFatPercentnumber, optionalBody-fat percentage as a plain percent, 2-70, one decimal (12.5 means 12.5%). Never a fraction and never converted — it reads the same whatever units the user prefers. Only log what the user measured or was told; never estimate it from weight or tape readings.circumferenceslist of object, optionalTape readings, in centimetres, per site. Allowed sites: Waist, Hips, Chest, Bicep, Thigh, Calf, Neck, Shoulders (case-insensitive).notestext, optionalOptional free-text note (e.g. "fasted morning").takenAtdate and time, optionalOptional ISO 8601 datetime the reading was taken. Defaults to now.idempotencyKeyid, optionalOptional UUID you generate for THIS write, so retrying it is safe. Pass the SAME key when you retry a call that timed out or errored with an unclear outcome: the server returns the record the first attempt created instead of writing a second one. Generate a fresh key per distinct write — reusing one is how you'd silently skip a second, genuinely new entry. Omit it and every call writes a new record.clientHandletext, optionalOptionalclient_handlefromlist_clientsto run this tool against a coached client's data instead of your own. Omit (or pass null) for your own data — the legacy default.