1. Requests
1.A Base URL
BaseURL: https://api.myparcel.nl
1.B User-Agent
To give us insight into where requests come from and API documentation usage, you should send a User-Agent
header with all your requests. This header should include information about your integration, the CMS/platform and the backend you are using.
We recommend the following format and order:
MyParcel-<integration>/<version> <cms>/<version> <backend>/<version>
Example, given you're using a CMS called "My First CMS", its version is 3.0.0
and it runs on PHP 8.1.0
:
User-Agent: MyFirstCMS/3.0.0 PHP/8.1.0
An example if you're building a MyParcel plug-in for "My First CMS" and its version is 1.0.0
:
User-Agent: MyParcel-MyFirstCMS/1.0.0 MyFirstCMS/3.0.0 PHP/8.1.0
If you are building an integration, please contact us to have it added to the list of integrations.
Example if you are building a custom API implementation and are running Node 18.13.0:
User-Agent: CustomApiCall/2 Node/18.13.0
1.C HTTP methods
The API is REST(ful) and uses JSON as its primary data exchange format. Communication with the API goes through HTTPS thereby insuring data confidentiality and integrity. Here is a list of all supported HTTP methods
1.C.1 GET
GET method is used for retrieving data and is idempotent. Data can be returned in JSON, PDF, CSV, XML or other formats.
1.C.2 POST
POST is used to create new objects or send data to MyParcel.
1.C.3 DELETE
DELETE is used to delete an existing object (piece of data). This method always returns HTTP 204 No Content
unless otherwise specified.
1.C.4 PUT
A PUT request creates a resource or updates an existing resource. The client for specifies the URI for the resource. The request body contains a complete representation of the resource. If a resource with this URI already exists, it is replaced. Otherwise, a new resource is created, if the server supports doing so.
1.C.5 PATCH
A PATCH request performs a partial update to an existing resource. The client specifies the URI for the resource. The request body specifies a set of changes to apply to the resource. This can be more efficient than using
1.D Rate limiting
Default rate limits apply to many of our documented endpoints. Customers who would like a higher rate limit can contact us to discuss the possibilities (e.g. increasing the limit, or using a webhook). When the limit is reached for a Method/Endpoint combination, any additional call will return an HTTP 429 Too Many Requests
(Too Many Requests), effectively ignoring the request. A sliding window is used to determine the rate limit. Calls resulting in an HTTP 429 Too Many Requests
also count as requests, so it is better to wait a while before retrying than continually retrying and getting additional HTTP 429 Too Many Requests
responses. Waiting 5 minutes will definitely reset the rate limit for the used Method/Endpoint combination.
Example: If you make 100 GET requests within 15 seconds to the same endpoint with an allowed rate limit of 100 request per 5 minutes, you will only be able to continue sending GETs 4 minutes 45 seconds later. Sending some POSTs to the same endpoint is allowed though, it follows its own rate limit.
Method | Endpoint | Rate limit |
---|---|---|
GET | / | 30 calls in 5 minutes |
GET | /delivery_options | 300 calls in 5 minutes |
GET | /drop_off_points | 300 calls in 5 minutes |
GET | /fulfilment/orders | 300 calls in 5 minutes |
POST | /fulfilment/orders | 100 calls in 5 minutes |
PUT | /fulfilment/orders | 100 calls in 5 minutes |
GET | /fulfilment/orders/{identifier} | 300 calls in 5 minutes |
DELETE | /fulfilment/orders/{identifier} | 300 calls in 5 minutes |
GET | /fulfilment/orders/{identifiers}/packing_slip | 100 calls in 5 minutes |
GET | /pickup_locations | 300 calls in 5 minutes |
POST | /return_shipments | 300 calls in 5 minutes |
GET | /shipments | 500 calls in 5 minutes |
PATCH | /shipments | 300 calls in 5 minutes |
POST | /shipments | 500 calls in 5 minutes |
PUT | /shipments | 300 calls in 5 minutes |
GET | /shipments/{ids} | 1000 calls in 5 minutes |
DELETE | /shipments/{ids} | 300 calls in 5 minutes |
GET | /shipment_labels/{ids} | 500 calls in 5 minutes |
GET | /tracktraces/{ids?} | 300 calls in 5 minutes |
GET | /webhook_subscriptions | 150 calls in 5 minutes |
POST | /webhook_subscriptions | 30 calls in 5 minutes |
DELETE | /webhook_subscriptions | 30 calls in 5 minutes |