API REST Ts-Immo
Référence opérationnelle de l'API REST Ts-Immo : ressources disponibles, usages recommandés, filtres et exemples prêts à l'emploi.
URL de base
https://api.ts-immo.org/v1Authentification
Chaque appel API doit inclure un token Bearer dans l'en-tête Authorization. Générez et gérez vos clés API depuis votre espace Ts-Immo.
# En-tête HTTP requis
Authorization: Bearer <votre-api-key>
Content-Type: application/json
Accept-Language: fr # fr | en | de | itNe partagez jamais votre clé API. Utilisez des variables d'environnement et des secrets côté serveur uniquement.
Points de terminaison
Propriétés
GET
/propertiesRetourne une liste paginée de biens, filtrable et triablePOST
/propertiesCrée un nouveau bien immobilier avec ses champs métierGET
/properties/:idRetourne le détail complet d'un bien par identifiantPUT
/properties/:idRemplace entièrement une fiche bien existantePATCH
/properties/:idMet à jour uniquement les champs fournisDELETE
/properties/:idSupprime définitivement un bien et ses liens associésMédias
GET
/properties/:id/mediaListe les photos, vidéos et documents d'un bienPOST
/properties/:id/mediaAjoute un média à un bien (photo, plan, document...)DELETE
/properties/:id/media/:mediaIdSupprime un média spécifique rattaché au bienAgents
GET
/agentsRetourne la liste des agents disponiblesGET
/agents/:idRetourne les informations détaillées d'un agentGET
/agents/:id/propertiesListe les biens gérés par un agent donnéSynchronisation
POST
/sync/runDémarre une synchronisation manuelle immédiateGET
/sync/statusRetourne l'état courant et la progression de synchroGET
/sync/logsExpose l'historique des exécutions de synchronisationWebhooks
GET
/webhooksListe les webhooks configurés pour votre comptePOST
/webhooksEnregistre un nouveau webhook sortantDELETE
/webhooks/:idSupprime un webhook existant par identifiantParamètres de filtrage
Affinez les résultats de GET /properties avec ces paramètres de requête (combinables entre eux) :
GET /properties?type=sale&status=active&minPrice=100000&maxPrice=500000&city=Paris&bedrooms=3&page=1&limit=20&sort=price&order=asc
# Paramètres disponibles
type string sale | rent | seasonal | commercial | land
status string active | pending | sold | rented | withdrawn | draft
minPrice number Prix minimum
maxPrice number Prix maximum
city string Ville
postalCode string Code postal
bedrooms number Nombre de chambres (min)
bathrooms number Nombre de salles de bain (min)
page number Page (défaut: 1)
limit number Résultats par page (max: 100, défaut: 20)
sort string price | surface | createdAt | updatedAt
order string asc | descExemples
Lister des propriétés
curl -X GET "https://api.ts-immo.org/v1/properties?type=sale&city=Paris&limit=5" \
-H "Authorization: Bearer votre-api-key" \
-H "Accept-Language: fr"
# Réponse
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Appartement 3 pièces Paris 11e",
"type": "sale",
"price": 385000,
...
}
],
"meta": {
"total": 248,
"page": 1,
"perPage": 5,
"totalPages": 50
}
}Créer une propriété
curl -X POST "https://api.ts-immo.org/v1/properties" \
-H "Authorization: Bearer votre-api-key" \
-H "Content-Type: application/json" \
-d '{
"title": "Maison 5 pièces avec jardin",
"type": "sale",
"status": "active",
"price": 650000,
"currency": "EUR",
"surface": 145,
"bedrooms": 4,
"bathrooms": 2,
"address": {
"street": "8 allée des Roses",
"city": "Lyon",
"postalCode": "69006",
"country": "FR"
}
}'Codes d'erreur
En cas d'échec, l'API retourne une erreur JSON normalisée avec un code HTTP, un code métier et des détails exploitables.
# Format d'erreur standard
{
"error": {
"code": "NOT_FOUND",
"message": "Property not found",
"details": null
}
}
# Codes HTTP
200 OK Succès
201 Created Ressource créée
400 Bad Request Données invalides
401 Unauthorized Clé API manquante ou invalide
403 Forbidden Accès refusé
404 Not Found Ressource introuvable
409 Conflict Conflit (doublon)
422 Unprocessable Validation échouée
429 Too Many Req. Rate limit dépassé (100 req/min)
500 Server Error Erreur interneLa limite est de 100 requêtes/minute par clé API. Surveillez X-RateLimit-Remaining et X-RateLimit-Reset pour lisser votre charge et éviter les 429.