Clés API
Gardez votre clé API en sécurité pour éviter tout usage abusif
Comment utiliser votre clé API Afficher les détails Masquer les détails
Conservez la clé sur votre serveur et envoyez-la comme jeton Bearer. Tout ci-dessous est un démarrage rapide à copier-coller.
- Créez une clé et enregistrez-la dans le gestionnaire de secrets de votre serveur. Vous pouvez la recopier à tout moment depuis la liste ci-dessous.
- Envoyez une requête POST à /api/plant/identify avec votre clé comme jeton Bearer et l'image dans un champ multipart.
- Lisez la réponse JSON : les informations de la plante au premier niveau, plus credit_transaction et new_balance.
Requête
| Champ | Obligatoire | Type | Description |
|---|---|---|---|
image |
Obligatoire | file |
JPEG, PNG, WebP ou GIF, jusqu'à 10 Mo. |
lang |
Facultatif | string |
Langue de sortie : en, zh, es, ja, fr, de, pt, ko, it. Par défaut en ; les valeurs inconnues reviennent à en. 12 caractères maximum. |
context |
Facultatif | string |
Indice sur le sujet pour plus de précision : plant, succulent, leaf, houseplant, poison_ivy. Par défaut plant. 32 caractères maximum. |
Exemple de requête
curl -X POST https://api.plantidentify.org/api/plant/identify \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@/path/to/plant.jpg;type=image/jpeg" \
-F "lang=fr" \
-F "context=houseplant"
import requests
with open("plant.jpg", "rb") as f:
r = requests.post(
"https://api.plantidentify.org/api/plant/identify",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"image": ("plant.jpg", f, "image/jpeg")},
data={"lang": "fr", "context": "houseplant"},
timeout=90,
)
print(r.status_code, r.json())
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("image", new Blob([await readFile("plant.jpg")], { type: "image/jpeg" }), "plant.jpg");
form.append("lang", "fr");
form.append("context", "houseplant");
const res = await fetch("https://api.plantidentify.org/api/plant/identify", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: form,
});
console.log(res.status, await res.json());
Exemple de réponse
HTTP 200. Des champs peuvent manquer si le modèle n'est pas sûr : considérez-les tous comme facultatifs. care_level est un libellé localisé, pas un enum fixe.
{
"success": true,
"common_name": "Monstera",
"scientific_name": "Monstera deliciosa",
"family": "Araceae",
"care_level": "Facile",
"light": "Lumière indirecte vive",
"watering": "Arroser quand la couche supérieure est sèche",
"pet_safety": "Toxique pour les animaux en cas d'ingestion",
"description": "Liane tropicale à grandes feuilles découpées.",
"identification_notes": "Bords de feuille découpés et racines aériennes.",
"lookalikes": "Monstera adansonii",
"next_step": "Tournez le pot chaque semaine pour une croissance régulière.",
"confidence": 0.92,
"credit_transaction": "PI2026110600001",
"new_balance": 18
}
Réponses d'erreur
400 missing_image |
La requête ne contient pas de champ image. |
400 invalid_file_type |
L'image n'est pas au format JPEG, PNG, WebP ou GIF. |
400 file_too_large |
L'image dépasse 10 Mo. |
401 authentication_required |
Clé API absente, invalide, inactive ou supprimée. |
402 insufficient_credits |
Crédits insuffisants. Aucun débit n'est effectué. |
500 identification_failed |
Erreur du fournisseur. Les crédits débités sont remboursés automatiquement. |
Facturation et sécurité
Chaque identification réussie coûte 2 crédits. Les requêtes échouées sont remboursées automatiquement.
Ne placez jamais une clé API dans du JavaScript côté navigateur ni dans une application mobile. Désactivez ou supprimez la clé dès qu'elle a pu être exposée.
Chargement…