UFlow Cloud
EATLY

AI photo scan

POST /v1/eatly/scan — photo → calories & macros. GET /v1/eatly/quota.

POST/v1/eatly/scan
Send a food photo. The same Groq/Llama function as the Android app returns calories, protein, fat, carbs and a confidence score. One scan = one quota unit.
JSON
curl -X POST https://cloud.uflow.uz/v1/eatly/scan \
  -H "Authorization: Bearer uf_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "image_base64": "<jpeg-or-png-base64>",
    "meal_type": "lunch",
    "save": true
  }'
multipart
curl -X POST https://cloud.uflow.uz/v1/eatly/scan \
  -H "Authorization: Bearer uf_live_…" \
  -F "file=@plate.jpg" \
  -F "meal_type=lunch" \
  -F "save=true"
Response
{
  "data": {
    "foods": [
      {
        "foodItem": "Grilled chicken breast",
        "calories": 320,
        "protein": 42,
        "carbs": 0,
        "fat": 14,
        "confidence": 0.86,
        "summary": "Lean protein, moderate fat."
      }
    ],
    "meal_id": "uuid-if-save-true",
    "meal_type": "lunch",
    "quota": {
      "plan": "free",
      "limit": 2,
      "used": 1,
      "remaining": 1,
      "resets_at": "2026-08-23T19:00:00.000Z",
      "timezone": "Asia/Tashkent"
    }
  }
}

Quota

GET/v1/eatly/quota
Remaining AI scans for the Asia/Tashkent day. Free = 2, Premium = 10. Over the limit → 429 quota_exceeded.
GET
curl https://cloud.uflow.uz/v1/eatly/quota \
  -H "Authorization: Bearer uf_live_…"