Aller au contenu principal

API DPD Label Print Expédition

Le webservice DPD Label Print (API REST) permet l'intégration côté serveur des services d'expédition DPD dans votre ERP, CRM ou plateforme e-commerce — sans nécessiter l'application de bureau. Générez des étiquettes, suivez des colis et planifiez des enlèvements de manière programmatique.

L'API d'expédition vous permet d'intégrer les services d'envoi DPD dans vos applications — création d'envois, suivi, recherche de points de collecte et planification des enlèvements.

URL de base: https://label-print-shipments.dpd.ch Version de l'API: v1 Authentification: Jeton JWT Bearer (voir Authentification)


Référence API

APIPoints de terminaisonDescription
Authentification2Connexion utilisateur et génération de jetons JWT
Expéditions1Créer des envois avec génération automatique d'étiquettes
Suivi1Données de suivi des colis en temps réel
Points de collecte3Rechercher et consulter les détails des points de collecte
Demandes de collecte1Planifier des collectes ponctuelles de colis
Ordres d'enlèvement1Créer des plannings d'enlèvement récurrents

Démarrage rapide

1. Obtenir un jeton d'accès

curl -X POST "https://label-print-shipments.dpd.ch/api/v1/login" \
-H "Content-Type: application/json" \
-d '{
"username": "votre_utilisateur",
"password": "votre_mot_de_passe"
}'
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "..."
}

2. Appeler n'importe quel point de terminaison API

Incluez le jeton dans chaque requête :

curl -X GET "https://label-print-shipments.dpd.ch/api/v1/tracking/05305000123456" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

Concepts communs

Validation des adresses

Tous les champs d'adresse suivent des règles cohérentes :

{
"name": "Nom de la société", // obligatoire, max 35 caractères
"countryCode": "CH", // obligatoire, code ISO à 2 lettres
"zipCode": "8000", // obligatoire, max 9 caractères
"city": "Zürich", // obligatoire, max 35 caractères
"street": "Bahnhofstrasse 1", // obligatoire, max 35 caractères
"phone": "+41441234567", // obligatoire pour GB
"email": "info@societe.ch" // obligatoire pour non-CH/LI
}

Exigences spécifiques aux pays :

  • NL : houseNumber est obligatoire
  • GB : phone est obligatoire (format international)
  • US/CA : stateCode est obligatoire
  • Non-CH/LI : email est obligatoire (sauf GB)

Codes de service

CodeServiceDescription
B2BDPD CLASSICLivraison nationale et internationale standard
B2BIDPD CLASSIC InternationalEnvoi B2B international
B2BPDPD CLASSIC PredictAvec notification au destinataire
PM2DPD CLASSIC GuaranteeLivraison garantie avant 18:00
B2CDPD COMFORTAvec notification au destinataire
HOMEDPD HOMEAvec notification au destinataire
AM1DPD EXPRESS 10:00Livraison garantie avant 10:00
AM2DPD EXPRESS 12:00Livraison garantie avant 12:00
PSDDPD SHOPLivraison en point relais
PLDPD PARCEL LETTERPetits articles, max 2 kg
PBOXDPD PARCELBOXGPS + photo, max 5 kg
RETRetourRetour de marchandises
CRDemande de collecteEnlèvement du client vers le client final
LQLimited QuantitiesMarchandises dangereuses (quantités limitées)
SWAPSWAPRemplacement rapide de marchandises refusées
TYREPneusExpédition de pneus en vrac

Réponses d'erreur

Tous les points de terminaison retournent des objets d'erreur cohérents :

{
"timestamp": "2025-10-30T10:30:00Z",
"status": 400,
"error": "Bad Request",
"message": "Échec de la validation",
"path": "/api/v1/shipments"
}

207 Multi-Status — succès partiel (certains éléments ont réussi, d'autres ont échoué) :

{
"tracingId": "TRACE-123",
"success": [],
"failed": [
{
"id": 2,
"fieldErrors": {
"field.name": ["error_code"]
}
}
]
}

Langues prises en charge

Transmettez l'en-tête ou le paramètre de requête locale pour obtenir des messages et des descriptions de suivi localisés :

LangueValeurs locale
Allemandde_CH, de_DE
Anglaisen_US, en_GB
Françaisfr_CH, fr_FR
Italienit_CH, it_IT

Environnements

EnvironnementURL de base
Productionhttps://label-print-shipments.dpd.ch
Staginghttps://label-print-shipments-st.dpd.ch

Limitation de débit

Tous les points de terminaison sont soumis à une limitation de débit. Le dépassement des limites retourne 429 Too Many Requests.

En-têteDescription
X-RateLimit-LimitNombre maximum de requêtes autorisées dans la fenêtre
X-RateLimit-RemainingRequêtes restantes dans la fenêtre courante
X-RateLimit-ResetHorodatage Unix de réinitialisation de la fenêtre

Recommandations :

  • Mettez en cache les données des points de collecte (elles changent rarement) pour réduire les appels API
  • Implémentez un back-off exponentiel lorsque vous recevez une réponse 429
  • Utilisez des requêtes d'expédition par lots plutôt que des appels individuels lorsque c'est possible

OpenAPI / Swagger

La documentation API interactive et les spécifications lisibles par machine sont disponibles directement sur chaque service :

RessourceURL
Swagger UIhttps://label-print-shipments.dpd.ch/swagger-ui/index.html
OpenAPI JSONhttps://label-print-shipments.dpd.ch/v3/api-docs
OpenAPI YAMLhttps://label-print-shipments.dpd.ch/v3/api-docs.yaml

Bonnes pratiques

  • Jetons : stocker de manière sécurisée, renouveler avant expiration, ne jamais exposer dans les URLs ou les journaux
  • Limitation de débit : gérer 429 Too Many Requests avec un back-off exponentiel ; mettre en cache les données des points de collecte
  • Gestion des erreurs : vérifier les codes de statut HTTP ; implémenter une logique de nouvelle tentative pour les erreurs 5xx
  • Validation : valider les données côté client avant l'envoi ; respecter les règles spécifiques aux pays
  • Traitement par lots : utiliser la création d'expéditions par lots pour minimiser les allers-retours et la consommation de la limite de débit