Sommaire
1. Authentification
Toutes les requetes API necessitent une cle API. Vous pouvez generer une cle depuis votre profil (plan Entreprise requis).
En-tete d'authentification
Deux methodes sont acceptees :
# Methode 1 : Header X-API-Key
X-API-Key: sk_live_votre_cle_ici
# Methode 2 : Header Authorization Bearer
Authorization: Bearer sk_live_votre_cle_ici
X-API-Key: sk_live_votre_cle_ici
# Methode 2 : Header Authorization Bearer
Authorization: Bearer sk_live_votre_cle_ici
Important : Ne partagez jamais votre cle API. Elle donne acces a votre compte. Si votre cle est compromise, revoquez-la immediatement depuis votre profil.
2. Poser une question
Envoyez une question en langage naturel et recevez une reponse JSON synchrone avec les donnees structurees.
POST
/api/v1/chat
Parametres (corps JSON)
| Parametre | Type | Description |
|---|---|---|
question requis |
string | La question en langage naturel (1 a 2000 caracteres) |
lang optionnel |
string | Langue de la reponse : fr (defaut) ou en |
Exemple de requete
curl -X POST https://agridata-ia.com/api/v1/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: sk_live_votre_cle" \
-d '{"question": "Prix du mais a Cotonou en 2024"}'
-H "Content-Type: application/json" \
-H "X-API-Key: sk_live_votre_cle" \
-d '{"question": "Prix du mais a Cotonou en 2024"}'
Reponse
{
"answer": "Le prix moyen du mais a Cotonou en 2024...",
"data": [
{"marche": "Cotonou", "prix_moyen": 191, "unite": "FCFA/kg"}
],
"sources": ["INStaD/IHPC"],
"agent": "prix",
"tokens_used": 450,
"response_time_ms": 2300
}
"answer": "Le prix moyen du mais a Cotonou en 2024...",
"data": [
{"marche": "Cotonou", "prix_moyen": 191, "unite": "FCFA/kg"}
],
"sources": ["INStaD/IHPC"],
"agent": "prix",
"tokens_used": 450,
"response_time_ms": 2300
}
Champs de la reponse
| Champ | Type | Description |
|---|---|---|
answer |
string | Reponse en langage naturel |
data |
array | null | Donnees structurees (tableau, si applicable) |
sources |
array | null | Sources des donnees (INStaD, FAOSTAT, FAOLEX, DSA) |
agent |
string | null | Agent IA utilise : prix, production ou juridique |
tokens_used |
integer | null | Nombre de tokens LLM consommes |
response_time_ms |
integer | Temps de reponse en millisecondes |
3. Gestion des cles API
Gerez vos cles API par programmation. Ces endpoints utilisent l'authentification JWT (cookie de session), pas la cle API.
Note : Les endpoints de gestion des cles necessitent une connexion via le site web (token JWT). Ils ne sont pas accessibles via cle API.
Lister les cles
GET
/api/v1/keys
Generer une cle
POST
/api/v1/keys
| Parametre | Type | Description |
|---|---|---|
name optionnel |
string | Nom de la cle (max 100 caracteres, defaut : "Default") |
Important : La cle complete n'est affichee qu'une seule fois lors de la creation. Copiez-la immediatement. Maximum 5 cles actives par utilisateur.
Revoquer une cle
DELETE
/api/v1/keys/{key_id}
4. Codes d'erreur
| Code | Description |
|---|---|
200 |
Succes |
400 |
Requete invalide (parametre manquant ou incorrect) |
401 |
Cle API invalide ou manquante |
403 |
Acces refuse (plan insuffisant) |
429 |
Quota depasse ou trop de requetes |
500 |
Erreur interne du serveur |
503 |
Service IA temporairement indisponible |
Format des erreurs
{
"detail": "Quota exceeded: 200/200 questions today."
}
"detail": "Quota exceeded: 200/200 questions today."
}
5. Limites et quotas
| Limite | Valeur |
|---|---|
| Questions par jour | 200 (plan Entreprise) |
| Questions par semaine | 1000 (plan Entreprise) |
| Cles API actives | 5 max |
| Longueur question | 2000 caracteres max |
| Rate limiting | 30 requetes par minute par IP |
6. Exemples de code
Python
import requests
API_KEY = "sk_live_votre_cle_ici"
BASE_URL = "https://agridata-ia.com/api/v1"
response = requests.post(
f"{BASE_URL}/chat",
headers={"X-API-Key": API_KEY},
json={"question": "Prix du riz a Parakou"}
)
data = response.json()
print(data["answer"])
# Donnees structurees
if data.get("data"):
for row in data["data"]:
print(row)
API_KEY = "sk_live_votre_cle_ici"
BASE_URL = "https://agridata-ia.com/api/v1"
response = requests.post(
f"{BASE_URL}/chat",
headers={"X-API-Key": API_KEY},
json={"question": "Prix du riz a Parakou"}
)
data = response.json()
print(data["answer"])
# Donnees structurees
if data.get("data"):
for row in data["data"]:
print(row)
JavaScript (Node.js)
const API_KEY = "sk_live_votre_cle_ici";
const response = await fetch("https://agridata-ia.com/api/v1/chat", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": API_KEY
},
body: JSON.stringify({
question: "Production de mais au Nigeria en 2023"
})
});
const data = await response.json();
console.log(data.answer);
const response = await fetch("https://agridata-ia.com/api/v1/chat", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": API_KEY
},
body: JSON.stringify({
question: "Production de mais au Nigeria en 2023"
})
});
const data = await response.json();
console.log(data.answer);
cURL
curl -X POST https://agridata-ia.com/api/v1/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: sk_live_votre_cle_ici" \
-d '{"question": "Lois sur le foncier agricole au Benin", "lang": "fr"}'
-H "Content-Type: application/json" \
-H "X-API-Key: sk_live_votre_cle_ici" \
-d '{"question": "Lois sur le foncier agricole au Benin", "lang": "fr"}'