List meals for a day
curl --request GET \
--url https://app.skcal.fit/api/nutrition/meals \
--cookie __Secure-better-auth.session_token=import requests
url = "https://app.skcal.fit/api/nutrition/meals"
headers = {"cookie": "__Secure-better-auth.session_token="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: '__Secure-better-auth.session_token='}};
fetch('https://app.skcal.fit/api/nutrition/meals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.skcal.fit/api/nutrition/meals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_COOKIE => "__Secure-better-auth.session_token=",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.skcal.fit/api/nutrition/meals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cookie", "__Secure-better-auth.session_token=")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.skcal.fit/api/nutrition/meals")
.header("cookie", "__Secure-better-auth.session_token=")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.skcal.fit/api/nutrition/meals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["cookie"] = '__Secure-better-auth.session_token='
response = http.request(request)
puts response.read_body[
{
"id": "3f8b1c2a-5d6e-4f70-8a1b-2c3d4e5f6071",
"note": "lunch at the office",
"createdAt": 1782000000000,
"photoKeys": [
"nick@mintlify.com/2026-06-29/3f8b1c2a-5d6e-4f70-8a1b-2c3d4e5f6071"
],
"items": [
{
"id": 9012,
"name": "grilled chicken breast",
"kcal": 284,
"proteinG": 53.4
}
]
}
]Nutrition
List meals for a day
Returns the caller’s logged meals for a day, each with its food items, newest first.
GET
/
api
/
nutrition
/
meals
List meals for a day
curl --request GET \
--url https://app.skcal.fit/api/nutrition/meals \
--cookie __Secure-better-auth.session_token=import requests
url = "https://app.skcal.fit/api/nutrition/meals"
headers = {"cookie": "__Secure-better-auth.session_token="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: '__Secure-better-auth.session_token='}};
fetch('https://app.skcal.fit/api/nutrition/meals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.skcal.fit/api/nutrition/meals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_COOKIE => "__Secure-better-auth.session_token=",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.skcal.fit/api/nutrition/meals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("cookie", "__Secure-better-auth.session_token=")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.skcal.fit/api/nutrition/meals")
.header("cookie", "__Secure-better-auth.session_token=")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.skcal.fit/api/nutrition/meals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["cookie"] = '__Secure-better-auth.session_token='
response = http.request(request)
puts response.read_body[
{
"id": "3f8b1c2a-5d6e-4f70-8a1b-2c3d4e5f6071",
"note": "lunch at the office",
"createdAt": 1782000000000,
"photoKeys": [
"nick@mintlify.com/2026-06-29/3f8b1c2a-5d6e-4f70-8a1b-2c3d4e5f6071"
],
"items": [
{
"id": 9012,
"name": "grilled chicken breast",
"kcal": 284,
"proteinG": 53.4
}
]
}
]Authorizations
sessionCookiebearerApiKey
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.
Query Parameters
Day to list (YYYY-MM-DD). Defaults to the server's current UTC date.
Response
200 - application/json
Meals for the day, newest first.
Meal identifier.
Example:
"3f8b1c2a-5d6e-4f70-8a1b-2c3d4e5f6071"
Meal note or the original text description.
Example:
"lunch at the office"
Meal creation time as a Unix epoch in milliseconds.
Example:
1782000000000
R2 object keys of the meal's photos.
Example:
[
"nick@mintlify.com/2026-06-29/3f8b1c2a-5d6e-4f70-8a1b-2c3d4e5f6071"
]
Food items in the meal.
Show child attributes
Show child attributes
Example:
[
{
"id": 9012,
"name": "grilled chicken breast",
"kcal": 284,
"proteinG": 53.4
}
]