Développeurs
L'API d'Adifile
Lisez et créez les données de votre entreprise depuis vos propres outils, et recevez chaque événement sur votre serveur. Inclus dans la formule Entreprise.
1
Créez une clé
Un administrateur la crée dans Paramètres › Intégrations › API, en lecture ou en lecture et écriture. Elle n'est affichée qu'une fois.
2
Appelez l'API
Envoyez-la dans l'en-tête Authorization: Bearer adf_…. Les réponses sont en JSON, les listes paginées (limit, offset).
3
Les règles
Une clé agit avec les accès de la personne qui l'a créée. 300 requêtes par minute et par clé. Une clé se révoque à tout moment.
Premier appel
curl https://adifile.vercel.app/api/open/v1/contacts?limit=10 \
-H "Authorization: Bearer adf_…"
{ "data": [ { "id": "…", "fullName": "Alice Martin", "organization": "ACME", … } ],
"hasMore": true, "nextOffset": 10 }En cas d'erreur, la réponse porte un code HTTP et un objet « error » avec « code » et « message » ; une donnée invalide renvoie 422 avec la liste des champs (details.issues).
Description OpenAPI (JSON)Points d'accès
Compte
- get
/meLa clé, son entreprise et la personne pour qui elle agit
Contacts
- get
/contactsLes contacts partagés de l'entreprise - post
/contactsAjouter un contact partagé - get
/contacts/{id}Un contact
Factures
- get
/invoicesLes factures de vente et d'achat - post
/invoicesCréer une facture, en attente d'approbation - get
/invoices/{id}Une facture et ses lignes
Documents
- get
/documentsLes documents classés - get
/documents/{id}Un document - get
/documents/{id}/downloadTélécharger le fichier (inscrit au journal des accès)
Planning
- get
/eventsLes événements du planning entre deux dates - post
/eventsAjouter un événement au planning
Webhooks
Dans Paramètres › Intégrations › Webhooks (ou Zapier, Make, n8n), choisissez une adresse et ses événements. Chaque événement y est envoyé en POST JSON, signé avec le secret de l'adresse, et réessayé une fois en cas d'erreur du serveur.
invoice.createdinvoice.approvedinvoice.paidexpense.submittedexpense.approvedexpense.rejectedexpense.paidabsence.requestedabsence.approvedabsence.rejecteddocument.filedevent.createdtask.assignedcontact.created
POST https://example.com/webhooks/adifile
X-Adifile-Event: invoice.paid
X-Adifile-Delivery: 6f1c…
X-Adifile-Signature: t=1751961600,v1=5d2a…
{ "id": "6f1c…", "type": "invoice.paid", "createdAt": "2026-07-08T09:00:00.000Z",
"company": { "id": "…", "name": "…" },
"data": { "kind": "sale", "number": "F-2026-0042", "counterparty": "ACME", "total": 1210, … },
"url": "https://adifile.vercel.app/app/operations/sales/…" }
// Node.js
const [t, v1] = header.split(",").map((part) => part.split("=")[1]);
const expected = crypto.createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
const valid = crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected)) && Date.now() / 1000 - Number(t) < 300;