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

# Quickstart API Fluximmo — premier appel en 5 minutes

> 5 minutes en self-service : sample no-auth → clé test gratuite → premier search.

Vous allez : (1) voir un payload sans inscription, (2) récupérer une clé test gratuite sur `my.fluximmo.io`, (3) lancer votre premier search authentifié. Tout en self-service.

<Tip>
  **Couverture & fraîcheur** — ce que vous interrogez derrière l'API :

  * 75 000+ nouvelles annonces ingérées chaque jour
  * Médiane de 5 minutes entre publication portail et mise à disposition (webhook / API)
  * 99 % du marché immobilier français couvert
  * Service en production continue depuis 2017
</Tip>

<Steps>
  <Step title="Voir un payload sans clé">
    L'endpoint `sample/properties` est public, sans authentification. Il renvoie 10 properties représentatives pour valider votre parsing.

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

    Trois autres endpoints sample sont disponibles (adverts + payloads webhook type). Voir [Données d'exemple](/demarrer/sample-data).
  </Step>

  <Step title="Créer une clé test gratuite">
    Rendez-vous sur [my.fluximmo.io](https://my.fluximmo.io) → onglet **API** → **Générer une clé test**.

    * Gratuite, valable **1 semaine**
    * Accès limité (volume et périmètre réduits, suffisant pour valider une intégration)
    * Aucun paiement, aucune carte bancaire requise

    Conservez la clé en variable d'environnement :

    ```bash theme={null}
    export FLUXIMMO_API_KEY="votre-cle-test"
    ```
  </Step>

  <Step title="Premier search PROPERTIES authentifié">
    L'endpoint `properties/search` retourne des biens **dédupliqués** multi-portails. Ici, on demande 10 biens en vente dans le 75001.

    <CodeGroup>
      ```bash curl theme={null}
      curl --location 'https://api.fluximmo.io/v2/protected/properties/search' \
        --header 'x-api-key: '"$FLUXIMMO_API_KEY"'' \
        --header 'Content-Type: application/json' \
        --data '{
          "size": 10,
          "sortBy": "FIRST_SEEN_AT",
          "orderBy": "DESC",
          "search": {
            "filterProperty": {
              "location": [{ "postalCode": "75001" }],
              "offer": [{ "type": "OFFER_BUY" }]
            },
            "fullTexts": [],
            "keywords": []
          }
        }'
      ```

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

      response = requests.post(
          "https://api.fluximmo.io/v2/protected/properties/search",
          headers={"x-api-key": os.environ["FLUXIMMO_API_KEY"]},
          json={
              "size": 10,
              "sortBy": "FIRST_SEEN_AT",
              "orderBy": "DESC",
              "search": {
                  "filterProperty": {
                      "location": [{"postalCode": "75001"}],
                      "offer": [{"type": "OFFER_BUY"}],
                  },
                  "fullTexts": [],
                  "keywords": [],
              },
          },
      )
      data = response.json()
      print(f"{data['data']['count']} matches, {len(data['data']['items'])} renvoyés")
      ```

      ```javascript Node theme={null}
      const response = await fetch(
        "https://api.fluximmo.io/v2/protected/properties/search",
        {
          method: "POST",
          headers: {
            "x-api-key": process.env.FLUXIMMO_API_KEY,
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            size: 10,
            sortBy: "FIRST_SEEN_AT",
            orderBy: "DESC",
            search: {
              filterProperty: {
                location: [{ postalCode: "75001" }],
                offer: [{ type: "OFFER_BUY" }],
              },
              fullTexts: [],
              keywords: [],
            },
          }),
        }
      );
      const data = await response.json();
      console.log(`${data.data.count} matches, ${data.data.items.length} renvoyés`);
      ```
    </CodeGroup>

    La réponse retourne un objet paginé `{ data: { count, items: Property[], searchAfterHash } }`. Schéma complet : [`POST /v2/protected/properties/search`](/api-v2-reference/properties-search/search-properties).
  </Step>

  <Step title="Aller plus loin">
    <CardGroup cols={2}>
      <Card title="Property vs Advert" icon="code-branch" href="/concepts/property-vs-advert">
        Comprendre la différence entre annonce brute et bien dédupliqué avant de choisir l'endpoint.
      </Card>

      <Card title="Webhooks" icon="webhook" href="/concepts/webhooks">
        ADVERT = payload complet, PROPERTY = IDs + refetch. Cycle de vie et events.
      </Card>

      <Card title="Match types & alertes" icon="bell" href="/concepts/match-types-cycle-alerte">
        Cycle de vie d'une alerte, events `PRICE` / `REPUBLISHED` / `UNPUBLISHED`.
      </Card>

      <Card title="Playbook : alerte ADVERT" icon="rocket" href="/playbooks/alerte-advert-departement">
        Mettre en place une alerte temps réel sur un département en 15 minutes.
      </Card>

      <Card title="Page LLM-ready" icon="robot" href="/llms-context">
        Spec consolidée à coller dans ChatGPT / Claude pour générer des payloads valides.
      </Card>

      <Card title="FAQ" icon="circle-question" href="/ressources/faq">
        Questions fréquentes sur les rate-limits, la facturation, la qualité de la donnée.
      </Card>
    </CardGroup>
  </Step>
</Steps>

<Note>
  **Vous générez vos payloads avec un LLM (ChatGPT, Claude) ?**
  Copiez la [page LLM-ready](/llms-context) dans votre prompt pour des payloads valides du premier coup.
</Note>

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