Leafy API
One request, one sourced and cautious result: ranked candidates, genus, confidence level, sources and warnings — never invented certainty.
Add photo identification to your product, without training a model.
Cataloging, species verification, automatically enriched product sheets.
Educational tools, sensors, connected-garden projects, embedded AI.
Data as of June 1, 2026.
/v1/identify
Input: 1 to 3 photos. Output: a structured, cautious result.
curl -X POST https://leafyplant.app/v1/identify \ -H "X-API-Key: YOUR_KEY" \ -F "photos=@plant.jpg"
import requests
resp = requests.post(
"https://leafyplant.app/v1/identify",
headers={"X-API-Key": "YOUR_KEY"},
files={"photos": open("plant.jpg", "rb")},
)
print(resp.json())
const form = new FormData();
form.append("photos", fileInput.files[0]);
const resp = await fetch("https://leafyplant.app/v1/identify", {
method: "POST",
headers: { "X-API-Key": "YOUR_KEY" },
body: form,
});
const result = await resp.json();
import fetch from "node-fetch";
import FormData from "form-data";
import fs from "fs";
const form = new FormData();
form.append("photos", fs.createReadStream("plant.jpg"));
const resp = await fetch("https://leafyplant.app/v1/identify", {
method: "POST",
headers: { "X-API-Key": "YOUR_KEY", ...form.getHeaders() },
body: form,
});
const result = await resp.json();
{
"genus": "Monstera",
"species": "Monstera deliciosa",
"confidence": "likely",
"candidates": [
{ "name": "Monstera deliciosa", "score": 0.91, "family": "Araceae" },
{ "name": "Monstera adansonii", "score": 0.07, "family": "Araceae" }
],
"warnings": [
{
"type": "toxicity",
"level": "toxic",
"text": "Toxic to cats and dogs",
"source": "ASPCA"
}
],
"sources": [
{ "label": "GBIF", "license": "CC0" },
{ "label": "World Flora Online", "license": "CC-BY" }
]
}
Confident enough: an answer you can use directly.
A useful recommendation, but present it with caution.
Leafy offers candidates, not a truth. Don't display it as certain.
| Leafy API | Pl@ntNet | Kindwise | |
|---|---|---|---|
| CC0/CC-BY sources in the response | ✓ | ✓ | ✗ |
| Cat/dog toxicity included | ✓ | ✗ | ✗ |
| Explicit confidence level | ✓ | ✓ | ✓ |
| Ambiguity warnings | ✓ | ✗ | ✗ |
| Free plan, no card | ✓ | ✓ | ✗ |
| Paid entry price | €29 / mo | — | ~€100 / mo |
* based on public documentation available as of June 1, 2026.
| Plan | Price | Monthly quota | Max RPM | |
|---|---|---|---|---|
| Free Prototype, integration test |
€0 | 100 calls | 10 / min | |
| Starter Small app, MVP |
€29 / mo | 10,000 | 60 / min | |
| Pro Launched product |
€99 / mo | 50,000 | 300 / min | |
| Scale Strong growth |
€299 / mo | 250,000 | 1,000 / min | |
| Enterprise Mission-critical, guaranteed SLA |
custom | volume + SLA + certif | custom | Contact |
Monthly subscription, cancel anytime. Secure payment via Stripe. Your API key is sent right after payment.
In active beta: no guaranteed SLA except Enterprise. Data under open license (CC0/CC-BY), in-house engine.
No. Your images are analyzed and then deleted. They are never used to improve or fine-tune our models. Our training data is exclusively under CC0/CC-BY licenses.
Not for the API integration itself. The response data carries the attributions of its original sources (GBIF CC0, WFO CC-BY…), which your app must display if you expose those fields. The API itself requires no visible attribution.
Leafy is hosted in Europe (Google Cloud europe-west1). Your photos are processed and deleted without retention. You are responsible for your end users' consent; Leafy acts as a processor.
No. Photos submitted to /v1/identify are deleted immediately after processing. Leafy builds no user image database.
Free: 10 RPM · Starter: 60 RPM · Pro: 300 RPM · Scale: 1,000 RPM · Enterprise: custom. On overflow, an HTTP 429 response is returned with a Retry-After header.
Yes — monthly subscription with no commitment, cancel from your Stripe dashboard. No penalty, no notice period.
Taxonomic data comes from CC0 (GBIF) or CC-BY (World Flora Online) sources. Each response contains a sources[] field with the associated license.
Ready to integrate
No credit card. Enter your email, copy your key, run your first request.