Price, book and track Pakkepost shipments from your own system - a webshop, an ERP or a warehouse application.
GET /v1/prices turns a parcel size, weight and route into the products that fit, with prices. Each product has the productId you book with.POST /v3/booking books one or more packages and answers with an orderId and a payment link.GET /v3/tracking returns the consignment, the tracking link and the label (PDF) for each package.Booked by mistake and not paid yet? POST /v3/booking/{orderId}/cancel withdraws it.
The body is an array, one entry per package, even for a single one. Send an Idempotency-Key: a retry with the same key returns the first answer instead of booking twice.
POST https://pakkepost.azure-api.net/v3/booking
Ocp-Apim-Subscription-Key: <your key>
Idempotency-Key: webshop-order-1234
Content-Type: application/json
[{
"userId": 863,
"senderName": "Kari Olsen AS",
"senderAddressLine": "Testgata",
"senderPostalCode": "3182",
"senderCity": "Oslo",
"senderEmail": "post@kariolsen.no",
"senderPhoneNumber": "41210914",
"recipientName": "Steinar Hansen",
"recipientAddressLine": "Bytestveien",
"recipientAddressLineNumber": "11",
"recipientPostalCode": "3186",
"recipientCity": "Stavanger",
"recipientPhoneNumber": "41234334",
"recipientEmail": "steinar@example.com",
"recipientReference": "order-1234",
"productId": 2027
}]
{
"orderId": "863X20260801194134980655API",
"payment_link": "https://...",
"paymentMethod": "deposit",
"items": [
{ "itemIndex": 0, "itemId": "863X20260801194134980655API-0",
"reference": "order-1234", "recipientName": "Steinar Hansen" }
]
}
Match what comes back on itemIndex, itemId or your own recipientReference - never on the order of the consignments.
| Base URL | What happens | |
|---|---|---|
| Test | https://pakkepost.azure-api.net/test | The same endpoints and answers as production - but no booking is completed: nothing is sent to a carrier and no label is made. Use it to build and check your integration. |
| Production | https://pakkepost.azure-api.net | Real bookings, real labels, real charges. |
Every call needs your subscription key, in the Ocp-Apim-Subscription-Key header (or the subscription-key query parameter). Your keys are under Profile once you are signed in. A key belongs to a product - test or production - and only works there.
Set isReverse: 1 on a booking to send a parcel back to the store. PostNord only.
Store a PrintNode key and printer once with POST /v3/autoprint, and every label prints by itself after payment.
POST /locations finds the PostNord pickup points near a postal code.
Home delivery and other extra services, priced with the product: GET /v1/products/{id}/extras.
Invoices for booked orders, one at a time or for a period: GET /receipt, GET /receipt/list.
PostNord, Bring, Helthjem, NBT and FedEx, from small parcels to pallets - PostNord Groupage takes up to 1000 kg. GET /v1/products lists the whole catalogue. GET /v1/prices shows the products that fit your parcel; the pallet products appear from 35 kg.
v3 for anything new. POST /booking, /v1/booking and /v2/booking, and the older tracking endpoints, stay for integrations that already use them: they cannot tell you which consignment belongs to which package you sent, and returns and autoprint are v3 only. The older endpoints answer HTTP 200 with the real status in the body - read the body there.
Pakkepost has ready-made integrations: the Pakkepost app for Shopify and the Pakkepost plugin for WooCommerce.
Customer service: 35 10 24 19, 09:00-15:30.