API reference

Garage diary API

Keep your garage system and your Mira diary in step. Base URL https://api.motorsync.co.uk/api/v1/garage-api, version 1.0.0. Garage keys.
In short
  • Read the bookings and repair requests customers make with you in Mira, with the customer's name, car and problem, never their contact details.
  • Finish jobs with mileage, work done and documents; they go into the customer's car history and move their reminders.
  • Reply to repair requests with a price, and hold diary time for work booked outside Mira.

Overview

Customers book MOTs, services, tyres and repairs with you in the Mira app, or ask you to price a repair. This API lets your own system read those bookings and repair requests, finish jobs, reply with prices and keep Mira from offering times you have already filled. Everything runs as your garage, through the same rules as your diary in Mira Business.

Bookings and repair requests carry what you need for the job: the customer's name, the car and its registration, the job and the problem in the customer's words. Never their phone number or email; talk to them in the chat that comes with every booking. Bookings are made by customers in Mira, never through the API.

Sandbox keys

A sandbox key (ms_test_) reads your real diary, so you can build against your own bookings. Every change it makes is checked exactly as a live key's would be, then thrown away: nothing is saved, and the customer is never told. The answer's message then says Checked with a sandbox key; nothing was saved.

Endpoints

GET/api/v1/garage-api/bookingsGARAGE_DIARY_READ

Bookings in your diary

Bookings starting between from and to (YYYY-MM-DD, your garage's days), up to 62 days at once, earliest first.

Request
curl "https://api.motorsync.co.uk/api/v1/garage-api/bookings?from=2026-11-16&to=2026-11-22" \
  -H "Authorization: Bearer ms_test_..."
Response
{
  "success": true,
  "data": [
    {
      "id": "0192f1d0-2a4b-7c3d-8e9f-0a1b2c3d4e5f",
      "jobType": "MOT",
      "jobLabel": "MOT",
      "priceMinor": 5485,
      "currency": "GBP",
      "startsAt": "2026-11-17T10:00:00Z",
      "endsAt": "2026-11-17T11:00:00Z",
      "status": "BOOKED",
      "vehicleTitle": "2019 Ford Focus",
      "vehicleRegistration": "AB19 CDE",
      "customerName": "Sam Carter",
      "problemDescription": null,
      "enquiryReference": "SE7A2F4C91B0",
      "declineBy": "2026-11-13T14:00:00Z"
    }
  ],
  "message": "Checked with a sandbox key; nothing was saved"
}
GET/api/v1/garage-api/bookings/{bookingId}GARAGE_DIARY_READ

One booking

POST/api/v1/garage-api/bookings/{bookingId}/completeGARAGE_DIARY_WRITE

Finish a job

Mileage, work done and what is due next go into the customer's car history, and their MOT or service reminder moves to the new date.

Request
curl -X POST https://api.motorsync.co.uk/api/v1/garage-api/bookings/0192f1d0-2a4b-7c3d-8e9f-0a1b2c3d4e5f/complete \
  -H "Authorization: Bearer ms_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "mileage": 41250,
    "workDone": "MOT passed. Advisory: front tyres close to the limit.",
    "nextDueKind": "MOT",
    "nextDueDate": "2027-11-16"
  }'
POST/api/v1/garage-api/bookings/{bookingId}/documentsGARAGE_DIARY_WRITE

Add a job document

An invoice, MOT certificate, photo or service checklist, up to 25 MB, sent as multipart form data. It goes into the customer's car documents. Only your own uploads are ever shown back to you.

Request
curl -X POST https://api.motorsync.co.uk/api/v1/garage-api/bookings/0192f1d0-2a4b-7c3d-8e9f-0a1b2c3d4e5f/documents \
  -H "Authorization: Bearer ms_live_..." \
  -F "file=@mot-certificate.pdf" \
  -F "category=MOT_CERTIFICATE"
GET/api/v1/garage-api/quotesGARAGE_DIARY_READ

Repair requests

Newest first; open requests only unless openOnly=false. Paging: page (from 0), size.

POST/api/v1/garage-api/quotes/{quoteId}/quoteGARAGE_DIARY_WRITE

Reply with a price

The customer sees the price in their chat with you and can book it straight away.

Request
curl -X POST https://api.motorsync.co.uk/api/v1/garage-api/quotes/0192f1d4-8b1c-7e2f-9a3b-4c5d6e7f8a9b/quote \
  -H "Authorization: Bearer ms_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "amountMinor": 18000, "minutes": 90, "note": "Front pads and discs, fitted." }'
POST/api/v1/garage-api/quotes/{quoteId}/closeGARAGE_DIARY_WRITE

Turn down a repair request

Optional body { "reason": "..." }, told to the customer.

GET/api/v1/garage-api/blocksGARAGE_DIARY_READ

Diary time you are holding

Blocks between from and to (YYYY-MM-DD).

PUT/api/v1/garage-api/blocks/{reference}GARAGE_DIARY_WRITE

Hold diary time

For work booked outside Mira. Mira stops offering those bays at that time. Sending the same reference again updates the block.

Request
curl -X PUT https://api.motorsync.co.uk/api/v1/garage-api/blocks/JOB-20431 \
  -H "Authorization: Bearer ms_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "startsAt": "2026-11-18T09:00:00Z",
    "endsAt": "2026-11-18T12:00:00Z",
    "bays": 1,
    "note": "Clutch, booked by phone"
  }'
DELETE/api/v1/garage-api/blocks/{reference}GARAGE_DIARY_WRITE

Free diary time you held

Finishing a job

Finish a booking once its time has come. The mileage and work done go into the customer's car history as coming from your garage, and when you say what is due next, their reminder moves to that date. Add the invoice, MOT certificate or photos as job documents; they go into the customer's car documents.

FieldRequiredRules
mileageYesThe car's mileage when the job was done, 0 to 2,000,000
workDoneNoUp to 4,000 characters, shown in the customer's car history
nextDueKindWith nextDueDateMOT or SERVICE
nextDueDateNoYYYY-MM-DD, in the future

Repair prices

When a customer asks you to price a repair, reply with a price and how long you need the car. The customer can book it at that price straight away, at a time long enough for the work. You can also turn a request down.

FieldRequiredRules
amountMinorYesThe price in pence, VAT included, above 0
minutesNoHow long you need the car, 15 to 480; your usual repair time when left out
noteNoUp to 2,000 characters, shown to the customer

Holding diary time

For work booked outside Mira, hold the time with your own reference. Mira then stops offering those bays at that time. Sending the same reference again updates the block, and deleting it frees the time.

FieldRequiredRules
reference (in the path)YesYour own id for the job, up to 100 characters
startsAt, endsAtYesISO 8601 times; ends after it starts, at most seven days later
baysNoHow many bays it takes, 1 when left out, at most your number of bays
noteNoUp to 200 characters, for your own team

Events

Add a webhook endpoint to hear about every booking and repair request as it happens, whoever made the change. The events are listed in Webhooks and events.

garage_booking.created
{
  "id": "0192f1d0-9c8b-7a6f-8e5d-4c3b2a1f0e9d",
  "type": "garage_booking.created",
  "apiVersion": "1.0.0",
  "livemode": true,
  "createdAt": "2026-11-13T10:02:41Z",
  "data": {
    "bookingId": "0192f1d0-2a4b-7c3d-8e9f-0a1b2c3d4e5f",
    "enquiryReference": "SE7A2F4C91B0",
    "jobType": "MOT",
    "jobLabel": "MOT",
    "status": "BOOKED",
    "startsAt": "2026-11-17T10:00:00Z",
    "endsAt": "2026-11-17T11:00:00Z",
    "timeZone": "Europe/London",
    "declineBy": "2026-11-13T14:00:00Z",
    "customer": { "name": "Sam Carter" },
    "vehicle": { "title": "2019 Ford Focus", "registration": "AB19 CDE" },
    "price": { "amountMinor": 5485, "currency": "GBP" },
    "bookedThrough": "APP"
  }
}

Errors

StatusCodeWhat to do
400DATESThe days asked for run backwards or cover more than 62 days.
400NEXT_DUE_IN_PASTThe next MOT or service date must be in the future.
400CATEGORYUse INVOICE, MOT_CERTIFICATE, PHOTO, SERVICE_CHECKLIST or OTHER.
400DOCUMENTSend one readable file of up to 25 MB.
400QUOTE_AMOUNTEnter a price above zero.
400QUOTE_MINUTESThe time needed must be between 15 minutes and 8 hours.
400REFERENCE, TIMES, BAYSThe block's reference, times or bays need fixing; the message says what.
404GARAGE_NOT_FOUNDNo such booking or repair request for your garage.
422NOT_STARTEDA job can be finished once its time has come.
422QUOTE_CLOSEDThe repair request is already booked or closed.

Errors every API shares are in Keys, errors and limits.