Authenticate using HTTP Basic Auth with your DHL Express API username and password on all requests to https://express.api.dhl.com/mydhlapi.
GET /shipments/{shipmentTrackingNumber}/tracking with query parameters 'trackingView' (set to 'all-checkpoints' for full event history or 'last-checkpoint' for latest only) and optionally 'levelOfDetail' to control event verbosity.
The response 'shipments' array contains one entry per tracking number; navigate to 'events' for the list of tracking checkpoints, each with 'timestamp', 'location' (with 'address' sub-object), 'description', and 'serviceArea'.
Check 'status' at the shipment level for the current summary state ('delivered', 'transit', etc.) and 'estimatedTimeOfDelivery' for the ETA if available.
For multiple shipments, you can pass a comma-separated list of tracking numbers in the path to retrieve up to a carrier-specified maximum in one request.
Known gotchas
DHL Express and DHL eCommerce are separate products with separate APIs and credentials; tracking numbers from one may not be resolvable in the other's API.
The MyDHL API rate-limits aggressively — implement exponential backoff and respect Retry-After headers when you receive 429 responses.
Some DHL event codes are region-specific; do not assume event code semantics are globally consistent when building a normalized status mapper.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp