Chaletiste Recherche API

Recherche, comparaison et serveur MCP (fonctions serverless).

Operations 5

GET /api/v1/search Recherche filtrée et triée, avec explication #
GET /api/v1/compare Compare 2 à 6 modèles et désigne le meilleur par critère #
POST /api/match Trouver mon chalet : description en langage naturel → critères (IA, repli par… #
POST /api/match-photo Chalet du catalogue le plus proche d'une photo (IA multimodale + similarité… #
POST /api/mcp Serveur MCP (Streamable HTTP, JSON-RPC 2.0, protocole 2025-06-18) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/chaletiste-fr:chaletiste-fr-recherche-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

chaletiste-fr-recherche-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Chaletiste Recherche API
  version: 1.0.0
  summary: 'Comparateur français des chalets en bois en kit : données ouvertes, recherche, budget, urbanisme, devis.'
  description: 'API publique et gratuite de Chaletiste (https://chaletiste.fr). Lecture sans clé ; les fichiers /api/v1/*.json sont régénérés chaque nuit. Données sous licence CC BY 4.0, attribution « Chaletiste » avec lien. Les endpoints quote et price-alert transmettent des données personnelles : le consentement explicite de l''utilisateur humain est obligatoire (consent: true). Serveur MCP équivalent : https://chaletiste.fr/api/mcp. Documentation : https://chaletiste.fr/developpeurs/.'
  contact:
    name: Chaletiste
    email: bonjour@chaletiste.fr
    url: https://chaletiste.fr/developpeurs/
  license:
    name: CC BY 4.0 (données)
    identifier: CC-BY-4.0
servers:
- url: https://chaletiste.fr
security: []
tags:
- name: Recherche
  description: Recherche, comparaison et serveur MCP (fonctions serverless).
paths:
  /api/v1/search:
    get:
      operationId: searchChalets
      tags:
      - Recherche
      summary: Recherche filtrée et triée, avec explication
      parameters:
      - name: q
        in: query
        required: false
        description: Texte libre (marque, modèle, usage).
        schema:
          type: string
      - name: category
        in: query
        required: false
        description: Catégorie, sous-catégorie ou alias.
        schema:
          type: string
          enum:
          - abri
          - abris
          - abris-de-jardin-bois
          - bureau
          - bureau-de-jardin
          - chalet-bureau
          - chalet-habitable
          - chalet-jardin
          - chalet-loisirs
          - chalets-de-jardin
          - chalets-habitables
          - fuste
          - fuste-rondins
          - habitable
          - lodge
          - maison
          - maison-bois-kit
          - pool-house
          - pool-house-bois
          - rondins
          - studio
          - studio-jardin
          - studios-de-jardin
          - tiny
          - tiny-house
          - tiny-houses
      - name: brand
        in: query
        required: false
        description: Identifiant ou nom de marque.
        schema:
          type: string
      - name: max_price
        in: query
        required: false
        description: Prix TTC maximal (€).
        schema:
          type: number
      - name: min_price
        in: query
        required: false
        description: Prix TTC minimal (€).
        schema:
          type: number
      - name: min_surface
        in: query
        required: false
        description: Surface minimale (m²).
        schema:
          type: number
      - name: max_surface
        in: query
        required: false
        description: Surface maximale (m²).
        schema:
          type: number
      - name: min_wall_mm
        in: query
        required: false
        description: Épaisseur minimale des parois (mm).
        schema:
          type: number
      - name: max_delivery_days
        in: query
        required: false
        description: Délai de livraison maximal (jours).
        schema:
          type: number
      - name: max_assembly_hours
        in: query
        required: false
        description: Temps de montage maximal (heures).
        schema:
          type: number
      - name: habitable
        in: query
        required: false
        description: Modèles habitables uniquement.
        schema:
          type: boolean
      - name: sort
        in: query
        required: false
        description: Tri (défaut price_per_m2, ou relevance avec q).
        schema:
          type: string
          enum:
          - price
          - price_per_m2
          - surface
          - delivery
          - assembly
          - wall
          - relevance
      - name: limit
        in: query
        required: false
        description: Nombre de résultats, 1 à 50 (défaut 10).
        schema:
          type: integer
          minimum: 1
          maximum: 50
      responses:
        '200':
          description: Résultats
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
        '400':
          description: Erreur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v1/compare:
    get:
      operationId: compareChalets
      tags:
      - Recherche
      summary: Compare 2 à 6 modèles et désigne le meilleur par critère
      parameters:
      - name: ids
        in: query
        required: true
        description: id séparés par des virgules.
        schema:
          type: string
      responses:
        '200':
          description: Comparaison
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Erreur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Erreur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/match:
    post:
      operationId: findChalets
      tags:
      - Recherche
      summary: 'Trouver mon chalet : description en langage naturel → critères (IA, repli par…'
      description: 20 descriptions par jour et par IP (les relances avec criteria sont illimitées). method vaut llm, regles ou criteres. Si aucun modèle ne passe tous les filtres, relaxed liste les critères assouplis.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                q:
                  type: string
                  maxLength: 600
                  description: Le projet en français.
                criteria:
                  type: object
                  description: 'Objet criteria renvoyé par un appel précédent, modifié : relance sans IA.'
                mode:
                  type: string
                  enum:
                  - rules
                  description: Force le parseur par règles.
            example:
              q: Terrain en pente de 600 m² en Savoie, bureau de jardin de 15 à 20 m² sans permis, budget 12 000 € tout compris, livraison avant l'été, je le monte moi-même avec un ami.
      responses:
        '200':
          description: Critères compris et modèles
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  method:
                    type: string
                    enum:
                    - llm
                    - regles
                    - criteres
                  criteria:
                    type: object
                  understood:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        label:
                          type: string
                  total:
                    type: integer
                  relaxed:
                    type: array
                    items:
                      type: string
                  summary:
                    type: string
                  warnings:
                    type: array
                    items:
                      type: object
                  results:
                    type: array
                    items:
                      type: object
        '400':
          description: Erreur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Erreur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/match-photo:
    post:
      operationId: findChaletsFromPhoto
      tags:
      - Recherche
      summary: Chalet du catalogue le plus proche d'une photo (IA multimodale + similarité…
      description: 10 analyses par jour et par IP, délai maximal 12 s, aucune image conservée. image_type vaut chalet, terrain ou autre. best porte label « C’est probablement lui » si marque et modèle sont reconnus.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                image_url:
                  type: string
                  format: uri
                  description: URL https publique (JPEG, PNG, WebP, 5 Mo max).
                image:
                  type: string
                  description: Ou data URL base64.
                attributes:
                  type: object
                  description: Relance sans IA avec les attributs renvoyés, modifiés.
      responses:
        '200':
          description: Analyse et propositions
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Erreur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Erreur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: Erreur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/mcp:
    post:
      operationId: mcp
      tags:
      - Recherche
      summary: Serveur MCP (Streamable HTTP, JSON-RPC 2.0, protocole 2025-06-18)
      description: 'Outils : find_chalets, find_chalets_from_photo, search_chalets, get_chalet, compare_chalets, estimate_total_budget, check_permit, list_guides, get_guide, request_quote, search, fetch.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              jsonrpc: '2.0'
              id: 1
              method: tools/list
      responses:
        '200':
          description: Réponse JSON-RPC
          content:
            application/json:
              schema:
                type: object
        '202':
          description: Notification acceptée
components:
  schemas:
    SearchResponse:
      type: object
      properties:
        ok:
          type: boolean
        query:
          type: object
        sort:
          type: string
        total:
          type: integer
        count:
          type: integer
        explanation:
          type: string
        results:
          type: array
          items:
            $ref: '#/components/schemas/ProductSummary'
        data_updated:
          type: string
        license:
          type: string
        attribution:
          type: string
    Error:
      type: object
      properties:
        ok:
          type: boolean
          const: false
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
    ProductSummary:
      type: object
      properties:
        id:
          type:
          - string
          - number
          - boolean
          - 'null'
        title:
          type:
          - string
          - number
          - boolean
          - 'null'
        brand:
          type:
          - string
          - number
          - boolean
          - 'null'
        category:
          type:
          - string
          - number
          - boolean
          - 'null'
        price_eur:
          type:
          - string
          - number
          - boolean
          - 'null'
        price_per_m2_eur:
          type:
          - string
          - number
          - boolean
          - 'null'
        surface_m2:
          type:
          - string
          - number
          - boolean
          - 'null'
        wall_thickness_mm:
          type:
          - string
          - number
          - boolean
          - 'null'
        assembly_hours:
          type:
          - string
          - number
          - boolean
          - 'null'
        assembly_estimated:
          type:
          - string
          - number
          - boolean
          - 'null'
        delivery_days_max:
          type:
          - string
          - number
          - boolean
          - 'null'
        permit:
          type:
          - string
          - number
          - boolean
          - 'null'
        retailer:
          type:
          - string
          - number
          - boolean
          - 'null'
        price_date:
          type:
          - string
          - number
          - boolean
          - 'null'
        url:
          type:
          - string
          - number
          - boolean
          - 'null'
        api_url:
          type:
          - string
          - number
          - boolean
          - 'null'
        md_url:
          type:
          - string
          - number
          - boolean
          - 'null'
        photo:
          type:
          - string
          - number
          - boolean
          - 'null'
externalDocs:
  description: Guide développeurs et agents
  url: https://chaletiste.fr/developpeurs/