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.created
  • invoice.approved
  • invoice.paid
  • expense.submitted
  • expense.approved
  • expense.rejected
  • expense.paid
  • absence.requested
  • absence.approved
  • absence.rejected
  • document.filed
  • event.created
  • task.assigned
  • contact.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;