Bjet24

API Bjet24 : déclencher un envoi postal depuis votre CRM en quelques lignes

Vous voulez que votre application envoie une lettre quand un client signe un contrat, ou quand une facture dépasse 30 jours ? L'API Bjet24 expose le flux d'envoi en quelques endpoints REST. Voici un tour rapide avec exemples.

20 mars 20269 min de lecture

Quand l'envoi postal doit être déclenché par votre application

Beaucoup d'envois papier sont la conséquence d'un événement métier : un contrat signé, une facture impayée à J+30, un préavis légal, un changement d'assuré. Demander à un humain de « se souvenir » de générer le courrier après chaque événement, c'est ouvrir la porte aux oublis et aux retards.

L'API Bjet24 sert exactement à cela : votre application déclenche l'envoi, Bjet24 imprime, met sous pli et remet à bpost, avec les preuves au retour. Pour connaître le détail des tarifs par type d'envoi, consultez la page de tarification.

Vue d'ensemble du flux

Le cycle de vie d'un envoi via l'API tient en quatre étapes :

  1. Vous créez un job d'envoi avec le PDF, le destinataire et le type d'envoi.
  2. Le job passe par les statuts draft → paid → queued → printed → posted → delivered.
  3. Vous recevez un webhook à chaque changement de statut majeur (paiement, dépôt bpost, preuve de remise).
  4. À tout moment, vous pouvez consulter le job pour récupérer les preuves PDF (preuve de dépôt, accusé de réception, etc.).

C'est un mécanisme asynchrone classique — l'application appelante ne reste pas bloquée en attendant la distribution.

Authentification

L'API utilise une clé d'API à passer en en-tête Authorization: Bearer <key>. Les clés sont créées dans votre espace Bjet24, scopées à un environnement (sandbox ou production), et révocables individuellement.

Bon réflexe : créer une clé par intégration (CRM, ERP, outil interne). En cas d'incident, on révoque sans casser les autres. Avant de pousser en production, pensez également à vérifier la conformité de vos adresses postales belges pour éviter les retours.

Créer un envoi en TypeScript

Voici un appel type pour envoyer une lettre simple. Le PDF est référencé par un identifiant de fichier que vous avez préalablement téléversé via un endpoint d'upload :

const res = await fetch("https://api.bjet24.com/v1/mail-jobs", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.BJET24_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    type: "standard",            // ou "registered" pour un recommandé
    priority: "prior",           // ou "non-prior"
    documentId: "doc_abc123",    // PDF téléversé au préalable
    recipient: {
      name: "Société Dupont SRL",
      street: "Rue de la Loi",
      number: "12",
      box: "3",
      zip: "1000",
      city: "Bruxelles",
      country: "BE",
    },
  }),
})

const job = await res.json()
console.log("job created:", job.id, job.status)

Réponse type :

{
  "id": "job_01HE...",
  "status": "draft",
  "type": "standard",
  "priority": "prior",
  "amount": { "value": 195, "currency": "EUR" },
  "createdAt": "2026-03-20T10:14:22.000Z"
}

À ce stade, le job est en draft. Pour le confirmer, vous le payez via votre portefeuille pré-chargé ou Stripe, ce qui le fait passer en paid → queued.

Recevoir les événements via webhooks

Plutôt que de scruter l'API en boucle (polling), vous abonnez un endpoint à recevoir les événements. La payload typique est :

{
  "id": "evt_...",
  "type": "mail_job.posted",
  "createdAt": "2026-03-21T08:02:11.000Z",
  "data": {
    "id": "job_01HE...",
    "status": "posted",
    "bpostTrackingId": "EE...BE",
    "proofs": {
      "deposit": "https://api.bjet24.com/v1/proofs/.../deposit.pdf"
    }
  }
}

Les événements à connaître :

  • mail_job.paid — paiement encaissé,
  • mail_job.printed — pli imprimé,
  • mail_job.posted — remis à bpost (preuve de dépôt disponible),
  • mail_job.delivered — distribué (recommandé uniquement, preuve de remise disponible),
  • mail_job.failed — retour ou rejet (adresse invalide, refus).

Pensez à valider la signature HMAC transmise dans l'en-tête X-Bjet24-Signature. C'est la barrière contre les webhooks falsifiés. Pour un guide complet sur la mise en place des webhooks, consultez le tutoriel webhooks Bjet24 pour le suivi en temps réel.

Trois patterns d'intégration utiles

1) Relance automatique J+30 (CRM/facturation). Une tâche planifiée parcourt vos factures impayées dont la date d'échéance dépasse 30 jours et crée un job registered avec accusé de réception, pré-rempli depuis votre modèle PDF. Les entreprises qui expédient plusieurs dizaines de courriers par mois peuvent également s'intéresser aux envois en lot pour PME belges.

2) Confirmation d'un onboarding (assurance, banque). À la signature électronique d'un contrat, le webhook de votre outil de signature appelle l'API Bjet24 pour envoyer la copie papier au client — exigée par certains régulateurs.

3) Notification réglementaire (RH, immobilier). À chaque événement métier qui ouvre un délai (préavis, contestation), vous créez un job dans la foulée, archivez le jobId dans votre base, et stockez la preuve de dépôt comme pièce justificative.

Sandbox, idempotence et limites

Quelques bonnes pratiques pour ne pas se faire piéger :

  • Sandbox : utilisez la clé de test pour tout développement. Les jobs y suivent le même cycle mais ne sont pas réellement imprimés.
  • Idempotency-Key : passez un en-tête Idempotency-Key propre à votre événement métier. Si le retry de votre worker rejoue, vous ne créez pas deux envois.
  • Rate limits : l'API publique est limitée à un quota raisonnable (consulter la documentation). Pour les volumes pro, utilisez l'endpoint bulk qui accepte un CSV en un appel.

En résumé

L'API Bjet24 permet de transformer chaque événement métier déclencheur en envoi postal traçable, sans aucune intervention manuelle. Pour une intégration CRM ou ERP, comptez une à deux journées de développement pour la première version (création de job + webhook). Le retour sur investissement vient surtout de la fiabilité : plus d'oubli, plus de courrier qui dort sur un bureau, et toutes les preuves archivées au bon endroit.

Questions fréquentes

Comment s'authentifier auprès de l'API d'envoi postal ?

L'authentification repose sur une clé d'API transmise dans l'en-tête HTTP Authorization au format Bearer. Chaque clé est créée depuis votre tableau de bord, limitée à un environnement (sandbox ou production) et révocable à tout moment. Il est recommandé de créer une clé distincte par application ou service pour faciliter la gestion des incidents.

Quel est le délai entre la création d'un job et le dépôt à la poste ?

Un job validé et payé avant midi un jour ouvrable est déposé à bpost le jour même. Passé cette heure, il est pris en charge le jour ouvrable suivant. Le statut passe de queued à posted dès la remise physique, et la preuve de dépôt est alors disponible en PDF via l'API.

Comment éviter de créer deux envois si mon serveur envoie la requête deux fois ?

Passez un en-tête Idempotency-Key unique par événement métier dans chaque appel de création de job. Si la même clé est présentée deux fois, l'API renvoie la réponse du premier appel sans créer un second envoi. Cette protection est indispensable dans les architectures qui utilisent des workers avec retry automatique.

L'API permet-elle d'envoyer des courriers recommandés avec accusé de réception ?

Oui. Il suffit de passer type: "registered" dans le corps de la requête. Un accusé de réception signé est alors numérisé et mis à disposition en PDF dès la distribution. L'événement webhook mail_job.delivered est émis à ce moment, accompagné de l'URL du document.

Comment tester l'intégration sans générer de vrais envois ?

Bjet24 fournit un environnement sandbox accessible avec une clé de test dédiée. Les jobs créés en sandbox suivent exactement le même cycle de statuts et déclenchent les mêmes webhooks, mais aucun document n'est imprimé ni déposé à bpost. Cela permet de valider l'intégration complète, y compris la réception et le traitement des événements, sans frais.

Prêt à envoyer un courrier ?

Envoyez votre lettre ou recommandé en quelques minutes, sans imprimer, sans bureau de poste.

Comment ça marche

Articles similaires

Commentaires (0)

Chargement des commentaires…

Laisser un commentaire

Votre commentaire sera publié après validation par un modérateur.