Endpoints (8)
GET/api/v1/meQui suis-je avec cette clé
Identité derrière la clé, les limites publiées de l'API et la liste des endpoints. C'est le point de départ : gratuit, aucune donnée métier.
Réponse
{
"ok": true,
"user_id": "11111111-1111-4111-8111-111111111111",
"limites": {
"lectures_par_heure": 240,
"poussees_par_heure": 60,
"poussees_par_jour": 500
},
"endpoints": {
"GET /api/v1/me": "identité derrière la clé",
"GET /api/v1/prospects": "les prospects de ton organisation, paginés et filtrables"
}
}Codes possibles : 200, 401, 429, 503.
GET/api/v1/infosLire mes infos
Les 50 dernières infos poussées dans le compte, de la plus récente à la plus ancienne.
Réponse
{
"ok": true,
"infos": [
{
"id": "22222222-2222-4222-8222-222222222222",
"titre": "Rappel",
"contenu": "Relancer la salle de sport de Montreuil",
"source": "api",
"cree_le": "2026-10-03T09:12:44.000Z"
}
]
}Codes possibles : 200, 401, 429, 502, 503.
POST/api/v1/infosPousser une info
Enregistre une note dans le compte titulaire de la clé. Répond 201 une fois enregistrée.
Corps JSON
| Nom | Type | Requis | Défaut | Description |
|---|
| contenu | string | oui | | Le texte de l'info, 1 à 4000 caractères (après trim). |
| titre | string | non | | Titre court, 120 caractères maximum. |
| source | string | non | | Étiquette d'origine, 60 caractères maximum (défaut : api). |
Codes possibles : 201, 400, 401, 429, 502, 503.
GET/api/v1/clientsLes clients de l'organisation
Les clients agence de l'organisation du titulaire, ordre alphabétique, 100 au maximum. Les jetons de partage et la fiche détaillée ne sortent jamais.
Réponse
{
"ok": true,
"clients": [
{
"id": "33333333-3333-4333-8333-333333333333",
"slug": "salle-de-sport-montreuil",
"nom": "Salle de sport Montreuil",
"marque": "MTR",
"metier": "fitness",
"statut": "actif",
"cree_le": "2026-09-12"
}
]
}Codes possibles : 200, 401, 429, 502, 503.
GET/api/v1/rdvLes rendez-vous pris
Les rendez-vous des prospects de l'organisation (ceux qui portent une date), du plus récent au plus ancien, 200 au maximum. Les fiches en corbeille sont exclues.
Réponse
{
"ok": true,
"rdv": [
{
"id": "44444444-4444-4444-8444-444444444444",
"rdv_at": "2026-10-07T14:00:00.000Z",
"statut": "rdv_booke",
"prenom": "Camille",
"nom": "Roux",
"societe": "Studio Yoga",
"telephone": "0612345678",
"niche": "salles-de-sport",
"assigned_to": "55555555-5555-4555-8555-555555555555"
}
]
}Codes possibles : 200, 401, 429, 502, 503.
GET/api/v1/appelsMes appels analysés
Les appels du titulaire de la clé, du plus récent au plus ancien, 100 au maximum. Métadonnées et scores seulement : ni transcript, ni audio. Les traces d'upload vidéo non abouti sont exclues.
Réponse
{
"ok": true,
"appels": [
{
"id": 9012,
"created_at": "2026-10-03T08:05:11.000Z",
"issue": "rdv",
"duree_s": 245,
"score_fond": 72,
"score_forme": 65,
"part_eleve_pct": 48,
"niche": "salles-de-sport",
"script_nom": "Accroche v2",
"prospect_nom": "Camille Roux",
"prospect_tel": "0612345678"
}
]
}Codes possibles : 200, 401, 429, 502, 503.
GET/api/v1/prospectsLes prospects, paginés et filtrables
Les prospects de l'organisation du titulaire, du plus récent au plus ancien, 100 par page au maximum. Les fiches en corbeille sont exclues. Les filtres s'appliquent EN BASE : la page rendue correspond toujours au filtre demandé.
Paramètres d'URL
| Nom | Type | Requis | Défaut | Description |
|---|
| page | integer | non | 1 | Page à lire, à partir de 1. |
| limit | integer | non | 50 | Taille d'une page, de 1 à 100. |
| q | string | non | | Recherche partielle et insensible à la casse sur le NOM du prospect (60 caractères maximum). |
| statut | string | non | | Filtre exact sur le statut du pipeline (40 caractères maximum). |
Réponse
{
"ok": true,
"prospects": [
{
"id": "66666666-6666-4666-8666-666666666666",
"prenom": "Camille",
"nom": "Roux",
"societe": "Studio Yoga",
"telephone": "0612345678",
"statut": "a_appeler",
"rdv_at": null,
"niche": "salles-de-sport",
"created_at": "2026-10-02T18:41:03.000Z"
}
],
"pagination": { "page": 1, "limit": 50, "total": 128, "pages": 3, "has_more": true },
"filtre": { "q": null, "statut": null }
}Codes possibles : 200, 400, 401, 429, 502, 503.
GET/api/v1/limitesMes quotas
Deux blocs : `api` = les plafonds publiés de l'API v1 (les mêmes que /api/v1/me), `credits` = le forfait de l'organisation sur le cycle courant (plafond, consommé, réservé, restant). Un forfait illisible rend `credits: null` avec un message, jamais un faux zéro.
Réponse
{
"ok": true,
"organisation": true,
"credits": {
"plafond": 2500,
"consomme": 420,
"reserve": 60,
"restant": 2020,
"bonus": 0
},
"api": {
"lectures_par_heure": 240,
"poussees_par_heure": 60,
"poussees_par_jour": 500,
"fenetre_heure_s": 3600,
"fenetre_jour_s": 86400
}
}Codes possibles : 200, 401, 429, 502, 503.