DPD Label Print Versand-API
Der DPD Label Print Webservice (REST-API) ermöglicht die serverseitige Integration der DPD-Versanddienste in Ihre ERP-, CRM- oder E-Commerce-Plattform – ohne dass die Desktop-Anwendung erforderlich ist. Erstellen Sie Etiketten, verfolgen Sie Pakete und planen Sie Abholungen programmatisch.
Die Versand-API ermöglicht die Integration der DPD-Versanddienste in Ihre Anwendungen – einschliesslich Sendungserstellung, Sendungsverfolgung, Paketshop-Suche und Abholplanung.
Basis-URL: https://label-print-shipments.dpd.ch
API-Version: v1
Authentifizierung: JWT Bearer-Token (siehe Authentifizierung)
API-Referenz
| API | Endpunkte | Beschreibung |
|---|---|---|
| Authentifizierung | 2 | Benutzeranmeldung und JWT-Token-Generierung |
| Sendungen | 1 | Sendungen mit automatischer Etikettenerstellung anlegen |
| Sendungsverfolgung | 1 | Echtzeit-Sendungsverfolgungsdaten |
| Paketshops | 3 | Paketshops suchen und Detailinformationen abrufen |
| Abholaufträge | 1 | Einmalige Paketabholungen planen |
| Abholbestellungen | 1 | Wiederkehrende Abhol-Zeitpläne erstellen |
Schnellstart
1. Zugriffstoken abrufen
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/login" \
-H "Content-Type: application/json" \
-d '{
"username": "ihr_benutzername",
"password": "ihr_passwort"
}'
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "..."
}
2. API-Endpunkte aufrufen
Fügen Sie das Token in jede Anfrage ein:
curl -X GET "https://label-print-shipments.dpd.ch/api/v1/tracking/05305000123456" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Allgemeine Konzepte
Adressvalidierung
Alle Adressfelder folgen einheitlichen Regeln:
{
"name": "Firmenname", // Pflichtfeld, max. 35 Zeichen
"countryCode": "CH", // Pflichtfeld, ISO 2-Buchstaben
"zipCode": "8000", // Pflichtfeld, max. 9 Zeichen
"city": "Zürich", // Pflichtfeld, max. 35 Zeichen
"street": "Bahnhofstrasse 1", // Pflichtfeld, max. 35 Zeichen
"phone": "+41441234567", // Pflichtfeld für GB
"email": "info@firma.ch" // Pflichtfeld für nicht-CH/LI
}
Länderspezifische Anforderungen:
- NL:
houseNumberist Pflichtfeld - GB:
phoneist Pflichtfeld (internationales Format) - US/CA:
stateCodeist Pflichtfeld - Nicht-CH/LI:
emailist Pflichtfeld (ausser GB)
Servicecodes
| Code | Service | Beschreibung |
|---|---|---|
B2B | DPD CLASSIC | Standard-Inlands- und internationale Lieferung |
B2BI | DPD CLASSIC International | Internationale B2B-Sendung |
B2BP | DPD CLASSIC Predict | Mit Empfängerbenachrichtigung |
PM2 | DPD CLASSIC Guarantee | Garantierte Zustellung bis 18:00 |
B2C | DPD COMFORT | Mit Empfängerbenachrichtigung |
HOME | DPD HOME | Mit Empfängerbenachrichtigung |
AM1 | DPD EXPRESS 10:00 | Garantierte Zustellung bis 10:00 |
AM2 | DPD EXPRESS 12:00 | Garantierte Zustellung bis 12:00 |
PSD | DPD SHOP | Zustellung an Paketshop |
PL | DPD PARCEL LETTER | Kleine Artikel, max. 2 kg |
PBOX | DPD PARCELBOX | GPS + Foto, max. 5 kg |
RET | Retoure | Warenrücksendung |
CR | Abholauftrag | Abholung vom Kunden zum Endkunden |
LQ | Limited Quantities | Gefahrgut (begrenzte Mengen) |
SWAP | SWAP | Schneller Austausch für zurückgewiesene Ware |
TYRE | Reifen | Reifenversand in grossen Mengen |
Fehlerantworten
Alle Endpunkte geben konsistente Fehlerobjekte zurück:
{
"timestamp": "2025-10-30T10:30:00Z",
"status": 400,
"error": "Bad Request",
"message": "Validation failed",
"path": "/api/v1/shipments"
}
207 Multi-Status – Teilerfolg (einige Einträge erfolgreich, andere fehlgeschlagen):
{
"tracingId": "TRACE-123",
"success": [],
"failed": [
{
"id": 2,
"fieldErrors": {
"field.name": ["error_code"]
}
}
]
}
Unterstützte Sprachen
Übergeben Sie den locale-Header oder -Abfrageparameter, um lokalisierte Meldungen und Verfolgungsbeschreibungen zu erhalten:
| Sprache | Locale-Werte |
|---|---|
| Deutsch | de_CH, de_DE |
| Englisch | en_US, en_GB |
| Französisch | fr_CH, fr_FR |
| Italienisch | it_CH, it_IT |
Umgebungen
| Umgebung | Basis-URL |
|---|---|
| Produktion | https://label-print-shipments.dpd.ch |
| Staging | https://label-print-shipments-st.dpd.ch |
Rate Limiting
Alle Endpunkte sind ratenbegrenzt. Bei Überschreitung der Limits wird 429 Too Many Requests zurückgegeben.
| Header | Beschreibung |
|---|---|
X-RateLimit-Limit | Maximal zulässige Anfragen im Zeitfenster |
X-RateLimit-Remaining | Verbleibende Anfragen im aktuellen Zeitfenster |
X-RateLimit-Reset | Unix-Zeitstempel, wann das Zeitfenster zurückgesetzt wird |
Empfehlungen:
- Paketshop-Daten cachen (sie ändern sich selten), um API-Aufrufe zu reduzieren
- Exponentielles Back-off implementieren, wenn Sie eine
429-Antwort erhalten - Sammelanfragen für Sendungen anstelle einzelner Aufrufe verwenden, wo möglich
OpenAPI / Swagger
Interaktive API-Dokumentation und maschinenlesbare Spezifikationen sind direkt auf jedem Dienst verfügbar:
| Ressource | URL |
|---|---|
| Swagger UI | https://label-print-shipments.dpd.ch/swagger-ui/index.html |
| OpenAPI JSON | https://label-print-shipments.dpd.ch/v3/api-docs |
| OpenAPI YAML | https://label-print-shipments.dpd.ch/v3/api-docs.yaml |
Best Practices
- Token: sicher speichern, vor Ablauf erneuern, nie in URLs oder Logs preisgeben
- Rate Limiting:
429 Too Many Requestsmit exponentiellem Back-off behandeln; Paketshop-Daten cachen - Fehlerbehandlung: HTTP-Statuscodes prüfen; Wiederholungslogik für 5xx-Fehler implementieren
- Validierung: Daten client-seitig vor dem Senden validieren; länderspezifische Regeln beachten
- Sammelverarbeitung: Sammelerstellung von Sendungen nutzen, um Round-Trips und Rate-Limit-Verbrauch zu minimieren