The Meetboard API
Let a hotel, an agent or your own website get a fixed price, make a booking, check on it and be told when things happen. Available on the Growth and Scale plans.
Getting started
The API is switched off until a company turns on Public API under Features. It then makes a key on the AI page and ticks what the key may do (api_quote to get prices, api_book to book). A key is shown once and only a hash of it is kept. Each key can make 60 calls a minute. In the examples below, replace <company> with the company’s web name.
Every call carries the header Authorization: Bearer <key>. A wrong key, a switched-off API or an unknown company all give the same 401, so nothing leaks about who uses Meetboard.
Get a price
GET /api/v1/<company>/quote?pickup_postcode=BH15 3QU&destination_place=Heathrow Airport Terminal 5&vehicle_type=SaloonNames are the company’s own, from its price list. The reply:
{ "priced": true, "basis": "fixed", "miles": null, "currency": "GBP", "fare_pence": 14500, "extra_charges_pence": 700, "total_pence": 15200 }"priced": false with a message means there is no fixed price for that journey: ask the company.
Make a booking
POST /api/v1/<company>/bookingswith a JSON body. Times are local time in the company’s own time zone.
{
"pickup_at": "2026-10-20T05:00",
"pickup_address": "1 Test Road, Poole",
"pickup_postcode": "BH15 3QU",
"destination_place": "Heathrow Airport Terminal 5",
"vehicle_type": "Saloon",
"passenger_name": "Pat Guest",
"passenger_email": "pat@example.com",
"passenger_phone": "07700 900123",
"adults": 2, "children": 0, "suitcases": 2,
"flight_number": "BA123",
"notes": "Meet at arrivals"
}The reply is 201:
{ "booking_ref": 10042, "status": "pending", "currency": "GBP", "total_pence": 15200 }What the server enforces, whatever is sent:
- The price always comes from the company’s price list. A price or status sent by the caller is ignored. If there is no fixed price the booking is refused (
422) and the caller should phone the company. - The booking starts as pending until the company’s office confirms it.
- The company’s minimum notice, the vehicle’s seats and suitcases, and a limit on online bookings per hour all apply.
- It is recorded as taken by the key in the company’s licensing record.
Errors are { "error": "..." } with 401 (key), 403 (this key may not do that), 422 (something to fix) or 429 (too many calls: wait a minute).
Look at a booking, ask for a change or a cancellation
A key can only see the bookings it made itself.
GET /api/v1/<company>/bookings/<booking number>{ "booking_ref": 10042, "status": "confirmed", "pickup_at": "2027-03-20T05:00:00.000Z",
"driver": { "name": "Alex", "vehicle_registration": "AA11 AAA", "vehicle": "Mercedes E-Class" }, "open_requests": [] }POST /api/v1/<company>/bookings/<booking number>/change-request POST /api/v1/<company>/bookings/<booking number>/cancel-requestwith { "message": "..." } reply 202. These only ask: a person at the company reads the request and decides, so nothing changes by itself. At most three requests can be open per booking, and once the journey has started the request should be made by phone.
Webhooks: be told when things happen
Instead of asking again and again, a company can give Meetboard a web address (Connections page, switch Notify your own systems on). Meetboard then sends a signed POST with a small JSON body when a booking is confirmed (booking.confirmed), a driver is assigned (booking.driver_assigned), a job is finished (booking.completed), a booking is cancelled (booking.cancelled) or a change is asked for (booking.change_requested).
{ "id": "…", "created_at": "…", "event": "booking.driver_assigned",
"booking": { "reference": 10042, "status": "assigned", "pickup_at": "…Z", "pickup_local": "2027-03-20T05:00", "time_zone": "Europe/London",
"pickup_address": "…", "destination_address": "…", "passenger_name": "…", "vehicle_type": "Saloon", "cancel_reason": null,
"driver": { "name": "Alex", "vehicle_registration": "AA11 AAA", "vehicle": "Mercedes E-Class" } } }There are deliberately no prices, phone numbers or email addresses in it.
- Headers:
Meetboard-Event,Meetboard-Delivery(a unique id: use it to ignore repeats) andMeetboard-Signature: t=<unix time>,v1=<hex>. - To check a message, compute HMAC-SHA256 over
"<t>.<raw body>"with your signing secret (shown once when you add the address), compare it withv1, and refuse messages more than five minutes old. - Answer with any
2xxstatus. If your system is down, Meetboard tries again after 1, 5, 30 and 120 minutes and 12 hours, then marks the message failed. - Only
httpsaddresses on the open internet are accepted.
The booking box for any website
Switch on Booking box for other websites, then paste one line where the form should appear:
<script src="https://www.meetboard.co.uk/embed/<company>" async></script>The page tells the host website when a price was shown (meetboard:quote_received) and when a booking was made (meetboard:booking_confirmed), as browser events and as meetboard_… events in dataLayer for Google Tag Manager, so the site’s own analytics and ad tags can count them.
Questions, or a feature you need? Get in touch.