Aller au contenu
Senior24

Accueil › Documentation de l’API

Documentation de l’API

Une API REST, en JSON. Elle ne suppose aucun logiciel de votre côté : votre intégrateur fait le raccord.

L’essentiel

  • Adresse de base : https://senior24.fr/api/v1
  • Authentification : en-tête Authorization: Bearer VOTRE_CLE
  • Un lead est vendu une seule fois. Lisez, puis achetez vite.
  • Les contacts n’apparaissent qu’après l’achat.
  • Un crédit vaut un euro. Le prix débité est prixCredits. Lisez-le, ne le calculez pas.
  • Une vente est définitive. Il n’y a pas d’annulation ni de remboursement.

Authentification

Créez une clé depuis votre espace. Elle n’est affichée qu’une fois.

Authorization: Bearer pl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

L’en-tête X-Cle-Api est accepté à la place. Une clé se révoque à tout moment, immédiatement.

GET /api/v1/leads — le catalogue

Les leads disponibles, contacts masqués. Tous métiers par défaut.

curl -H "Authorization: Bearer VOTRE_CLE" \
  "https://senior24.fr/api/v1/leads?departement=69,38&chaleur=chaud&tri=prix_croissant&limite=50"

Filtres

ParamètreValeursRemarque
metiertous, monte_escalier, plateforme_elevatrice, ascenseur_privatif, rampe_pmr, douche_senior, baignoire_a_porte, cuisine_pmr Par défaut : tous. Un métier fermé n’a pas de leads
departement01 à 95, 2A, 2B, 971 à 976Répétable, ou séparé par des virgules
chaleurchaud, standard, froidUrgence déclarée par le demandeur
delaiurgent, 3mois, renseignement
fraicheur24Seulement les leads de moins de 24 h
ageoui (70 ans ou plus), non
imposableoui, non, nesaispas
indicateurprobable, a_verifier, peu_probableIndicateur d’aides
aidedepose, compte, sansaide, nesaispasÉtat du dossier d’aide
typeEscalierdroit, tournant, exterieur, colimacon, inconnuMonte-escalier seulement
niveaux1, 2, plusMonte-escalier seulement
trirecents, chauds, prix_croissant, prix_decroissant, anciensPar défaut : recents
limite / decalage1 à 200 / ≥ 0Pagination

Les listes de valeurs sont servies par GET /api/v1/reference. Appelez-le au démarrage plutôt que de recopier ce tableau.

Réponse

{
  "leads": [
    {
      "id": "6b1e...c4",
      "metier": "monte_escalier",
      "departement": "69",
      "delai": "urgent",
      "age": "oui",
      "imposable": "non",
      "indicateur": "probable",
      "niveauAide": "taux_plein",
      "donneesMetier": { "typeEscalier": "tournant", "niveaux": "1" },
      "qualification": { "occupation": "proprietaire", "aide": "compte" },
      "chaleur": "chaud",
      "prixCredits": 169,
      "prixBase": 169,
      "remiseFraicheurPct": 0,
      "publieLe": "2026-03-14T10:22:31.000Z",
      "horodatage": "2026-03-14T10:21:58.000Z"
    }
  ],
  "total": 42,
  "limite": 50,
  "decalage": 0
}

Aucun champ ne contient de nom, de téléphone, d’e-mail ni de code postal. Le compte de base de données qui sert cette route n’a pas le droit de les lire.

Le prix

Trois champs, un seul qui compte pour le débit :

ChampSens
prixCreditsLe prix du lead. C’est lui qui est débité. Un prix par métier, le même pour tous les comptes. Lisez-le, ne le calculez pas.
prixBaseAujourd’hui égal à prixCredits. Conservé pour compatibilité : si une modulation de prix revenait un jour, c’est ici que serait le prix avant remise.
remiseFraicheurPctToujours 0 aujourd’hui. Conservé pour compatibilité.
chaleurQualification du lead, sans effet sur le prix : chaud : urgent, ou sous trois mois avec accord. standard : sous trois mois. froid : simple renseignement.

POST /api/v1/leads/{id}/acheter — acheter un lead

Débite les crédits et renvoie les contacts, en une seule opération.

curl -X POST -H "Authorization: Bearer VOTRE_CLE" \
  "https://senior24.fr/api/v1/leads/6b1e...c4/acheter"
{
  "lead": {
    "id": "6b1e...c4",
    "venteId": "9a4f...11",
    "acheteLe": "2026-03-14T10:31:02.000Z",
    "nom": "Martine Delcourt",
    "telephone": "0612345678",
    "email": "martine.delcourt@exemple.fr",
    "codePostal": "69003",
    "autresCoordonnees": [],
    "departement": "69",
    "delai": "urgent",
    "chaleur": "chaud",
    "donneesMetier": { "typeEscalier": "tournant", "niveaux": "1" }
  },
  "creditsDebites": 169,
  "soldeApres": 831
}

POST /api/v1/achats — acheter un lot

Jusqu’à 100 leads d’un coup. Tout ou rien : si un seul vient d’être vendu, aucun n’est acheté et rien n’est débité. La réponse nomme les fautifs.

curl -X POST -H "Authorization: Bearer VOTRE_CLE" \
  -H "Content-Type: application/json" \
  -d '{"leads": ["6b1e...c4", "7c2f...d5"]}' \
  "https://senior24.fr/api/v1/achats"
{
  "erreur": {
    "code": "lead_indisponible",
    "message": "Lead déjà vendu ou retiré.",
    "leads": ["7c2f...d5"]
  }
}

GET /api/v1/leads/achetes — vos achats

Tout ce que vous avez acheté, contacts compris. Utile pour rattraper ce que votre outil aurait manqué.

curl -H "Authorization: Bearer VOTRE_CLE" \
  "https://senior24.fr/api/v1/leads/achetes?depuis=2026-03-01T00:00:00Z&limite=200"

Autres points d’entrée

AppelÀ quoi ça sert
GET /api/v1/leads/{id}Fiche d’un lead, masquée
GET /api/v1/soldeSolde en crédits. ?historique=oui pour le registre
GET /api/v1/referenceToutes les valeurs de filtre avec leurs libellés

Codes d’erreur

Toutes les erreurs ont la même forme, et un code stable. Testez le code, pas le message.

CodeHTTPSensQue faire
non_autorise401Clé absente, fausse ou révoquéeVérifier la clé
lead_indisponible409Déjà venduRetirer les identifiants de erreur.leads
solde_insuffisant402Pas assez de créditsRecharger
lead_introuvable404N’existe pas ou plusRafraîchir le catalogue
demande_invalide400Requête mal forméeCorriger l’appel
erreur_interne500Panne de notre côtéRéessayer. Rien n’a été débité

L’indicateur d’aides

Trois états, calculés à partir de l’âge et de la situation fiscale. Ce n’est pas une décision d’éligibilité : seule l’Anah décide.

indicateurniveauAideLecture
probabletaux_plein70 ans ou plus, foyer non imposable
probabletaux_reduit70 ans ou plus, foyer imposable
probableindetermine70 ans ou plus, fiscalité non renseignée
a_verifierindetermineMoins de 70 ans, ou locataire
peu_probableindetermineMoins de 70 ans et foyer imposable

Recevoir les leads dans votre CRM

Vous n’êtes pas obligé d’interroger l’API : la plateforme peut pousser chaque lead acheté vers l’adresse de votre choix, dès l’achat. C’est ce qu’attendent Zapier, Make, n8n ou un script maison, et à travers eux n’importe quel CRM.

  1. Dans votre espace, page API et CRM, enregistrez une adresse HTTPS.
  2. Cliquez « Envoyer un test » : un lead fictif arrive, au même format que les vrais.
  3. À chaque achat, un POST JSON part vers cette adresse. Trois tentatives en cas d’échec, puis le résultat est visible sur la même page.
POST https://votre-crm.exemple/senior24
Content-Type: application/json
X-Senior24-Evenement: achat
X-Senior24-Signature: t=1788790000,v1=…

{
  "evenement": "achat",
  "envoyeLe": "2026-09-07T12:00:00.000Z",
  "partenaireId": "…",
  "leads": [
    {
      "id": "…", "venteId": "…", "acheteLe": "2026-09-07T12:00:00.000Z",
      "metier": "monte_escalier", "departement": "69", "codePostal": "69003",
      "delai": "urgent", "age": "oui", "imposable": "non",
      "indicateur": "probable", "niveauAide": "taux_plein",
      "donneesMetier": { "typeEscalier": "tournant", "niveaux": "1" },
      "qualification": { "occupation": "proprietaire", "aide": "depose", "moment": "matin" },
      "prixCredits": 90,
      "nom": "…", "telephone": "…", "email": "…",
      "autresCoordonnees": []
    }
  ]
}

Répondez avec un code 2xx. Tout autre code est compté comme un échec ; un 4xx n’est pas réessayé.

Événement « complement »

Un demandeur refait parfois sa demande avec un autre numéro ou une autre adresse, par exemple pour corriger une faute de frappe. La plateforme reconnaît la même personne, ne crée pas de second lead, et garde les nouvelles coordonnées avec le lead d’origine. Si vous aviez déjà acheté ce lead, vous recevez le même envoi avec "evenement": "complement" et le lead complet : autresCoordonnees liste alors chaque jeu reçu après coup (nom, telephone, email, codePostal, recuLe), du plus ancien au plus récent. Le champ est aussi présent dans /api/v1/leads/achetes et dans la réponse d’achat.

Vérifier la signature

La signature est t=<secondes>,v1=<hex>, où v1 est le HMAC-SHA256 de la chaîne t + "." + corps avec votre secret, affiché sur la page API et CRM. Refusez un envoi dont t a plus de cinq minutes.

// Node.js
const [t, v1] = signature.split(',').map((p) => p.split('=')[1]);
const attendu = crypto.createHmac('sha256', SECRET).update(t + '.' + corpsBrut).digest('hex');
const valide = attendu === v1 && Math.abs(Date.now() / 1000 - Number(t)) < 300;

L’ordre d’arrivée décide

Chaque lead n’est vendu qu’une fois, et tout le monde voit le catalogue en même temps. Le premier qui achète l’emporte. Interrogez souvent, achetez sans attendre.

Conseils

  • Interrogez souvent, achetez tout de suite. Toutes les cinq minutes suffit. Ce qui compte, c’est de ne pas attendre entre la lecture et l’achat.
  • Ne rejouez pas un achat après un délai réseau. Interrogez d’abord /api/v1/leads/achetes : si le lead y est, l’achat a abouti.
  • Stockez l’identifiant du lead. Il ne change jamais.
  • Traitez la situation fiscale comme une donnée personnelle. Elle vous est transmise pour qualifier le dossier de financement, rien d’autre.

Pour obtenir une clé

Créez un compte. Le catalogue est gratuit. La clé se crée depuis votre espace, en un clic, et se révoque aussi vite.

Créer mon compte