FAQ for Plant.id API
Most frequent questions and answers
Effective use of API
- How to increase identification accuracy?
- How to increase identification speed?
- I can’t see any similar_images in the get_identification_result response
- How to handle network connection error when sending requests?
API response content
- What kind of plants can you identify?
- What does the “similar images” feature do?
- What is the difference between the plant_name and the plant_details.scientific_name?
- What is the license of the content you provide?
- Is it possible to receive a list of all plants Plant.id can identify?
- What is the content coverage in language-independent plant details?
- What is the content coverage in my language?
Plant.id Health Assessment
- What is the total cost for identifying diseases?
- Sometimes the result incorrectly says that the plant is healthy or identifies an incorrect disease. Am I doing something wrong?
- Is there a way to get a list of all diseases that Plant.id diseases identification API can identify?
- The suggestions are too general (e.g. abiotic, animalia). How can I improve it?
Effective use of API
How to increase identification accuracy?
- Include multiple photos of a single plant in the plant identification request.
- Include GPS coordinates.
- There is a list of parameters (see
modifiersin /identify or /enqueue_identification endpoints), which enable you to trade off the accuracy for identification speed. However, it is not allowed by default; contact us if you need help.
- The default model is very general. However, we can create a specific model explicitly focused on your use case – for example, Mediterranean crops, Canadian weeds, or European trees. We can even use your own datasets to improve the model, for example, with satellite images. We can also train a customized new model, focused, for example, on the estimation of the plant’s health.
How to increase identification speed?
In the administration, you can see an identification time (guaranteed by the SLA) per each request. This time value, however, does not account for image preprocessing (downscaling the resolution). That is the reason why the measured response time is higher than the identification time.
You can mitigate this delay by resizing the image on your side. To get the fastest response, set the photos’ size so that the longer side has 800 px. You can also use an /identify endpoint to get the identification directly into the response to your request to gain a second or two.
In special cases, it might be worth asking us on firstname.lastname@example.org for a dedicated ML model (we might be able to go under 1 second).
I can’t see any similar_images in the get_identification_result response
How to handle network connection error when sending requests?
When you send a request and your network connection fails before you receive a response from our API, you cannot access the response later when it is available because you do not have any identifier of it.
This can be solved by using a
custom_id parameter of the response and
- Generate a unique custom id for your request (e.g.
- Send a request with the
custom_idparameter in the request.
- If the connection fails and you don’t get 200 response status code, call
get_identification_resultURI to get the response to your original request.
API response content
What kind of plants can you identify?
Our machine learning model is mainly based on photos we have gathered running FlowerChecker in the past six years. The data contain photos of wild-growing, garden, and indoor plants.
We can currently identify more than 12 000 plant species of various life forms, including trees, shrubs, and succulents. Besides, our database consists of the most common mushrooms, lichens, and mosses.
The map above highlights the countries from which we have the most images in our training data set. You will get the best identification results for the common plants in the dark blue countries.
What does the “similar images” feature do?
This is actually our most innovative feature!
You see – the name of the plant is not the only piece of information you will get from the API. We also provide representative images of a suggested taxon (species or genus).
The representative images are not static; they are selected based on the similarity with photos uploaded by your customer to achieve user satisfaction. Let us illustrate:
There are three different identifications of three different photos of a dandelion. The first one shows a puffy ball with seeds, the second one plant in full bloom , and the third one a leaf rosette. As you can see, the Plant.id provides representative images of a dandelion based on the user’s picture. You are welcome to use our images in your app. What a great tool to improve user’s satisfaction with your service!
What is the difference between different plant names?
Plant.id API results give you four types of records related to plant names for a single taxon suggestion (taxon is the basic unit in the taxonomy hierarchy)
- plant_name is a string that conclusively indicates the result of the identification. It is basically an ID which we are striving to keep unchanged across all Plant.id versions. Therefore, you can use it as a key for linking other in-app content.
Example: “Taraxacum officinale”
- plant_details.scientific_name stands for a scientific name (in Latin). It is the taxon name currently accepted by botanists.
Example: “Taraxacum campylodes G. E. Haglund”
- plant_details.synonyms lists other scientific names for the same species, if there are any. They are also considered correct but usually outdated because of nomenclature changes. See the explanation on Wikipedia.
Example: [“Taraxacum vulgare var. vulgare”, ”Taraxacum vulgare (Lam.) Schrank”, …].
If you want to attach your own content to the suggested plant name, we recommend using not only plant_details.scientific_name but also all plant_details.synonyms to find as many matches in your database as possible.
TLDR botanical authorities change scientific names sometimes. The plant_details.scientific_name reflects the present taxonomy consensus. The class name plant_name is not to be changed that often to keep the API as stable as possible.
What is the license of the content you provide?
Generally, we provide mostly public domain content to our clients. The only exceptions are similar images. In ~ 30% of the cases, there are images under the CC-BY license, which requires mentioning the author name and license name together with the image. Sometimes the license also doesn’t allow any kind of remixing (indicated by SA element).
We made sure that all of the content is allowed to be used for commercial purposes. The details about the license can be found in our Terms and Conditions.
We are currently working with no more than these licenses:
Is it possible to receive a list of all plants Plant.id can identify?
We do not provide directly a list of the plants we can identify. Botanical nomenclature is a dynamically changing system, and the list of our plants reflects the actual nomenclature and the trends. Our team spent a lot of time improving the list, and it is our business secret.
If you have your own plant list, you can try matching it to our names with the following script: https://github.com/flowerchecker/Plant-id-API/blob/master/python/identification_example_with_plant_matching.py
See available plant details you can get in the API response in the documentation.
What is the content coverage in language-independent plant details?
The following table shows the content coverage for plants in our database.
|taxonomy – kingdom||100.00%|
|taxonomy – phylum||100.00%|
|taxonomy – class||100.00%|
|taxonomy – order||100.00%|
|taxonomy – family||99.98%|
|taxonomy – genus||100.00%|
What is the content coverage in my language?
Some information (description, common name) is language-dependent. You can set the preferred language in your request (English is the default). See the coverage (for how many plants from our database we provide this information) in the top 20 languages. We support other languages too. If you are interested in coverage in your language, ask us at email@example.com.
Plant.id Health Assessment
What is the total cost for identifying diseases?
The pricing is one identification credit per Health Assessment and one per species identification. The base price is €0.05. There are discounts for bulk orders. Please contact us at firstname.lastname@example.org to discuss these issues.
Sometimes the result incorrectly says that the plant is healthy or identifies an incorrect disease. Am I doing something wrong?
This often happens if the photo is not taken from a sufficiently close distance. Make sure to include a detail of the sick part of the plant to achieve the best results. Read our blog post about tips on how to use Plant.id Health Assessment.
Some diseases have symptoms with worse visibility (e.g. small pests), and the detail is crucial for the correct identification. We are working on improving this.
Is there a way to get a list of all diseases that Plant.id diseases identification API can identify?
With Plant disease identification API you can recognize:
- 28 classes of fungal diseases
- 18 classes of abiotic disorders
- 17 classes of pests
- 7 classes of chromista
- 5 classes of viruses
- 5 classes of bacterial diseases
The complete list of the diseases changes dynamically. If there is a reason why you need the complete list, let us know at email@example.com.
The suggestion are too general (e.g. abiotic, animalia). How can I improve it?
You can use attribute
redundant for discarding parent classes.
Discarding parent classes is convenient if the difference between the probability of the parent class (higher in the hierarchy) and the child class (lower in the hierarchy) is insignificant. In that case, classes that can be discarded has a boolean attribute
redundant in the response.
Specifically, this option becomes available if the
probability of the child class is at least 80% of the
probability of the parent class. For example, if the
probability of a parent class (e.g. abiotic) is 95% and the
probability of a child class (e.g. water-related issue) is at least 76%, then the attribute
redundant:true will appear in the response.
What is the pricing?
The base pricing is €0.05 per identification. There are discounts for bulk orders. The final price also depends on the identification speed and accuracy. Please contact us at firstname.lastname@example.org to discuss these issues.
Do you have a mobile app?
Plant.id is a website whose purpose is to demonstrate our plant identification capability to our clients. It is free, there is no subscription, but it is limited to 5 identifications per week. However:
- We run a mobile app called FlowerChecker. There is no machine learning involved. Our botanical experts perform identification manually, and we pay them for it, so it costs ~$1 per identification.
- There are some mobile apps that use our machine learning engine, they are our business customers.
- There are some mobile apps with a similar name, but they are not affiliated with us.