Démonstration : « Mon Entreprise » est une entreprise fictive. Chiffres, clients et messages sont des exemples ; explorez librement, rien n'est envoyé et tout est remis à zéro régulièrement.
Créer mon siteParamètres
Pour vos outils d'automatisation et les développeurs qui travaillent avec vous.
https://fondatoria.com/api/v1Documentation OpenAPI- Clés actives
- 1
- Webhooks
- 1
- Appels sur 24 h
- 4
- Limite par clé
- 120 / min
Pas besoin d'écrire de code pour Zapier, Make ou n8n : leurs guides sont dans Connexions.
Connecter ChatGPT ou Claude
Votre espace dans la conversation, par le protocole MCPDemandez par exemple « fais un devis pour M. Dupont : remplacement d'un chauffe-eau, 1 200 € HT » ou « quelles factures sont en retard ? », ou encore « ajoute nos horaires d'été sur le site ». L'assistant n'agit qu'avec les autorisations cochées à la connexion ; il vous demande confirmation avant d'émettre ou d'envoyer un document, de noter un règlement ou de publier le site, et chaque action est notée dans le journal.
ChatGPT
- Dans ChatGPT, ouvrez Paramètres, puis Applications et connecteurs, et créez un connecteur (mode développeur activé si ChatGPT le demande).
- Collez l'adresse ci-dessus et choisissez l'authentification OAuth.
- ChatGPT ouvre cette plateforme : connectez-vous, choisissez l'espace et cochez les autorisations.
Claude
- Dans Claude, ouvrez Paramètres, puis Connecteurs, et ajoutez un connecteur personnalisé.
- Collez l'adresse ci-dessus, sans identifiant client : Claude s'enregistre seul.
- Cliquez sur « Se connecter », puis choisissez l'espace et les autorisations.
Réservé au propriétaire et aux administrateurs. Si un administrateur perd ce rôle ou quitte l'équipe, les applications qu'il a connectées sont coupées.
Applications connectées
Aucune application connectée pour le moment.
Clés d'API
À mettre dans l'en-tête Authorization: Bearer| Nom | Clé | Permissions | Dernier usage | Validité | Actions |
|---|---|---|---|---|---|
| Zapier Vous, le 4 nov. 2026 | sb_test_Bx4C…fNEM | 5 sur 22 | il y a 12 min | Jusqu'au 4 nov. 2027 |
Créer une clé
Webhooks
Vos événements envoyés, signés, à l'adresse de votre choix- hooks.zapier.com/hooks/catch/1840213/3f9qkx/Nouvelles demandes vers Google Sheets. 2 événements, dernier envoi réussi il y a 12 minActif
Ajouter un webhook
Derniers appels
Gardés 30 jours| Quand | Requête | Clé | Réponse |
|---|---|---|---|
| il y a 12 min | POST /contacts | Zapier | 201 48 ms |
| il y a 14 min | GET /events | Zapier | 200 31 ms |
| il y a 1 h | GET /leads | Zapier | 200 27 ms |
| il y a 3 h | GET /me | Zapier | 200 9 ms |
Vérifier la signature
Chaque envoi suit la norme Standard Webhooks : en-têtes webhook-id, webhook-timestamp et webhook-signature, signés en HMAC-SHA256 avec le secret du webhook. Les bibliothèques officielles de la norme fonctionnent telles quelles.
import { createHmac, timingSafeEqual } from "node:crypto";
// secret : la valeur whsec_… affichée dans votre espace
export function verifier(secret, headers, body) {
const id = headers["webhook-id"];
const ts = headers["webhook-timestamp"];
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const cle = Buffer.from(secret.replace(/^whsec_/, ""), "base64");
const attendu = createHmac("sha256", cle).update(`${id}.${ts}.${body}`).digest();
return headers["webhook-signature"].split(" ").some((s) => {
const recu = Buffer.from(s.split(",")[1] ?? "", "base64");
return recu.length === attendu.length && timingSafeEqual(recu, attendu);
});
}Répondez par un code 2xx en moins de 10 secondes. Sinon l'envoi est retenté sept fois, sur près de deux jours ; un code 410 arrête le webhook.
Exemples d'appels
Montants en centimes, taux de TVA en points de base (550 = 5,5 %)Créer une facture en brouillon
L'en-tête Idempotency-Key protège des doublons : renvoyée avec la même clé (coupure réseau, nouvel essai de Zapier), la requête rend la même facture sans en créer une autre.
curl https://fondatoria.com/api/v1/invoices \
-H "Authorization: Bearer sb_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"contactId": "ctc_…",
"title": "Remplacement du chauffe-eau",
"lines": [
{ "label": "Chauffe-eau 200 L", "quantity": 1, "unitPriceCents": 189000, "vatRate": 550, "nature": "goods" },
{ "label": "Pose", "quantity": 3.5, "unit": "h", "unitPriceCents": 5500, "vatRate": 550, "nature": "services" }
]
}'L'émettre, puis l'envoyer au client
L'émission donne le numéro légal et fige la facture : elle ne pourra plus être modifiée ni supprimée, seulement corrigée par un avoir. S'il manque une mention obligatoire, la réponse 422 en donne la liste.
curl -X POST https://fondatoria.com/api/v1/invoices/fac_…/issue -H "Authorization: Bearer sb_live_…" -H "Idempotency-Key: $(uuidgen)" curl -X POST https://fondatoria.com/api/v1/invoices/fac_…/send -H "Authorization: Bearer sb_live_…" -H "Idempotency-Key: $(uuidgen)"
Noter un règlement reçu
Montant en centimes, au plus le reste à payer ; la facture passe à payée quand elle est soldée.
curl https://fondatoria.com/api/v1/invoices/fac_…/payments \
-H "Authorization: Bearer sb_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "amountCents": 120000, "method": "transfer", "paidOn": "2026-11-02", "reference": "VIR DUBOIS" }'Modifier une fiche client sans écraser une autre modification
Renvoyez l'ETag lu dans If-Match : si quelqu'un a changé la fiche entre-temps, la réponse est 412 et rien n'est modifié.
curl -i https://fondatoria.com/api/v1/contacts/ctc_… -H "Authorization: Bearer sb_live_…"
curl -X PATCH https://fondatoria.com/api/v1/contacts/ctc_… \
-H "Authorization: Bearer sb_live_…" \
-H 'If-Match: "…etag lu…"' \
-H "Content-Type: application/json" \
-d '{ "phone": "06 12 34 56 78", "company": "Dubois SARL" }'