1. Trois façons de se relier à Gloria
| Besoin | Moyen | Qui agit |
|---|---|---|
| Un outil lit ou agit dans Gloria (CRM, Make, Zapier, n8n, script) | Clé d'accès | L'outil, avec les droits de la clé |
| Un assistant pilote Gloria en langage naturel | Connecteur (MCP) | La personne connectée, avec ses droits Gloria |
| Gloria prévient un outil quand quelque chose se passe | Notifications sortantes | Gloria |
2. Clé d'accès
Créée par le propriétaire du compte dans Gloria : Paramètres → Connexions → Accès API. La clé (glo_live_…) n'est affichée qu'une fois. Dix clés actives au plus par compte. Une clé révoquée cesse de fonctionner immédiatement.
À envoyer dans chaque appel :
Authorization: Bearer glo_live_…Le compte est déterminé par la clé : il n'y a jamais d'identifiant de compte à fournir.
Droits d'une clé
| Droit | Ce qu'il permet |
|---|---|
lecture | Toujours présent. Consulter le compte, la prospection, les rendez-vous, les devis, les factures, les publications. |
prospection | Envoyer des contacts en prospection, proposer une nouvelle accroche. |
ventes | Préparer et envoyer des devis, créer et envoyer des factures, lancer des relances. |
communication | Préparer, programmer, publier ou retirer une publication. |
Limites
60 appels par minute et 5 000 par jour, par clé. Au-delà : réponse 429 avec le code quota_depasse. Chaque appel est journalisé ; le propriétaire voit le journal dans Gloria.
3. Les outils
Consultation (GET)
| Adresse | Contenu |
|---|---|
/v1/compte | Compte, formule, modules actifs |
/v1/agents | État des agents de prospection, blocages et leur raison, quotas |
/v1/recap-jour | Activité d'une journée (jour=AAAA-MM-JJ) |
/v1/entonnoir | Entonnoir de prospection (depuis) |
/v1/prospects | Prospects (q, statut, depuis, limite, decalage) |
/v1/prospects/{id} | Fiche et historique d'un prospect |
/v1/appels | Appels passés par l'agent vocal |
/v1/rdv | Rendez-vous |
/v1/devis | Devis |
/v1/factures | Factures |
/v1/relances | Devis et factures à relancer |
/v1/contacts | Recherche dans Mes contacts (q) |
/v1/accroches | Accroches en place (mail, LinkedIn, appel) |
/v1/publications | Planning des publications (depuis, jusqu_a, statut) |
/v1/medias | Médiathèque |
Actions (POST, corps JSON)
| Adresse | Droit | Effet après validation |
|---|---|---|
/v1/contacts | prospection | Les contacts entrent en prospection automatique |
/v1/accroches | prospection | L'accroche est remplacée |
/v1/devis | ventes | Crée un brouillon (seule action directe, rien n'est envoyé) |
/v1/devis/envoyer | ventes | Le devis part par e-mail avec son PDF |
/v1/factures | ventes | La facture est créée (numéro définitif) |
/v1/factures/envoyer | ventes | La facture part par e-mail |
/v1/relances | ventes | Les relances partent |
/v1/publications | communication | La publication est lancée ou programmée |
/v1/publications/publier | communication | Un post du planning part maintenant |
/v1/publications/retirer | communication | Un post est retiré du planning |
/v1/valider | selon l'action | Exécute une action préparée |
Le détail des champs de chaque outil est dans /v1/openapi.json.
4. Les actions se font en deux temps
Aucune action n'a d'effet au premier appel.
- Aperçu.L'appel renvoie ce qui serait fait, et un numéro de validation :JSON
{ "ok": true, "code": "apercu", "validation": "742b9341-…", "expire_dans_minutes": 15, "…": "…" } - Validation.
POST /v1/valideravec{ "validation": "742b9341-…" }exécute exactement ce qui a été montré.
Une validation sert une seule fois, expire au bout de 15 minutes, et ne peut être utilisée que par la clé ou la personne qui a demandé l'aperçu. Si le document a changé entre l'aperçu et la validation, la validation est refusée.
Exemple :
curl -X POST https://gloria.glitchsolutions.fr/v1/devis/envoyer \
-H "Authorization: Bearer glo_live_…" -H "Content-Type: application/json" \
-d '{"devis_id":"…"}'
# → aperçu : destinataire, lignes, totaux, numéro de validation
curl -X POST https://gloria.glitchsolutions.fr/v1/valider \
-H "Authorization: Bearer glo_live_…" -H "Content-Type: application/json" \
-d '{"validation":"…"}'
# → { "ok": true, "code": "devis_envoye", "numero": "DEV-2026-0042", "envoye_a": "…" }5. Réponses et erreurs
Toute réponse est un objet JSON avec ok. En cas de refus : ok: false, un code stable et un message lisible.
| Statut | Codes courants | Sens |
|---|---|---|
| 401 | non_connecte, cle_invalide | Clé absente, inconnue ou révoquée |
| 403 | droit_manquant, acces_refuse | La clé ou la personne n'a pas ce droit |
| 404 | introuvable, validation_inconnue | L'objet n'existe pas sur ce compte |
| 409 | deja_envoye, deja_traitee, devis_modifie | Déjà fait, ou modifié depuis l'aperçu |
| 410 | validation_expiree | Plus de 15 minutes |
| 422 | question_fermee, instagram_sans_visuel, document_non_pret… | La demande est refusée par une règle métier |
| 429 | quota_depasse | Trop d'appels |
| 502 | envoi_echoue, publication_refusee | L'envoi n'est pas parti, rien n'a changé |
Règle : ne considérez qu'un envoi est fait que si la réponse le confirme.
6. Connecteur pour assistants (Claude, ChatGPT, Gemini)
Adresse du connecteur : https://gloria.glitchsolutions.fr/mcp
L'assistant ouvre une page Gloria : la personne se connecte avec son compte (double authentification comprise), lit ce que l'assistant pourra faire, puis autorise. L'assistant agit alors avec les droits de cette personne dans Gloria, ni plus ni moins. Les mêmes outils qu'au §3 sont disponibles, avec la même règle aperçu puis validation : l'assistant montre l'aperçu et ne valide qu'après l'accord de la personne.
Limites : 60 appels par minute et 5 000 par jour par personne.
7. Notifications sortantes
Gloria envoie une requête POST à une adresse de votre choix quand un événement se produit. À régler par le propriétaire dans Gloria : Paramètres → Connexions → Accès API. Cinq notifications actives au plus par compte. L'adresse doit être en https et publique.
Événements
| Type | Quand |
|---|---|
rdv.pris | Un rendez-vous est confirmé |
rdv.annule | Un rendez-vous confirmé est annulé |
prospect.statut_change | Un prospect change de statut |
devis.envoye | Un devis part chez le client |
devis.accepte | Le client accepte ou signe |
devis.refuse | Le client refuse |
facture.envoyee | Une facture est émise et envoyée |
facture.payee | Une facture est marquée payée |
publication.publiee | Une publication est en ligne |
test.ping | Essai lancé depuis Gloria |
Ce que vous recevez
{
"id": "7a310636-…",
"type": "prospect.statut_change",
"cree_le": "2026-11-10T13:30:54.541017+00:00",
"compte": "…",
"livraison": "b2b7fd11-…",
"donnees": {
"prospect_id": "085cb3a7-…",
"ancien_statut": "contacte",
"statut": "a_rappeler",
"entreprise": "Résidence Les Acacias",
"prenom": "Sophie", "nom": "Carpentier",
"email": "…", "telephone": "…", "ville": "Lagny-sur-Marne"
}
}En-têtes : x-gloria-evenement (le type), x-gloria-livraison (identifiant de l'envoi), x-gloria-signature.
Contenu de donnees par type :
rdv.*:rdv_id,titre,debut,fin,fuseau,visio,lieu,statut,origine,personne(nom,email,telephone),prospect_id,contact_iddevis.*:devis_id,numero,statut,destinataire(nom,email),total_ht,total_ttc, dates,contact_id,prospect_idfacture.*:facture_id,numero,statut,type_document,destinataire,total_ht,total_ttc,date_emission,date_echeance,payee_le,montant_paye,devis_idpublication.publiee:post_id,reseau,sujet,texte,publie_le
Vérifier la signature
x-gloria-signature vaut t=<secondes>,v1=<signature>. La signature est le HMAC SHA-256, en hexadécimal, de la chaîne <t>.<corps brut> avec le secret de la notification (glo_whsec_…, affiché une seule fois à la création).
Vérifiez sur le corps brut reçu, avant toute lecture JSON : le reformater change la signature. Refusez un t vieux de plus de 5 minutes.
// Node.js
import crypto from "node:crypto";
function verifier(corpsBrut, entete, secret) {
const t = /t=(\d+)/.exec(entete)?.[1], v1 = /v1=([0-9a-f]+)/.exec(entete)?.[1];
if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
const attendu = crypto.createHmac("sha256", secret).update(`${t}.${corpsBrut}`).digest("hex");
return attendu.length === v1.length && crypto.timingSafeEqual(Buffer.from(attendu), Buffer.from(v1));
}# Python
import hmac, hashlib, re, time
def verifier(corps_brut: bytes, entete: str, secret: str) -> bool:
t = re.search(r"t=(\d+)", entete); v1 = re.search(r"v1=([0-9a-f]+)", entete)
if not t or not v1 or abs(time.time() - int(t.group(1))) > 300: return False
attendu = hmac.new(secret.encode(), t.group(1).encode() + b"." + corps_brut, hashlib.sha256).hexdigest()
return hmac.compare_digest(attendu, v1.group(1))Règles de livraison
- Départ dans la minute qui suit l'événement.
- Répondez par un statut
2xxen moins de 10 secondes. Tout autre cas est un échec. - En cas d'échec : nouveaux essais après 1 minute, 5 minutes, 30 minutes, 2 heures, 6 heures, puis abandon (six essais au total).
- Un même événement peut arriver deux fois : dédoublonnez sur
id. - L'ordre d'arrivée n'est pas garanti : fiez-vous à
cree_le. - Après 20 échecs d'affilée, la notification est désactivée. Elle se réactive depuis Gloria.
8. Ce que l'API ne renvoie jamais
Les transcriptions et enregistrements d'appels, les coûts, les identifiants techniques internes.
