Query parcel tracking events
PostPlus API applies rate limiting (normally 5 requests per second), so integrators must use batch operations whenever possible, not one-by-one.
Query parcel tracking events
@host = https://api.test.post-plus.io
@apiKey = apitest1234567890
### fetch by multiple parcel nrs
GET {{host}}/api/v1/tracking/parcel-nrs/get-many?ParcelNrs=PARCEL-NR-1,PARCEL-NR-2
X-API-KEY: {{apiKey}}
@host = https://api.test.post-plus.io
@apiKey = apitest1234567890
### fetch by multiple sender parcel nrs
GET {{host}}/api/v1/tracking/sender-parcel-nrs/get-many?SenderParcelNrs=SENDER-NR-1,SENDER-NR-2
X-API-KEY: {{apiKey}}
@host = https://api.test.post-plus.io
@apiKey = apitest1234567890
### first request with empty fetchId
GET {{host}}/api/v1/tracking?startDate=2025-01-01&count=200&fetchId=
X-API-KEY: {{apiKey}}
HTTP/1.1 200 OK
Content-Length: 74988
{
"nextFetchId": "Cj7tmDjWkdoUyVmb8R8B77",
"fetchDone": false,
"events": [
{
"parcel": {
"parcelNr": "PARCEL-NR-1",
"senderParcelNr": "13111315031",
"destinationCountry": "EE",
"carrier": "TestCarrier",
"carrierParcelNr": "PARCEL-NR-1"
},
"event": {
"eventId": "WoxFW73f47o2d55PPHwzit",
"eventTime": "2025-01-13T01:56:27+00:00",
"eventVersion": "332002",
"eventCode": "CREATE_OR_UPDATE",
"eventMessage": "Parcel data received or updated",
"eventLocation": "PPLUS"
}
}]
}
### next request with fetchId from the previus response ("nextFetchId": "Cj7tmDjWkdoUyVmb8R8B77")
GET {{host}}/api/v1/tracking?startDate=2025-01-01&count=200&fetchId=Cj7tmDjWkdoUyVmb8R8B77
X-API-KEY: {{apiKey}}
### and so on
Query PostPlus event codes, messages and other metadata
@host = https://api.test.post-plus.io
@apiKey = apitest1234567890
### Trackig event codes metadata
GET {{host}}/api/v1/tracking/event-codes
X-API-KEY: {{apiKey}}
Importing tracking events to PostPlus system
Add up to 500 tracking events to the processing queue. The whole batch either succeeds or fails.The example import payload contains 2 events, one with explicit eventId and one with auto-generated (autogenraed based on event time, event parcel number etc). When integrators have their own unique tracking event ids, they can provide them in eventId parameter, and so the subsequent request with same eventId will update the exiting event instead of creating a new one. Add tracking event with generic/custom payload.
This endpoint should be used by the agreement with PostPlus when events in custom format are inserted into the queue and then processed by the custom logic implmented by the PostPlus.
@host = https://api.test.post-plus.io
@integrationApiKey = "integration-api-key-12345"
POST {{host}}/api/v1/integrations/tracking-import
content-type: application/json
X-API-KEY: {{integrationApiKey}}
{
"events": [
{
"eventId": "SomeExternalSourceUNiqueEventId012356",
"eventSourceAlt": "SomeExternalSource",
"eventCode": "DELIVERED",
"eventMessage": "Delivered to the recipient",
"eventTime": "2024-04-04 04:04:00",
"eventLocation": "Location",
"trackingNr": "PARCEL-NR-1"
},
{
"eventSourceAlt": "SomeExternalSource",
"eventCode": "DELIVERED",
"eventMessage": "Delivered to the recipient",
"eventTime": "2024-04-04 04:04:00",
"eventLocation": "Location",
"trackingNr": "PARCEL-NR-2"
}
]
}
This endpoint should be used by the agreement with PostPlus when events in custom format are inserted into the queue and then processed by the custom logic implmented by the PostPlus.
@host = https://api.test.post-plus.io
@integrationApiKey = integration-api-key-12345
POST {{host}}/api/v1/integrations/tracking-import-generic?DataSource=IntegratorName
content-type: application/json
X-API-KEY: {{integrationApiKey}}
{
"integratorEventCode": "deliveredCode",
"integratorEventMessage": "parcel was delivered",
"date": "2025-01-01"
}