Fueled API for bots reading meal logs
A short guide for a bot you run yourself. Last updated October 30, 2026.
The Fueled API (application programming interface) lets a bot read your meal log. Keys are read-only. A key sees the account that created it and no other account. Create and revoke keys in the app: open You (the profile icon), then Bots.
Make a key
In You → Bots, name the key and pick one or both scopes:
| Scope | What the bot can read |
|---|---|
meals:read | What you ate: the name, the day, and the meal slot (breakfast, lunch, dinner, snacks). |
nutrition:read | Calories and macros (protein, carbs, and fat), as daily totals and, with meals:read, on each meal. |
There is no scope that writes, edits, or deletes a meal.
Call it
Send the key as a bearer token. Responses are JSON (JavaScript Object Notation). Dates are calendar days, YYYY-MM-DD, inclusive. If you omit from and to, the range is the last 30 days including today (Coordinated Universal Time). A range cannot be longer than 366 days. limit defaults to 50 and cannot be more than 100. offset defaults to 0.
Meals (needs meals:read):
curl -s \
-H "Authorization: Bearer fl_live_YOUR_KEY" \
"https://rankrebels.ai/api/fueled/v1/meals?from=2026-10-01&to=2026-10-30&limit=50"
Daily nutrition (needs nutrition:read). This response has totals, not the names of what you ate:
curl -s \
-H "Authorization: Bearer fl_live_YOUR_KEY" \
"https://rankrebels.ai/api/fueled/v1/nutrition?from=2026-10-01&to=2026-10-30"
A meal looks like this when the key has both scopes. Without nutrition:read, the calorie and macro fields are left off.
{
"ok": true,
"meals": [
{
"id": "meal_id",
"eaten_on": "2026-10-20",
"slot": "lunch",
"name": "Chicken rice bowl",
"source": "photo",
"kcal": 640,
"protein_g": 46,
"carbs_g": 62,
"fat_g": 22,
"estimate": true
}
],
"page": { "from": "2026-10-01", "to": "2026-10-30", "limit": 50, "offset": 0, "total": 1, "next_offset": null }
}
protein_g, carbs_g, and fat_g are grams. next_offset is the offset to send for the next page, or null when this page is the last.
Limits and errors
Each key can make 60 reads a minute. A burst of bad keys from one network is refused sooner than that.
| Status | Meaning |
|---|---|
200, ok: true | The page of meals or days. |
| 400 | from, to, limit, or offset is not usable. |
| 401 | The key is missing, unknown, or revoked. |
| 403 | The key does not include that scope. scope names the one required. |
| 429 | Too many reads. Wait for the number of seconds in Retry-After. |
200, ok: false | Fueled could not finish the read. The error string says why. This shape is used so the reason is not replaced by the host. |
Questions: [email protected]. The app itself is at Fueled. The privacy policy is at Privacy Policy.