Quote, buy, track. Over REST.
Three calls to a label. JSON in, JSON out, documented in OpenAPI, sandbox first. Any language that can make an HTTP request — and any AI agent that can read a spec.
One host, one version.
Seven routes. Three you'll use daily.
/v1/quotesLive rates for a shipment, cheapest first/v1/labelsCreate the label · returns pdf_url, tracking, order_token/v1/labels/{id}Read an order back · status, price, payment state/v1/labels/{id}/cancelVoid a label · idempotent/v1/shipments/{ref}Track by tracking number, order id or label id/v1/carriersCarriers, services and where they're offered/v1/addresses/parseBest-effort: postal addresses out of text or an imageA label in three requests.
Addresses and parcels share one shape across every call. Money is in major units, in the currency you ask for — the desk converts and charges in that currency.
Boring on purpose.
Every key, request and response. Dates are ISO 8601, countries ISO 3166-1 alpha-2.
40.00 means forty — never cents. Quotes, totals, labels and receipts all in the currency you asked for: DKK, EUR, SEK, NOK, GBP or USD.
Send one on POST /v1/labels and a retried request can't buy two labels. Cancel is idempotent by status — no key needed.
{ "error": { "code", "message", "doc_url", "field" } } — never a stack trace, never an internal name.
The spec is readable by machines too.
Point an agent at /llms.txt (or /llms-full.txt) and it learns the API. Prefer tools over REST? The same desk is an MCP server.
Building against it now? Grab a key.
The sandbox is open to try without an account. Account API keys and an optional prepaid wallet are self-serve — create yours in a minute.