Skip to main content
Create a new Advert alert for this search
curl --request PUT \
  --url https://api.fluximmo.io/v2/protected/adverts/search/alerts \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "search_query": {
    "filterAd": {
      "currentPrice": {
        "value": {
          "max": 123,
          "min": 123
        },
        "valuePerArea": {
          "max": 123,
          "min": 123
        }
      },
      "habitation": {
        "bathroomCount": {
          "max": 123,
          "min": 123
        },
        "bedroomCount": {
          "max": 123,
          "min": 123
        },
        "characteristics": {
          "hasAlarm": true,
          "hasBalcony": true,
          "hasCellar": true,
          "hasConcierge": true,
          "hasDigicode": true,
          "hasFireplace": true,
          "hasGarage": true,
          "hasGarden": true,
          "hasGrenier": true,
          "hasInterphone": true,
          "hasJacuzzi": true,
          "hasLand": true,
          "hasLift": true,
          "hasMezzanine": true,
          "hasParking": true,
          "hasPool": true,
          "hasTerrace": true,
          "hasVisAVis": true,
          "isPeaceful": true
        },
        "climate": {
          "epcClimate": [],
          "epcClimateScore": {
            "max": 123,
            "min": 123
          },
          "epcEnergy": [],
          "epcEnergyScore": {
            "max": 123,
            "min": 123
          },
          "epcClimateDate": {
            "max": "2022-10-21T11:31:33.593Z",
            "min": "2022-10-21T11:31:33.593Z"
          },
          "epcEnergyDate": {
            "max": "2022-10-21T11:31:33.593Z",
            "min": "2022-10-21T11:31:33.593Z"
          }
        },
        "features": {
          "exposure": [],
          "furniture": [],
          "propertyFloor": {
            "max": 123,
            "min": 123
          },
          "propertyTotalFloor": {
            "max": 123,
            "min": 123
          },
          "constructionMaterials": [],
          "glazingTypes": [],
          "hasThroughExposure": true,
          "viewOns": [],
          "viewTypes": []
        },
        "heatTypes": [],
        "heatTypeDetails": [],
        "heatings": [],
        "propertyCondition": [
          {
            "constructionYear": 123,
            "interiorCondition": null,
            "renovationYear": 123,
            "generalConditions": []
          }
        ],
        "roomCount": {
          "max": 123,
          "min": 123
        },
        "surface": {
          "balconies": {
            "max": 123,
            "min": 123
          },
          "floorSpace": {
            "max": 123,
            "min": 123
          },
          "gardens": {
            "max": 123,
            "min": 123
          },
          "groundFloor": {
            "max": 123,
            "min": 123
          },
          "kitchen": {
            "max": 123,
            "min": 123
          },
          "livingSpace": {
            "max": 123,
            "min": 123
          },
          "livingroom": {
            "max": 123,
            "min": 123
          },
          "terraces": {
            "max": 123,
            "min": 123
          },
          "total": {
            "max": 123,
            "min": 123
          }
        },
        "type": "PROPERTY_TYPE_T1_T2",
        "wcCount": {
          "max": 123,
          "min": 123
        }
      },
      "hasAnomaly": true,
      "isAuction": true,
      "isUrgent": true,
      "land": {
        "canConstruct": true,
        "isServiced": true,
        "surface": {
          "max": 123,
          "min": 123
        },
        "surfaceConstructable": {
          "max": 123,
          "min": 123
        },
        "type": [],
        "haveBuildingPermit": true,
        "haveElectricity": true,
        "haveTelecom": true,
        "haveWater": true
      },
      "lastModifiedAt": [
        {
          "max": "2022-10-21T11:31:33.593Z",
          "min": "2022-10-21T11:31:33.593Z"
        }
      ],
      "offer": [
        {
          "isCurrentlyOccupied": true,
          "renting": {
            "isColocation": true,
            "isLongTerm": true,
            "isShortTerm": true,
            "isSubLease": true
          },
          "type": "OFFER_BUY"
        }
      ],
      "parking": {
        "count": {
          "max": 123,
          "min": 123
        },
        "numberOfCars": {
          "max": 123,
          "min": 123
        },
        "surface": {
          "max": 123,
          "min": 123
        },
        "type": []
      },
      "process": [],
      "scope": [],
      "tags": [
        "<string>"
      ],
      "type": [
        "CLASS_HOUSE"
      ],
      "warrantyDeposit": {
        "max": 123,
        "min": 123
      },
      "firstSeenAt": [
        {
          "max": "2022-10-21T11:31:33.593Z",
          "min": "2022-10-21T11:31:33.593Z"
        }
      ],
      "location": {
        "cityCoordinate": {
          "location": {
            "geoBoundingBox": {
              "bottomRight": {
                "lat": 123,
                "lon": 123
              },
              "topLeft": {
                "lat": 123,
                "lon": 123
              }
            },
            "geoDistance": {
              "distanceKm": 123,
              "pin": {
                "lat": 123,
                "lon": 123
              }
            },
            "geoInseeCodeDistance": {
              "distanceKm": 123,
              "inseeCode": "<string>"
            }
          }
        },
        "department": "<string>",
        "inseeCode": "<string>",
        "irisCode": "<string>",
        "locationCoordinate": {
          "location": {
            "geoBoundingBox": {
              "bottomRight": {
                "lat": 123,
                "lon": 123
              },
              "topLeft": {
                "lat": 123,
                "lon": 123
              }
            },
            "geoDistance": {
              "distanceKm": 123,
              "pin": {
                "lat": 123,
                "lon": 123
              }
            },
            "geoInseeCodeDistance": {
              "distanceKm": 123,
              "inseeCode": "<string>"
            }
          }
        },
        "postalCode": "<string>"
      },
      "source": {
        "flxId": "<string>",
        "url": "<string>",
        "website": "<string>"
      },
      "currency": [],
      "mainPropertyAdFlxId": [
        "<string>"
      ],
      "propertyFlxId": [
        "<string>"
      ],
      "isPro": true,
      "seller": [],
      "isOnline": true,
      "isExclusive": true
    },
    "fullTexts": [
      "<string>"
    ],
    "keywords": [
      "<string>"
    ]
  },
  "webhook_url": "<string>",
  "search_name": "<string>",
  "context": {
    "metadata": {}
  },
  "match": [
    "ALERT_MATCH_CREATED"
  ]
}
'
{
  "data": {
    "alert_id": "<string>"
  }
}

Documentation Index

Fetch the complete documentation index at: https://doc.fluximmo.io/llms.txt

Use this file to discover all available pages before exploring further.

Avant de créer une alerte, vérifier que ton webhook répond 200 aux données de sample disponibles sans auth (GET /v2/sample/webhook/adverts).
PUT /v2/protected/adverts/search/alerts enregistre une alerte adverts : à chaque advert qui matche search_query, Fluximmo POSTe le payload sur webhook_url. Le search_query réutilise exactement le schéma FilterAdvert, identique à celui de l’alerte adverts elle-même. Pas de backfill à la création. Seules les adverts ingérées après la création de l’alerte déclenchent un webhook. Si vous avez besoin d’historique, voir Historique des matches (utilisable uniquement après que l’alerte ait reçu des matches).

Champs clés

  • search_query — payload FilterAdvert, identique au search.
  • webhook_url — endpoint HTTPS public qui recevra les POST de Fluximmo (cf. concept Webhooks).
  • match — tableau parmi ALERT_MATCH_CREATED (nouvelle advert matchée, ) et ALERT_MATCH_ADVERT_EVENT (events PRICE / REPUBLISHED / UNPUBLISHED sur les adverts historiquement matchées par cette alerte). Voir Match types & cycle alerte.
  • search_name — libellé humain pour reconnaître l’alerte dans la liste.
  • context — objet libre ({ metadata: ... }) propagé dans chaque webhook : pratique pour relier la livraison à une campagne / un user interne / une release.

Cas d’usage

  • Chasseur immo / FlipAndGo — découvrir chaque nouvelle annonce dans une zone et un budget.
  • CRM agence — pousser automatiquement les nouvelles annonces matchant le projet d’un client dans son fil de prospection.
  • Veille événementielle — suivre les baisses de prix et republications sur un périmètre via ALERT_MATCH_ADVERT_EVENT.

Exemples

B1 — Achat appartement département (use case standard)

Nouvelles annonces uniquement (pas d’events). Idéal pour démarrer. Filtre isOnline: true recommandé en production pour ne recevoir que des adverts actuellement publiées.
{
  "search_query": {
    "filterAd": {
      "location": { "department": "75" },
      "type": ["CLASS_FLAT"],
      "offer": [{ "type": "OFFER_BUY" }],
      "isOnline": true
    }
  },
  "webhook_url": "https://votre-domaine.com/webhooks/fluximmo",
  "match": ["ALERT_MATCH_CREATED"],
  "search_name": "Achat T2-T3 Paris"
}

B2 — Avec events (suivi prix + dépublications)

Combinaison CREATED + ADVERT_EVENT : vous recevez d’abord la première découverte, puis chaque event ultérieur (PRICE, REPUBLISHED, UNPUBLISHED) uniquement sur les adverts déjà matchées par cette même alerte.
{
  "search_query": {
    "filterAd": {
      "location": { "department": "75" },
      "type": ["CLASS_FLAT"],
      "offer": [{ "type": "OFFER_BUY" }],
      "currentPrice": { "value": { "max": 600000 } },
      "isOnline": true
    }
  },
  "webhook_url": "https://votre-domaine.com/webhooks/fluximmo",
  "match": ["ALERT_MATCH_CREATED", "ALERT_MATCH_ADVERT_EVENT"],
  "search_name": "Paris achat - veille prix"
}
Les events ne sont pas rétroactifs : si vous créez l’alerte aujourd’hui, vous ne recevrez pas les PRICE survenus hier sur des adverts existantes. Seuls comptent les matches obtenus après la création.

B3 — Range prix mono-département

Achat appartement département 92, 100k–400k€. Côté ADVERT, location est un objet unique : pour cibler plusieurs départements, créez une alerte par zone.
{
  "search_query": {
    "filterAd": {
      "location": { "department": "92" },
      "type": ["CLASS_FLAT"],
      "offer": [{ "type": "OFFER_BUY" }],
      "currentPrice": { "value": { "min": 100000, "max": 400000 } },
      "isOnline": true
    }
  },
  "webhook_url": "https://votre-domaine.com/webhooks/fluximmo",
  "match": ["ALERT_MATCH_CREATED"],
  "search_name": "92 achat appart 100-400k"
}
ADVERT alerts acceptent un seul objet location (vs PROPERTY qui supporte un array multi-zones OR). Pour couvrir plusieurs départements, créez N alertes distinctes — c’est plus explicite et plus simple à monitorer.

Authorizations

x-api-key
string
header
required

Body

application/json
search_query
object
required
webhook_url
string
search_name
string
context
object
match
enum<string>[]
Available options:
ALERT_MATCH_UNKNOWN,
ALERT_MATCH_CREATED,
ALERT_MATCH_ADVERT_EVENT
Example:
["ALERT_MATCH_CREATED"]

Response

data
object
required