Documentation API Kaabo
Intégrez les données immobilières de Kaabo à vos applications, sites web, CRM ou ERP. Une API REST simple, authentifiée par clé, avec des réponses JSON. Gratuite avec un compte développeur ou agence.
Introduction
L'API Kaabo est une API REST: elle utilise des URL prévisibles, l'authentification par clé (Bearer), renvoie du JSONet s'appuie sur les codes de statut HTTP standards. Toutes les requêtes se font en HTTPS.
Les données exposées sont publiques(annonces disponibles). Aucune donnée personnelle d'utilisateur n'est accessible via l'API.
Authentification
Chaque requête doit inclure votre clé API dans l'en-tête Authorization au format Bearer :
Authorization: Bearer kaabo_live_xxxxxxxxxxxxxxxxxxxxGénérez et gérez vos clés depuis votre espace API & Développeurs. Une clé n'est affichée qu'une seule fois à sa création : conservez-la en lieu sûr. En cas de fuite, révoquez-la et générez-en une nouvelle.
URL de base & versions
Toutes les requêtes partent de l'URL de base suivante :
https://kaza-topaz.vercel.app/api/v1La version de l'API est indiquée dans le chemin (/v1). Les évolutions rétro-incompatibles donneront lieu à une nouvelle version (v2, …) ; la v1 restera maintenue.
Limites de débit
Chaque clé dispose d'un quota de requêtes par jour :
| Type de compte | Quota |
|---|---|
| Compte développeur | 10 000 requêtes / jour |
| Compte agence | 5 000 requêtes / jour |
En cas de dépassement, l'API renvoie un statut 429 (Too Many Requests).
Pagination
Les listes sont paginées via les paramètres de requête limit (1–100, défaut 20) et offset (défaut 0). Chaque réponse indique count, limit et offset.
Points de terminaison
Retourne la liste des annonces disponibles, de la plus récente à la plus ancienne.
Paramètres de requête
| Paramètre | Type | Description |
|---|---|---|
| limit | entier | Nombre de résultats (1–100, défaut 20) |
| offset | entier | Décalage pour la pagination (défaut 0) |
Exemple de réponse 200 OK
{
"object": "list",
"count": 1,
"limit": 20,
"offset": 0,
"data": [
{
"id": "ce71652d-0e08-4c0d-8456-2bf5212022d4",
"title": "Appartement 2 chambres à Lomé",
"description": "Bel appartement lumineux...",
"listingType": "RENT",
"price": 140000,
"bedrooms": 2,
"bathrooms": 1,
"squareMeters": 75,
"propertyType": "APARTMENT",
"address": "Quartier Tokoin, Lomé, Togo",
"createdAt": "2026-07-01T10:00:00Z"
}
]
}Crée une annonce. Réservé aux clés dont le compte est propriétaire ou agence(les agences peuvent ainsi publier via l'API). L'annonce est créée au nom du titulaire de la clé.
Corps de la requête
| Champ | Requis | Description |
|---|---|---|
| title | oui | Titre (≥ 3 caractères) |
| price | oui | Prix / loyer (FCFA, > 0) |
| propertyType | oui | APARTMENT, HOUSE, VILLA, STUDIO, ROOM, OFFICE, LAND, COMMERCIAL |
| listingType | non | RENT (défaut) ou SALE |
| description, address, bedrooms, bathrooms, squareMeters | non | Champs optionnels |
Exemple
curl -X POST "https://kaza-topaz.vercel.app/api/v1/properties" \
-H "Authorization: Bearer kaabo_live_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "Villa 4 chambres à Cotonou",
"price": 350000,
"propertyType": "VILLA",
"listingType": "RENT",
"address": "Les Cocotiers, Cotonou",
"bedrooms": 4,
"bathrooms": 3
}'Réponse 201 Created avec l'objet créé. Déclenche l'événement webhook property.created.
Codes d'erreur
L'API utilise les codes de statut HTTP standards. Le corps d'une erreur contient un objet error et un message lisible.
| Statut | Code | Signification |
|---|---|---|
| 200 | — | Succès |
| 401 | unauthorized | Clé manquante, invalide ou révoquée |
| 429 | rate_limited | Quota de requêtes dépassé |
| 500 | server_error | Erreur interne |
{
"error": "unauthorized",
"message": "Clé API invalide ou révoquée."
}Exemples de code
cURL
curl "https://kaza-topaz.vercel.app/api/v1/properties?limit=20" \
-H "Authorization: Bearer kaabo_live_xxxxxxxx"JavaScript (Node.js / fetch)
const res = await fetch(
"https://kaza-topaz.vercel.app/api/v1/properties?limit=20",
{ headers: { Authorization: "Bearer " + process.env.KAABO_API_KEY } }
);
const { data } = await res.json();
console.log(data);Python (requests)
import os, requests
r = requests.get(
"https://kaza-topaz.vercel.app/api/v1/properties",
params={"limit": 20},
headers={"Authorization": f"Bearer {os.environ['KAABO_API_KEY']}"},
)
print(r.json()["data"])Webhooks
Recevez une notification en temps réel lorsqu'un événement se produit, plutôt que d'interroger l'API en continu. Configurez une URL de réception (HTTPS) depuis votre espace API & Développeurs.
Événements disponibles
property.created— une nouvelle annonce est publiéeproperty.updated— une annonce est mise à jourproperty.rented— une annonce passe en louée
Format reçu (POST)
{
"event": "property.created",
"createdAt": "2026-07-20T10:00:00Z",
"data": {
"id": "ce71652d-...",
"title": "Appartement 2 chambres à Lomé",
"price": 140000,
"listingType": "RENT",
"propertyType": "APARTMENT",
"address": "Quartier Tokoin, Lomé, Togo"
}
}Chaque requête inclut l'en-tête X-Kaabo-Signature (sha256=…) : un HMAC-SHA256 du corps brut, calculé avec le secret de votre endpoint. Vérifiez-le pour garantir l'authenticité :
import crypto from "node:crypto";
function verify(rawBody, signature, secret) {
const expected =
"sha256=" +
crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected),
);
}Accès
L'accès à l'API est gratuit. Il vous suffit d'un compte développeur(inscription gratuite) ou d'un compte agence pour générer vos clés et vos webhooks depuis votre espace développeur.