Aller au contenu

Créer et mettre à jour un logement

Fenêtre de terminal
curl -X POST https://localoge.com/api/v1/channel/properties \
-H "Authorization: Bearer $LOCALOGE_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_property_id": "PROP-4821",
"host_ref": "lh_4f8a2c…",
"title": "Studio vue mer, Cap d Agde",
"description": "Studio de 28 m2 a 200 metres de la plage.",
"address": "12 avenue de la Plage",
"city": "Agde",
"postal_code": "34300",
"country": "FR",
"latitude": 43.2951,
"longitude": 3.4753,
"max_guests": 4,
"bedrooms": 1,
"beds": 2,
"bathrooms": 1,
"surface_m2": 28,
"base_price": 9500,
"min_price": 7000,
"max_price": 18000,
"cleaning_fee": 4000,
"deposit_amount": 30000,
"check_in_time": "16:00",
"check_out_time": "10:00",
"cancellation_policy": "moderate",
"amenities": ["wifi", "kitchen", "washer", "air_conditioning"]
}'
{
"success": true,
"data": {
"listing_id": "9f2c1a44-8e3b-4d21-b0c7-5e6f7a8b9c0d",
"external_property_id": "PROP-4821",
"created": true,
"unchanged": false,
"status": "draft",
"missing": ["photos"]
}
}

C’est le champ le plus important de cet appel. Il désigne l’utilisateur qui vous a autorisé, et donc le compte Localoge auquel l’annonce va appartenir : celui qui recevra l’argent, à qui les voyageurs écriront, et qui répondra en cas de litige.

Vous l’obtenez une fois par utilisateur, en le faisant passer par la page d’autorisation. Voir Connecter un hôte.

external_property_id : votre identifiant, pas le nôtre

Section intitulée « external_property_id : votre identifiant, pas le nôtre »

C’est votre référence, celle de votre système. Elle est obligatoire, et c’est elle qui fait le lien entre votre logement et notre annonce. Nous générons de notre côté un listing_id : gardez les deux, mais ne nous renvoyez jamais que le vôtre.

Le couple (votre compte, external_property_id) est unique chez nous. Rejouer le même appel ne crée donc jamais un doublon, quelle que soit la raison du rejeu. Voir Idempotence.

Le champ missing, et pourquoi votre logement arrive en brouillon

Section intitulée « Le champ missing, et pourquoi votre logement arrive en brouillon »

Une annonce poussée par l’API arrive en draft. Elle est publiée automatiquement dès qu’elle est complète, et jamais sans photo.

status Sens
draft Incomplet : missing dit ce qui manque. Invisible des voyageurs.
pending_validation Complet, en attente de la relecture d’un administrateur Localoge. Invisible des voyageurs.
published En vente.
paused Retiré de la vente, par vous (POST …/pause) ou par l’hôte.

Le premier logement de chaque partenaire passe en pending_validation : un administrateur le relit avant publication. Ensuite, vos logements complets se publient automatiquement. Un changement de titre ou de nouvelles photos sur un logement publié le repasse en pending_validation. Le webhook property.status_changed vous prévient de chaque passage. Voir Cycle de vie, qui décrit aussi la pause, la réactivation et l’archivage.

missing liste ce qui manque encore. Tant qu’il n’est pas vide, l’annonce n’est pas visible des voyageurs. C’est votre indicateur d’avancement : affichez-le à vos utilisateurs plutôt que de leur annoncer une mise en ligne qui n’a pas eu lieu.

Fenêtre de terminal
curl -X PUT https://localoge.com/api/v1/channel/properties/PROP-4821 \
-H "Authorization: Bearer $LOCALOGE_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "Studio vue mer renove", "max_guests": 5 }'
Fenêtre de terminal
curl https://localoge.com/api/v1/channel/properties/PROP-4821 \
-H "Authorization: Bearer $LOCALOGE_KEY"

Utilisez-la en cas de doute plutôt que de nous écrire : elle vous rend l’annonce telle qu’elle existe chez nous, avec son statut.

Fenêtre de terminal
curl "https://localoge.com/api/v1/channel/properties?updated_since=2026-08-25T00:00:00Z" \
-H "Authorization: Bearer $LOCALOGE_KEY"

Sur un parc de plusieurs centaines de logements, cela évite de tout renvoyer chaque nuit pour deux changements réels. La liste est paginée par curseur (limit, cursor, next_cursor) : suivez next_cursor jusqu’à null. Voir Pagination.

Chaque ligne porte status (celui de l’annonce, tableau ci-dessus) et link_status, l’état du lien entre votre logement et le nôtre : active, paused, error (une synchronisation a échoué) ou archived (après un DELETE).

Champ Type Notes
host_ref chaîne Obligatoire : à quel compte appartient ce logement. Voir Connecter un hôte
external_property_id chaîne Obligatoire
title chaîne Obligatoire, 160 caractères
description chaîne
property_type apartment / house / villa / studio / loft / cottage / chalet / guest_room / bed_and_breakfast / mobile_home / castle / hotel_room / cabin / other Type de logement
address, city, postal_code chaîne
country ISO 2 lettres Pays du LOGEMENT, pas celui du propriétaire
latitude, longitude nombre Fournies, elles nous évitent un géocodage
max_guests, bedrooms, beds, bathrooms entier
surface_m2 entier
base_price, min_price, max_price entier En centimes. min et max vont ensemble
cleaning_fee, deposit_amount entier En centimes
check_in_time, check_out_time HH:MM
cancellation_policy flexible / moderate / firm / strict
min_nights, max_nights entier Valeurs par défaut ; le calendrier peut les surcharger
amenities tableau de chaînes Les clés inconnues sont ignorées, pas refusées
registration_number chaîne Numéro d’enregistrement du meublé
usage_type primary_residence / secondary_residence / legal_entity Nécessaire pour publier : le régime décide du plafond légal de nuitées
pets_policy, smoking_policy unspecified / allowed / forbidden N’envoyez forbidden que si vous le SAVEZ
adults_only booléen Refuse une réservation qui déclare des enfants
videos tableau (10 au plus) url, thumbnail_url, duration_sec, caption, position ; mp4 ou mov, 120 Mo au plus
photos tableau (50 au plus) url, position, caption. Voir Photos
currency ISO 3 lettres
payout_model host / owner Voir Qui touche l’argent