API Elogistia en Node.js et PHP

Elogistia ne publie pas de documentation API. dz-delivery l’a reconstituée à partir d’une intégration en production et vérifiée en réel : le provider elogistia s’utilise comme les autres.

Installer

TypeScript · npm
npm install @dz-delivery/core
PHP · Composer
composer require dz-delivery/sdk

Node.js ≥ 18 (aucune dépendance) ou PHP ≥ 8.2 (Guzzle 7). Le même code fonctionne ensuite pour les autres transporteurs : seule la configuration du client change.

Identifiants Elogistia

OptionValeurNotes
apiKeyClé API de votre compte ElogistiaEnvoyée dans l’URL (imposé par Elogistia)
emailcustomer@example.com par défautEnvoyé en mail, obligatoire chez Elogistia

Elogistia en TypeScript / Node.js

TypeScript
import { createClient, isShippingError } from '@dz-delivery/core';

const elogistia = createClient('elogistia', {
  apiKey: process.env.ELOGISTIA_API_KEY!,
});

const quote = await elogistia.getFees({ toWilayaId: 16, isStopDesk: true });

try {
  const parcel = await elogistia.createParcel({
    recipientName: 'Mohamed Amine',
    phone: '0550123456',
    address: 'Cité 221 lots, n°98',
    wilayaId: 16,
    communeName: 'Bab Ezzouar',
    productName: 'T-shirt',
    price: 2500,
    orderId: 'ORDER-1001',
  });

  const { parcel: current, events } = await elogistia.track(parcel.trackingNumber);
} catch (err) {
  if (isShippingError(err)) console.error(err.code, err.message);
}

Elogistia en PHP / Laravel

PHP
use DzDelivery\ClientFactory;
use DzDelivery\Errors\ShippingError;

$elogistia = ClientFactory::create('elogistia', [
    'apiKey' => getenv('ELOGISTIA_API_KEY'),
]);

try {
    $parcel = $elogistia->createParcel([
        'recipientName' => 'Mohamed Amine',
        'phone'         => '0550123456',
        'address'       => 'Cité 221 lots, n°98',
        'wilayaId'      => 16,
        'communeName'   => 'Bab Ezzouar',
        'productName'   => 'T-shirt',
        'price'         => 2500,
        'orderId'       => 'ORDER-1001',
    ]);

    $result = $elogistia->track($parcel->trackingNumber);
} catch (ShippingError $e) {
    echo "{$e->code}: {$e->getMessage()}";
}

Guide PHP complet (Laravel, erreurs, tests) : guide-php.md.

Méthodes supportées

MéthodeSupportNotes
createParcelouiDomicile ou bureau (Elogistia choisit le bureau).
trackouiStatut unifié + historique.
getFeesouiTarifs domicile / bureau par wilaya.
getWilayas / getCommunesouiOrthographe Elogistia, recherche tolérante.
getStopDesksNOT_SUPPORTEDPas de liste de bureaux dans l’API.
listParcelsNOT_SUPPORTEDPas de liste des colis dans l’API.
cancelParcelNOT_SUPPORTEDPas d’annulation par API : depuis le tableau de bord.
healthCheckouiVérifie la clé (appel réel).

À savoir sur l’API Elogistia

  • Testé en réel (octobre 2026, lecture seule) : wilayas, communes, tarifs, colis inconnu, erreurs.
  • La clé API passe dans l’URL (choix d’Elogistia) : évitez de journaliser les URLs complètes.
  • Un colis tout juste créé peut renvoyer NOT_FOUND au suivi tant qu’Elogistia n’a pas encore d’historique.
  • Les libellés de statut ne sont pas documentés : ils sont reconnus par mots-clés (livré, retour, annulé, en livraison…).
  • Le baseUrl doit être en HTTPS.

Mapping natif détaillé (endpoints, champs, statuts) : PROVIDERS.md.

FAQ Elogistia

Elogistia a-t-il une documentation API ?

Pas publiquement. Le SDK suit une intégration en production, vérifiée en réel : vous n’avez pas à la reconstituer.

Comment choisir le bureau de retrait ?

Elogistia l’attribue lui-même : passez isStopDesk: true (et n’importe quelle valeur de stopDeskId).

Pourquoi un e-mail ?

Elogistia exige un champ mail sur chaque commande. Passez l’option email pour utiliser le vôtre.

Autres transporteurs

Même interface, mêmes statuts normalisés (pending, in_transit, delivered…).