HaulageBoard

Quoting

For carriers. Read the open board, price what fits, and take a price back if the van goes elsewhere.

These calls act for somebody at your firm with a membership: the person who made the key if they have a seat, otherwise the owner. Without anybody with a seat they answer 402, the same as the board does.

Read the board

GET https://app.haulageboard.com/api/v1/board?from=LE&vc=LUTON&date=tomorrow
Authorization: Bearer hb_live_...

The filters are the website's: from, to, vc, type, date, after, before, within with near, notl, noadr, maxwt and terms. You get what a member at your firm would see, with the same early access, up to 100 loads.

200 OK

{
  "loads": [{
    "id": "clx...",
    "ref": "HB-1042",
    "from": { "outcode": "LE4" },
    "to": { "outcode": "B12" },
    "miles": 42,
    "collect": { "date": "2026-10-09", "window": "AM", "byTime": null },
    "deliver": null,
    "vehicleClass": "LUTON",
    "type": "PALLETS",
    "pallets": 4,
    "tailLift": true,
    "termsDays": 30,
    "pricing": { "mode": "quotes", "guideLowPence": 16000, "guideHighPence": 21000 },
    "quotes": 2,
    "poster": { "score": 340, "level": "SILVER" }
  }]
}

The firm that posted a load is never named here. It arrives on booking, by webhook, the same as on the website.

Send or update a quote

POST https://app.haulageboard.com/api/v1/loads/{id}/quotes
Authorization: Bearer hb_live_...
Content-Type: application/json

{ "amountPence": 18000, "etaMins": 120, "message": "Empty in Leicester at 10" }

Quoting again on the same load replaces your price. A price stands for three days, or until the day it is collected if that comes first.

Take a quote back

DELETE https://app.haulageboard.com/api/v1/loads/{id}/quotes
Authorization: Bearer hb_live_...

Test keys read, they do not quote

A test key can read the board so you can build against real shapes. It cannot price a real carrier's job, and a quote sent with one is refused with 403.