Public API v1
Build PassPost into your business systems
One REST endpoint dispatches a verified carrier along a route someone is already travelling. Used by hotels, universities and airports.
Integration kits
Quickstart
- Create a Business account and generate an API key at /business/api.
- Send the key as a Bearer token. Keys have scopes
tasks:readandtasks:write. - Create a delivery task with one POST. Subscribe to webhooks to track lifecycle.
curl — create a taskcurl -X POST https://passpost.app/api/public/v1/tasks \ -H "Authorization: Bearer pp_live_..." \ -H "Content-Type: application/json" \ -d '{ "item": "Forgotten passport", "category": "Documents", "size": "envelope", "urgency": "express", "reward_nok": 250, "pickup": { "city": "Oslo", "address": "Hotel Bristol, Kristian IVs gate 7" }, "dropoff": { "city": "Gardermoen", "address": "Oslo Airport, Terminal 2" }, "recipient": { "name": "Jane Doe", "phone": "+4790000000" }, "external_reference": "RES-2026-00042" }'
Webhooks
Subscribe to task.accepted,task.picked_up,task.delivered,task.completed andtask.cancelled. Every delivery is signed with HMAC-SHA256 of the raw body using your webhook secret. Verify it before trusting the payload.
Node.js — verify signatureimport crypto from "crypto"; export function verifyPassPost(req, secret) { const sig = req.headers["x-passpost-signature"]; // "sha256=..." if (!sig) return false; const expected = "sha256=" + crypto .createHmac("sha256", secret) .update(req.rawBody) // the unparsed request body .digest("hex"); return crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected)); }
Python — verify signatureimport hmac, hashlib def verify_passpost(raw_body: bytes, header_sig: str, secret: str) -> bool: expected = "sha256=" + hmac.new( secret.encode(), raw_body, hashlib.sha256 ).hexdigest() return hmac.compare_digest(expected, header_sig or "")
Limits & reliability
Rate limit
120 req / minute
Per API key. Exceeded calls return HTTP 429.
Webhook retries
5 attempts
Backoff 1m → 5m → 15m → 1h → 6h. Endpoint must respond 2xx within 10s.
Auth
Bearer API key
Scoped per key. Rotate at any time.
Spec
OpenAPI 3
Machine-readable at /api/public/v1/openapi.json.
Need a tailored integration?
We help enterprise partners with onboarding, custom SLAs and PMS plug-ins.
Talk to our team

