---
title: "Recommandation de négociation et lettre d'offre"
method: POST
path: "/annonces/{id}/negociation"
---

# Recommandation de négociation et lettre d'offre

`POST /annonces/{id}/negociation`

## Request

- Base URL: `https://pillr.fr/api/v1`
- URL: `https://pillr.fr/api/v1/annonces/{id}/negociation`
- Auth: HTTP bearer

Recommandation de négociation et lettre de proposition d'achat pour une annonce analysée : prix proposé (le vôtre, ou le prix demandé moins les travaux estimés et une marge de négociation, borné, comme sur la fiche), cibles et leviers relevés par l'analyse, vie de l'annonce (jours en ligne, baisses de prix), écart au prix de référence de la commune, puis arguments et lettre rédigés par l'IA à partir de ce seul contexte, au ton et au destinataire choisis. Un appel à un modèle Gemini par appel. Rien n'est débité si l'annonce est absente ou si l'IA ne rend rien d'exploitable. Coût : 20 crédits par appel réussi.

## Path parameters

- `id` string, required: Identifiant de l'annonce : lbc:<numéro>, bienici:<identifiant>, seloger:<numéro> ou identifiant Pillr.

## Request body

- object
  - `prix_propose` integer: Votre prix proposé, en euros ; à défaut, le prix recommandé est calculé.
  - `ton` 'cordial' | 'neutre' | 'ferme': Ton de la lettre (défaut : neutre).
  - `destinataire` 'agence' | 'vendeur': À qui la lettre s'adresse : l'agence ou le vendeur.

## Response `200`

Réponse servie et débitée (sauf réponse identique déjà servie dans les 24 h).

- object
  - `id` string, required
  - `id_portail` string, nullable, required
  - `type_vendeur` 'pro' | 'particulier' | 'inconnu', required: Statut du vendeur : pro (professionnel nommé), particulier, ou inconnu quand le portail ne le dit pas. Une annonce qui n'est pas celle d'un professionnel perd les téléphones et les emails de ses textes.
  - `prix_demande` number, required
  - `recommandation` object, required
    - `prix_propose` number, required
    - `remise` number, required
    - `remise_pct` number, required
    - `origine` 'calcul' | 'client', required: calcul : prix demandé moins les travaux et une marge, borné ; client : le prix proposé par l'appelant.
    - `methode` string, required
  - `cible` object, required
    - `min` number, nullable, required
    - `max` number, nullable, required
    - `qualite` object, required: Ce qui permet de juger la valeur : nombre, provenance, incertitude, drapeaux, date et source.
      - `n` integer, nullable, required: Nombre d'observations derrière la valeur ; null si sans objet.
      - `provenance` 'mesure' | 'estime', nullable, required: mesure : observé sur la donnée ; estime : modèle, barème ou imputation ; null : sans objet.
      - `incertitude` object, nullable, required: Incertitude de la valeur : fourchette et demi-largeur.
        - `demi_largeur_pct` number, nullable, required: Demi-largeur de la fourchette, en % de la valeur.
        - `bas` number, nullable, required
        - `haut` number, nullable, required
      - `drapeaux` string[], required: Ce qui doit faire lire la valeur avec prudence ; vide si rien.
      - `methode` string, nullable, required: Méthode de calcul ou de rattachement, en clair.
      - `donnees_du` string, nullable, required: Date de la donnée (AAAA-MM-JJ ou horodatage ISO 8601).
      - `source` string, required: Source publique ou moteur Pillr, en clair.
  - `leviers` string[], required: Leviers de négociation relevés par l'analyse de l'annonce.
  - `arguments` string[], required: Arguments rédigés par l'IA, tirés du seul contexte servi.
  - `lettre` string, required: Lettre de proposition d'achat, à compléter du nom et de la date.
  - `vie` object, required
    - `premiere_parution` string, nullable, required
    - `jours_en_ligne` number, nullable, required
    - `baisses` integer, required
    - `baisse_cumulee_pct` number, nullable, required
    - `dernier_changement_le` string, nullable, required
  - `ecart_marche` object, required
    - `prix_m2_annonce` number, nullable, required
    - `prix_m2_marche` number, nullable, required
    - `ecart_pct` number, nullable, required
  - `sources` string[], required
  - `moteur` object, required
    - `modele` string, nullable, required
    - `genere_le` string, required
  - `credits` object, required: Crédits débités par cet appel (réservés, pour une tâche en cours), et crédits encore utilisables ce mois avant la coupure : crédits offerts, crédits inclus du mois et crédits facturables sous le plafond de dépense (null si inconnus ou en bac à sable).
    - `debites` integer, required
    - `restants` integer, nullable, required

## Other responses

- `400`: Paramètres invalides
- `401`: Clé d'API absente
- `402`: Crédits insuffisants ; Carte requise ; Plafond mensuel de dépense atteint
- `403`: Portée insuffisante
- `404`: Ressource absente : rien n'est débité
- `429`: Trop de requêtes par minute
- `500`: Erreur interne
- `503`: API indisponible ; Donnée momentanément indisponible

---

[API](https://skmtc.dev/pillr/apis/api-pillr.md) · [All operations](https://skmtc.dev/pillr/apis/api-pillr/llms.txt) · [OpenAPI document](https://skmtc.dev/pillr/apis/api-pillr/revisions/218b2866bd6c?raw)
