Publication d'annonces
Équipe HUSSTEER · mis à jour 2026-07-16 · 6 min
Publier une annonce immobilière et suivre sa diffusion. Ces endpoints orchestrent le moteur de multidiffusion Hussteer — vérification, sélection des portails, génération et livraison — derrière un vocabulaire simple.
Le parcours
Vérifiez l'annonce, prévisualisez ce qui sera publié, publiez, puis suivez l'état. Chaque étape est un endpoint.
Vérifier une annonce
/api/publication/validateIndique si une annonce est prête à être publiée. Renvoie les points **bloquants** (photos, prix, code postal manquant…) et les **avertissements** (à vérifier, jamais bloquants). N'écrit rien.
Corps de la requête
{
"propertyId": "11111111-1111-1111-1111-111111111111"
}Réponses
200— Rapport de vérification.401404
Événements déclenchés
- Aucun — lecture seule.
Exemples
curl -X POST 'https://hussteer.com/api/publication/validate' \
-H 'Content-Type: application/json' \
-H 'Cookie: <votre-session>' \
-d '{"propertyId":"…"}'const res = await fetch("https://hussteer.com/api/publication/validate", {
method: "POST",
headers: { "Content-Type": "application/json" },
credentials: "include",
body: JSON.stringify({"propertyId":"…"}),
});
const data = await res.json();import requests
r = requests.post(
"https://hussteer.com/api/publication/validate",
json={"propertyId":"…"},
cookies={"sb-access-token": "<votre-session>"},
)
print(r.json())Aperçu de publication
/api/publication/previewMontre exactement ce qui sera publié, calculé depuis l'annonce : nombre de portails sélectionnés, photos, prix, DPE, ville, code postal, adresse masquée ou affichée, méthode de livraison et version du flux.
Corps de la requête
{
"propertyId": "11111111-1111-1111-1111-111111111111"
}Réponses
200— Aperçu de publication.401404
Événements déclenchés
- Aucun — lecture seule.
Exemples
curl -X POST 'https://hussteer.com/api/publication/preview' \
-H 'Content-Type: application/json' \
-H 'Cookie: <votre-session>' \
-d '{"propertyId":"…"}'const res = await fetch("https://hussteer.com/api/publication/preview", {
method: "POST",
headers: { "Content-Type": "application/json" },
credentials: "include",
body: JSON.stringify({"propertyId":"…"}),
});
const data = await res.json();import requests
r = requests.post(
"https://hussteer.com/api/publication/preview",
json={"propertyId":"…"},
cookies={"sb-access-token": "<votre-session>"},
)
print(r.json())Publier une annonce
/api/publication/startPublie l'annonce : vérifie qu'elle est complète, qu'une livraison est configurée, puis déclenche la diffusion réelle. Renvoie un identifiant de publication à suivre.
Corps de la requête
{
"propertyId": "11111111-1111-1111-1111-111111111111"
}Réponses
200— Publication déclenchée.401404409422
Événements déclenchés
- L'annonce entre dans le flux de diffusion.
- Un suivi de publication est créé (voir /api/publication/status/{id}).
- L'historique du bien est mis à jour.
Exemples
curl -X POST 'https://hussteer.com/api/publication/start' \
-H 'Content-Type: application/json' \
-H 'Cookie: <votre-session>' \
-d '{"propertyId":"…"}'const res = await fetch("https://hussteer.com/api/publication/start", {
method: "POST",
headers: { "Content-Type": "application/json" },
credentials: "include",
body: JSON.stringify({"propertyId":"…"}),
});
const data = await res.json();import requests
r = requests.post(
"https://hussteer.com/api/publication/start",
json={"propertyId":"…"},
cookies={"sb-access-token": "<votre-session>"},
)
print(r.json())Relancer une publication
/api/publication/retryRetente la publication après un échec (livraison momentanément indisponible, accès distant…). Ne re-vérifie pas l'annonce : on suppose la cause corrigée. Renvoie un nouvel identifiant à suivre.
Corps de la requête
{
"propertyId": "11111111-1111-1111-1111-111111111111"
}Réponses
200— Publication relancée.401404409
Événements déclenchés
- Une nouvelle tentative de publication est créée.
- L'historique du bien est mis à jour.
Exemples
curl -X POST 'https://hussteer.com/api/publication/retry' \
-H 'Content-Type: application/json' \
-H 'Cookie: <votre-session>' \
-d '{"propertyId":"…"}'const res = await fetch("https://hussteer.com/api/publication/retry", {
method: "POST",
headers: { "Content-Type": "application/json" },
credentials: "include",
body: JSON.stringify({"propertyId":"…"}),
});
const data = await res.json();import requests
r = requests.post(
"https://hussteer.com/api/publication/retry",
json={"propertyId":"…"},
cookies={"sb-access-token": "<votre-session>"},
)
print(r.json())Suivre une publication
/api/publication/status/{id}Renvoie l'état d'une publication : en cours, réussie ou en erreur, avec le nombre d'annonces publiées, les horodatages et l'empreinte du fichier livré.
Paramètres
id(path, requis) — Identifiant de publication renvoyé par /start ou /retry.
Réponses
200— État de la publication.401404
Événements déclenchés
- Aucun — lecture seule.
Exemples
curl 'https://hussteer.com/api/publication/status/11111111-1111-1111-1111-111111111111' \
-H 'Cookie: <votre-session>'const res = await fetch("https://hussteer.com/api/publication/status/11111111-1111-1111-1111-111111111111", { credentials: "include" });
const data = await res.json();import requests
r = requests.get(
"https://hussteer.com/api/publication/status/11111111-1111-1111-1111-111111111111",
cookies={"sb-access-token": "<votre-session>"},
)
print(r.json())Historique de publication
/api/publication/history/{propertyId}La chronologie de diffusion d'un bien : mises en attente, mises en ligne, erreurs et retraits, dans l'ordre.
Paramètres
propertyId(path, requis) — Identifiant du bien.
Réponses
200— Historique de diffusion.401404
Événements déclenchés
- Aucun — lecture seule.
Exemples
curl 'https://hussteer.com/api/publication/history/11111111-1111-1111-1111-111111111111' \
-H 'Cookie: <votre-session>'const res = await fetch("https://hussteer.com/api/publication/history/11111111-1111-1111-1111-111111111111", { credentials: "include" });
const data = await res.json();import requests
r = requests.get(
"https://hussteer.com/api/publication/history/11111111-1111-1111-1111-111111111111",
cookies={"sb-access-token": "<votre-session>"},
)
print(r.json())Cet article vous a-t-il été utile ?