Photo in, app-ready answers out.

Vision APIs for consumer apps: calories from a meal, skin analysis from a selfie, physique feedback, color season, plant ID and diagnosis, and product label scores. One key, one price per call, and JSON your app can show as it is.

$1.00 of free credit to start. No card needed.

A Margherita pizza seen from abovePhoto: Valerio Capello, CC BY-SA 3.0
POST /v1/food

0 kcal

Margherita pizza, whole, 341 g, 70% confident

Protein

0 g

Carbs

0 g

Fat

0 g

Ask the user: Was any olive oil drizzled on top or was the crust brushed with oil?

2x

more meals within 20% of the true calories

99%

of acne grades within one step of a dermatologist

93%

of Nutri-Score grades exactly right from a photo

$0.01

per call on every API, repeat photos free

See the full benchmarks

APIs

Pick the one your app needs

Every API takes a photo and returns structured JSON. Same key, same billing, same error format.

Benchmarks

Better than calling the model yourself

Each API was tested on held-out photos with expert or lab-measured answers, next to one plain call to the same model given the same task.

TruelensPlain model call

2x

more meals within 20% of the true calories

60 real meals, each weighed and measured in a lab

/v1/food
50%
100%
40%
20%
53%
35%
46%
18%

Calories within 20%

2x

Calories within 30%

+18 pts

Portion weight within 20%

2.6x
food benchmark
MeasureTruelensPlain model call
Calories within 20%40%20%
Calories within 30%53%35%
Portion weight within 20%46%18%

99%

of acne grades within one step of a dermatologist

150 faces graded by dermatologists

/v1/skin
50%
100%
55%
38%
99%
89%

Grade exactly right

+17 pts

Grade within one step

+11 pts
skin benchmark
MeasureTruelensPlain model call
Grade exactly right55%38%
Grade within one step99%89%

93%

of Nutri-Score grades exactly right

59 real supermarket label photos with published grades

/v1/label
50%
100%
93%
64%

Nutri-Score exactly right

+29 pts
label benchmark
MeasureTruelensPlain model call
Nutri-Score exactly right93%64%

88%

of species found in the top 3 answers

91 phone photos of 25 species, identified by expert reviewers

/v1/plant
50%
100%
88%
85%
77%
74%

Species in top 3

+3 pts

Species as first answer

+3 pts
plant benchmark
MeasureTruelensPlain model call
Species in top 388%85%
Species as first answer77%74%

Each bar is the share of test photos answered well, so higher is better. Food, skin and label use Claude Haiku 5.5 on both sides; plant uses Claude Sonnet 5.5 on both sides. Read the full methodology

How it works

One request, three steps

01

Send a photo

Upload it as multipart form data, send it as base64 in JSON, or pass a public image URL. Add the user’s own facts as fields, like their age or "I ate half".

02

The model grades what it sees

A vision model reports what is visible on fixed, written scales (an acne grade, how defined the abs are, which foods are on the plate) and points to the evidence. It does not make up final numbers.

03

Code computes the answer

Scores, body fat ranges, color seasons, Nutri-Score grades and nutrition values come from documented formulas and reference data, so the same grades always give the same result.

curl https://truelens.keronlabs.com/v1/food \
  -H "Authorization: Bearer $TRUELENS_KEY" \
  -F image=@lunch.jpg \
  -F context="I ate about half"
{
  "metadata": {
    "id": "req_9cf4da08fe7f40dab71a",
    "engine": "food",
    "status": "success",
    "cached": false,
    "credits_used": 1,
    "created_at": "2026-10-19T09:30:00.000Z",
    "processing_ms": 3400
  },
  "summary": "775 kcal across 1 item",
  "is_food": true,
  "items": [
    {
      "name": "Margherita pizza, whole",
      "grams": 289,
      "confidence": 0.7,
      "cooking_method": "baked",
      "nutrition": {
        "calories": 775,
        "protein_g": 35,
        "carbs_g": 91.6,
        "fat_g": 29.8,
        "fiber_g": 6.4
      },
      "estimated": false
    }
  ],
  "totals": {
    "calories": 775,
    "protein_g": 35,
    "carbs_g": 91.6,
    "fat_g": 29.8,
    "fiber_g": 6.4
  },
  "follow_up_questions": [
    "Did you eat the whole pizza or only part of it?"
  ]
}
Why use it

Weeks of tuning you can skip

The prompts, scales, reference data and edge cases are already worked out.

Checked against reference data

Nutrition from a curated food database, plant names from a botanical registry, additives with regulator risk levels, pet toxicity from veterinary lists, and the official Nutri-Score formula.

Same photo, same answer

An identical request returns the stored result, free, so a user who rescans never sees the number jump.

Photo quality built in

Each response says when a photo is too dark, blurred, filtered or framed wrong, and how much to trust the result.

Safe by default

Body and skin APIs refuse minors and nudity, never give a diagnosis, and flag anything worth showing a professional.

Pricing

Pay per call

Every call to every API costs $0.01 from prepaid credit. New accounts start with $1.00.

Top up

$10

1,000 calls

Top up

$25

2,500 calls

Top up

$100

10,000 calls

Failed calls are freeRepeat photos are freeSet a monthly limit on each key
Start with free credit
FAQ

Questions, answered

Why not call a vision model directly?

You can, but a plain call guesses the final numbers, and they drift between scans of the same photo. Here the model only grades what it can see on fixed scales, and code turns those grades into scores using published formulas and reference data. On the food benchmark, that halved the calorie error against a plain call to the same model.

How accurate is it?

Each API was tested on held-out photos with expert or lab-measured answers, next to a plain call to the same model. Food got twice as many meals within 20% of the true calories. Skin acne grades were within one step of dermatologists 99% of the time, against 89%. Label got the Nutri-Score grade exactly right 93% of the time, against 64%. Plant found the species in its top 3 answers 88% of the time, against 85%. Every response also carries a reliability rating and photo warnings, so your app can ask for a better photo instead of showing a weak result.

What counts as a call?

A request that returns 200 with a new result. Failed requests are not charged. Sending the exact same photo and fields again returns the stored result for free, with metadata.cached set to true.

Can my mobile app call the API directly?

Keep the key on your server. Your app sends the photo to your backend, and your backend calls the API. A key in an app bundle can be pulled out and used by anyone.

Which images work?

JPEG, PNG, WebP or GIF up to 5 MB, sent as a multipart upload, as base64 in JSON, or as a public image URL.

Who can be analyzed by the skin and body APIs?

Adults only for the body API, and no nudity on any API. Neither gives a diagnosis. The skin API flags spots worth showing a dermatologist, and every result says it is an estimate, not medical advice.

Try any API in a minute

Sign in, drop a photo into the playground, then create a key for your app.