> ## 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.

# Données d'exemple API immobilier sans clé (no-auth)

> 4 endpoints sample no-auth pour découvrir les structures Property, Advert et webhooks avant inscription.

Aucun compte requis. Idéal pour tester votre parsing en local ou découvrir le format avant de demander une clé test. Les 4 endpoints renvoient des données réelles, anonymisées si besoin.

## 1. Échantillon de properties

10 properties (biens dédupliqués multi-portails). Schéma identique à `POST /v2/protected/properties/search`.

<CodeGroup>
  ```bash curl theme={null}
  curl --location 'https://api.fluximmo.io/v2/sample/properties'
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.fluximmo.io/v2/sample/properties")
  properties = response.json()["data"]
  print(f"Reçu {len(properties)} properties")
  ```

  ```javascript Node theme={null}
  const response = await fetch("https://api.fluximmo.io/v2/sample/properties");
  const { data: properties } = await response.json();
  console.log(`Reçu ${properties.length} properties`);
  ```
</CodeGroup>

Référence : [`GET /v2/sample/properties`](/api-v2-reference/sample-properties/get-a-sample-of-properties).

## 2. Échantillon d'adverts

10 adverts (annonces brutes, 1 advert = 1 URL portail). Schéma identique au payload livré par une alerte ADVERT en webhook.

<CodeGroup>
  ```bash curl theme={null}
  curl --location 'https://api.fluximmo.io/v2/sample/adverts'
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.fluximmo.io/v2/sample/adverts")
  adverts = response.json()["data"]
  print(f"Reçu {len(adverts)} adverts")
  ```

  ```javascript Node theme={null}
  const response = await fetch("https://api.fluximmo.io/v2/sample/adverts");
  const { data: adverts } = await response.json();
  console.log(`Reçu ${adverts.length} adverts`);
  ```
</CodeGroup>

Référence : [`GET /v2/sample/adverts`](/api-v2-reference/sample-adverts/get-a-sample-of-ads).

## 3. Webhook properties — payload type

Exemple du body envoyé par Fluximmo sur un webhook `PROPERTY` (création / merge). Le payload contient les **IDs uniquement** : un refetch via `GET /v2/protected/properties/{flxId}` est requis pour récupérer la donnée enrichie.

<CodeGroup>
  ```bash curl theme={null}
  curl --location 'https://api.fluximmo.io/v2/sample/webhook/properties'
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.fluximmo.io/v2/sample/webhook/properties")
  payload = response.json()
  print(payload)
  ```

  ```javascript Node theme={null}
  const response = await fetch(
    "https://api.fluximmo.io/v2/sample/webhook/properties"
  );
  const payload = await response.json();
  console.log(payload);
  ```
</CodeGroup>

Référence : [`GET /v2/sample/webhook/properties`](/api-v2-reference/sample-properties/sample-properties-webhook-body).

## 4. Webhook adverts — payload type

Exemple du body envoyé par Fluximmo sur un webhook `ADVERT` (création, changement de prix, republication, mise hors-ligne). Le payload est **complet**, pas de refetch nécessaire.

<CodeGroup>
  ```bash curl theme={null}
  curl --location 'https://api.fluximmo.io/v2/sample/webhook/adverts'
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.fluximmo.io/v2/sample/webhook/adverts")
  payload = response.json()
  print(payload)
  ```

  ```javascript Node theme={null}
  const response = await fetch(
    "https://api.fluximmo.io/v2/sample/webhook/adverts"
  );
  const payload = await response.json();
  console.log(payload);
  ```
</CodeGroup>

Référence : [`GET /v2/sample/webhook/adverts`](/api-v2-reference/sample-adverts/sample-advert-webhook-body).

## Property vs Advert — API à la demande vs flux temps-réel

La différence principale est un **mode d'usage**, pas un format de données :

* **`Property` = consultation API à la demande** (recherche/refetch synchrone, idéal pour interfaces utilisateur, dashboards, scoring ponctuel, enrichissement à la requête).
* **`Advert` = flux temps-réel via webhook** (gros volume d'événements continus poussés en push, idéal pour réplique de DB, pipelines de traitement, alertes live, ingestion massive).

Détail complet : [Property vs Advert](/concepts/property-vs-advert).

| Critère               | ADVERT                                                                                                                                                                | PROPERTY                                                                                                                                            |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Définition**        | Annonce individuelle sur un portail (1 URL = 1 advert).                                                                                                               | Bien physique unique, agrégé à partir d'une chaîne de déduplication d'adverts.                                                                      |
| **Identifiant**       | `flxId` (advert) + `propertyFlxId` (rattachement à la chaîne de dédup)                                                                                                | `flxId` (property) + `adverts[]` (constituants)                                                                                                     |
| **Mode d'accès**      | **Webhook uniquement** via alerte ADVERT (pas d'endpoint de search public). Le payload de l'alerte est identique à celui d'un search property côté schéma de filtres. | **API BAAS à la demande** : `POST /v2/protected/properties/search` (+ alerte webhook qui livre des IDs uniquement).                                 |
| **Webhook payload**   | **Payload COMPLET** de l'advert + bloc `event`.                                                                                                                       | **IDs uniquement** → refetch via `GET /v2/protected/properties/{flxId}` (facturé).                                                                  |
| **Events supportés**  | OUI : `PRICE`, `REPUBLISHED`, `UNPUBLISHED` (`ALERT_MATCH_ADVERT_EVENT`).                                                                                             | Limité : `CREATED` et `MERGED` (uniquement quand fusion d'une nouvelle advert dans la property). Pas d'event `UNPUBLISHED` côté property.           |
| **Cas d'usage idéal** | Réplication BDD multi-portails, monitoring temps réel, tracking concurrentiel par seller, alerte chasseur avec payload self-contained.                                | **Recherche multi-portail BAAS API**, analytics agrégé, valorisation, market intel, dédup côté serveur Fluximmo.                                    |
| **Anti-pattern**      | Analytics agrégé sans grouper par `propertyFlxId` (un bien physique compté N fois).                                                                                   | **Stocker en DB** les résultats search/alertes : pas conçu pour ça, pas d'event `UNPUBLISHED` côté property → drift garanti sans re-fetch régulier. |
| **Coût/perf**         | Volume webhook élevé (toutes les annonces matching, doublons inclus). Seule option pour répliquer la donnée Fluximmo en local.                                        | À la demande via API : volume contrôlé, mais ownership donnée moindre (pas de stream continu côté client).                                          |

<Note>
  **Reconstituer la dédup côté client** — chaque advert porte un `propertyFlxId`. Deux adverts avec le même `propertyFlxId` sont des doublons d'un même bien physique. La première advert non-dupliquée a `flx_id == property_id` ; les suivantes héritent du `property_id` de la chaîne. Un client ADVERTS-only peut donc reconstruire sa propre vue agrégée à la `Property` côté DB.
</Note>

<Warning>
  **Cycle de vie alerte** — Supprimer + recréer une alerte = perte d'historique des events sur les annonces matchées par l'ancienne alerte. Préférez `PATCH /alerts/{flxId}` pour modifier en place.
</Warning>

<Warning>
  **Pas de backfill à la création** — Une alerte ne match QUE les adverts/properties traitées **après** sa création. Les annonces antérieures qualifiantes ne seront jamais émises. Pour couvrir le passé : demandez le backfill historique sur votre webhook par mail à [contact@fluximmo.com](mailto:contact@fluximmo.com).
</Warning>

<Warning>
  **Events ADVERT réels** — `PRICE` (toute variation, même 1 €), `REPUBLISHED` (offline → online), `UNPUBLISHED` (online → offline). `CHECK` (vérification sans changement) ne déclenche **pas** de webhook.
</Warning>

## Étape suivante

<CardGroup cols={2}>
  <Card title="Quickstart 5 min" icon="rocket" href="/demarrer/quickstart">
    Récupérer une clé test gratuite et lancer un premier search authentifié.
  </Card>

  <Card title="Property vs Advert" icon="code-branch" href="/concepts/property-vs-advert">
    Décider quel endpoint correspond à votre cas d'usage.
  </Card>
</CardGroup>

<Card title="Clé test gratuite — 1 semaine" icon="key" href="https://my.fluximmo.io">
  Créez un compte sur **my.fluximmo.io** pour récupérer une clé API test gratuite (1 semaine, accès limité). Aucun paiement requis.
</Card>
