Skip to main content

Public API

Overview

The autoGMS Public API gives integration partners programmatic access to your garage data. Use it to connect diagnostics tools, fleet management platforms, custom dashboards, parts catalogs, and mobile apps to your autoGMS account.

Key features:

  • Full read and write access to all garage data including bookings, customers, vehicles, inventory, invoices, and more
  • Webhooks -- receive real-time notifications when events happen in your garage
  • API key authentication with per-key rate limiting and permission levels
  • Garage-scoped -- every request is scoped to a specific garage
  • Audit logging -- all API activity is logged and visible in the admin panel
  • Multi-garage support -- a single key can access multiple garages in your organisation

How to Access

API keys are created and managed by your autoGMS administrator (super admin). If you need API access, contact your administrator to request a key.

Once you have received your API key, you can start making requests immediately.


Getting Started

Step 1: Request an API Key

Contact your autoGMS administrator to request an API key. When making your request, let them know:

  • What you need it for -- e.g. "Fleet Dashboard", "Parts Catalog Integration", "Diagnostics Tool".
  • Permission level -- Read Only for dashboards and reporting, or Read & Write for full integrations.
  • Which garages -- Specify if you only need access to certain garages.

Your administrator will provide you with an API key. Store it securely -- it cannot be retrieved again after creation.

Step 2: Make Your First Request

Use your API key in the X-API-Key header:

GET https://api.autoGMS.com/api/v1/garages
X-API-Key: agms_pk_live_your_key_here

This returns a list of all garages your key has access to.

Step 3: Access Garage Data

All data endpoints require a garage ID in the URL:

GET https://api.autoGMS.com/api/v1/garages/{garageId}/bookings
X-API-Key: agms_pk_live_your_key_here

Available Data

The API provides read and write access to all major areas of your garage:

ResourceReadWrite
GaragesLocation details, contact info--
CustomersProfiles, booking history, vehiclesCreate, update customers and vehicles
VehiclesVehicle details, VIN decodingCreate, update, delete vehicles
BookingsAll bookings with status, technicians, parts, stagesCreate, update, change status, delete, assign technicians and parts
Booking StagesJob stages with assigned techniciansCreate, update, change status, delete stages
TechniciansTeam list, performance stats, assigned work--
ServicesService catalog with pricing--
InventoryStock levels, low-stock alerts, barcode lookupCreate items, update details, adjust stock
InvoicesInvoice details, payment status--
EstimatesEstimate details, approval status, line itemsCreate, update, send estimates
Purchase OrdersPO details, procurement statistics--
BaysBay availability and current assignments--
WebhooksList subscriptions, delivery historyCreate, update, delete, test webhooks

Note: Write operations require a Read & Write API key. Read-only keys can only access GET endpoints.


Common Use Cases

Diagnostics Integration

Connect your diagnostics equipment to look up vehicles and create bookings:

GET  /api/v1/garages/{garageId}/vehicles/vin-lookup?vin=JTMHY7AJ5E4012345
POST /api/v1/garages/{garageId}/bookings

Fleet Management Dashboard

Monitor all active jobs, technician workloads, and bay availability:

GET /api/v1/garages/{garageId}/bookings/counts
GET /api/v1/garages/{garageId}/technicians
GET /api/v1/garages/{garageId}/bays

Parts Catalog Integration

Check inventory levels, adjust stock, and get low-stock alerts:

GET  /api/v1/garages/{garageId}/inventory?lowStock=true
GET /api/v1/garages/{garageId}/inventory/barcode/6291041500123
POST /api/v1/garages/{garageId}/inventory/{itemId}/adjust

Booking Automation

Create bookings, assign technicians, and manage job stages programmatically:

POST /api/v1/garages/{garageId}/bookings
POST /api/v1/garages/{garageId}/bookings/{bookingId}/status
POST /api/v1/garages/{garageId}/bookings/{bookingId}/technician
POST /api/v1/garages/{garageId}/bookings/{bookingId}/stages

Real-Time Notifications (Webhooks)

Receive instant notifications when events happen in your garage:

POST /api/v1/garages/{garageId}/webhooks

Subscribe to events like booking.completed, inventory.low_stock, invoice.paid, and more. autoGMS sends an HTTP POST to your URL whenever the event occurs.

Current high-coverage webhook events in v1 include:

  • customer.created
  • booking.created
  • booking.updated
  • booking.status_changed
  • booking.completed
  • technician.assigned
  • estimate.created
  • estimate.sent
  • inventory.low_stock

Custom Reporting

Pull financial data for external reporting tools:

GET /api/v1/garages/{garageId}/invoices?status=paid&dateFrom=2026-01-01
GET /api/v1/garages/{garageId}/purchase-orders/stats

For integrations like AssetMinder, use this pattern to avoid scheduling overlaps:

  1. Read first:
    • GET /api/v1/garages/{garageId}/bookings
    • GET /api/v1/garages/{garageId}/bookings/counts
    • GET /api/v1/garages/{garageId}/bays
  2. Build/refresh external calendar slots from active booking states.
  3. Optional write-back booking creation with POST /bookings.
  4. Handle booking guardrails:
    • GARAGE_CLOSED (409) — selected date is closed.
    • DATE_AT_CAPACITY (409) — daily capacity reached.
    • ACTIVE_JOB_EXISTS (409) — same vehicle already has an active job.
  5. Use webhooks to keep external calendars near real-time, then reconcile with periodic polling.

API Response Format

All responses use a consistent JSON format.

Successful response:

{
"success": true,
"data": { ... }
}

List response with pagination:

{
"success": true,
"data": [ ... ],
"pagination": {
"page": 1,
"limit": 20,
"total": 156,
"totalPages": 8,
"hasMore": true
}
}

Error response:

{
"success": false,
"error": {
"type": "NotFoundError",
"message": "Booking not found",
"code": "RESOURCE_NOT_FOUND"
}
}

Common scheduling conflict errors for write integrations:

  • GARAGE_CLOSED (409)
  • DATE_AT_CAPACITY (409)
  • ACTIVE_JOB_EXISTS (409)

Pagination and Filtering

Pagination

All list endpoints support pagination:

ParameterDefaultMaxDescription
page1--Page number
limit20100Items per page

Example: GET /api/v1/garages/{garageId}/bookings?page=2&limit=50

Sorting

Use the sort parameter. Prefix with - for descending order:

  • sort=-date -- Newest first
  • sort=name -- Alphabetical

Date Filtering

Most list endpoints support date range filtering:

  • dateFrom=2026-01-01 -- Records from this date onwards
  • dateTo=2026-01-31 -- Records up to this date

Rate Limiting

Each API key has a request limit per minute based on its tier:

TierRequests per Minute
Standard60
Premium300
Enterprise1,000

Every response includes rate limit headers:

RateLimit-Limit: 60
RateLimit-Remaining: 42
RateLimit-Reset: 1706000000

If you exceed the limit, you will receive a 429 Too Many Requests response. Wait until the Retry-After period expires before making more requests.


Managing API Keys

API keys are managed by your autoGMS administrator. If you need any of the following, contact your administrator:

  • View usage statistics -- Your admin can see request counts, error rates, and recent activity for each key.
  • Rotate a key -- If a key may have been compromised, ask your admin to rotate it. This generates a new key and invalidates the old one.
  • Revoke a key -- To permanently disable a key, ask your admin to revoke it.

Key rotation and revocation are permanent actions handled by your administrator.


Complete Endpoint Reference

All endpoints are prefixed with /api/v1. Resource endpoints use /garages/{garageId}/.

Garages

EndpointDescription
GET /garagesList all garages accessible to this key
GET /garages/{garageId}Get garage details

Customers

EndpointDescription
GET /garages/{gid}/customersList garage customers
GET /garages/{gid}/customers/search?q=ahmedSearch by name, email, or phone
POST /garages/{gid}/customersCreate a customer
PATCH /garages/{gid}/customers/{cid}Update a customer
GET /garages/{gid}/customers/{cid}Get customer with booking stats
GET /garages/{gid}/customers/{cid}/vehiclesList customer vehicles
POST /garages/{gid}/customers/{cid}/vehiclesAdd a vehicle to a customer
GET /garages/{gid}/customers/{cid}/bookingsList customer bookings

Vehicles

EndpointDescription
GET /garages/{gid}/vehiclesList all vehicles
POST /garages/{gid}/vehiclesCreate a vehicle
PATCH /garages/{gid}/vehicles/{vid}Update a vehicle
DELETE /garages/{gid}/vehicles/{vid}Delete a vehicle
GET /garages/{gid}/vehicles/{vid}Get vehicle details
GET /garages/{gid}/vehicles/vin-lookup?vin=...Decode a VIN

Bookings

EndpointDescription
GET /garages/{gid}/bookingsList bookings (filter by status, date, customer, technician)
POST /garages/{gid}/bookingsCreate a booking
GET /garages/{gid}/bookings/countsGet counts by status
GET /garages/{gid}/bookings/{bid}Get full booking detail
PATCH /garages/{gid}/bookings/{bid}Update a booking
DELETE /garages/{gid}/bookings/{bid}Delete a booking (pending/confirmed only)
POST /garages/{gid}/bookings/{bid}/statusChange booking status
POST /garages/{gid}/bookings/{bid}/technicianAssign a technician
GET /garages/{gid}/bookings/{bid}/inventoryList assigned parts
POST /garages/{gid}/bookings/{bid}/inventoryAssign parts to a booking
GET /garages/{gid}/bookings/{bid}/partsList assigned parts (alias)
GET /garages/{gid}/bookings/{bid}/attachmentsList attachments
GET /garages/{gid}/bookings/{bid}/stagesList project stages
POST /garages/{gid}/bookings/{bid}/stagesCreate a stage
PATCH /garages/{gid}/bookings/{bid}/stages/{sid}Update a stage
POST /garages/{gid}/bookings/{bid}/stages/{sid}/statusChange stage status
DELETE /garages/{gid}/bookings/{bid}/stages/{sid}Delete a stage

Technicians

EndpointDescription
GET /garages/{gid}/techniciansList technicians
GET /garages/{gid}/technicians/{tid}/statsPerformance statistics
GET /garages/{gid}/technicians/{tid}/bookingsAssigned bookings

Services

EndpointDescription
GET /garages/{gid}/servicesService catalog
GET /garages/{gid}/services/{sid}Service details
GET /garages/{gid}/services/{sid}/pricesPricing by vehicle type

Inventory

EndpointDescription
GET /garages/{gid}/inventoryList items
POST /garages/{gid}/inventoryCreate an inventory item
GET /garages/{gid}/inventory/{iid}Get item
PATCH /garages/{gid}/inventory/{iid}Update an item
POST /garages/{gid}/inventory/{iid}/adjustAdjust stock (add or subtract)
GET /garages/{gid}/inventory/low-stockItems below threshold
GET /garages/{gid}/inventory/categoriesCategories with counts
GET /garages/{gid}/inventory/statsInventory statistics
GET /garages/{gid}/inventory/barcode/{code}Barcode lookup

Invoices

EndpointDescription
GET /garages/{gid}/invoicesList invoices
GET /garages/{gid}/invoices/{iid}Get invoice detail

Estimates

EndpointDescription
GET /garages/{gid}/estimatesList estimates
POST /garages/{gid}/estimatesCreate an estimate
GET /garages/{gid}/estimates/{eid}Get estimate detail
PATCH /garages/{gid}/estimates/{eid}Update an estimate
POST /garages/{gid}/estimates/{eid}/sendSend an estimate to the customer

Purchase Orders

EndpointDescription
GET /garages/{gid}/purchase-ordersList purchase orders
GET /garages/{gid}/purchase-orders/{pid}Get PO detail
GET /garages/{gid}/purchase-orders/statsProcurement statistics

Bays

EndpointDescription
GET /garages/{gid}/baysList bays with current status

Webhooks

EndpointDescription
GET /garages/{gid}/webhooksList your webhook subscriptions
POST /garages/{gid}/webhooksCreate a webhook subscription
PATCH /garages/{gid}/webhooks/{wid}Update a webhook
DELETE /garages/{gid}/webhooks/{wid}Delete a webhook
POST /garages/{gid}/webhooks/{wid}/testSend a test event
GET /garages/{gid}/webhooks/{wid}/deliveriesView delivery history

Coming Soon

  • OAuth 2.0 -- Third-party authentication for marketplace integrations

Need More Help?

  • Request an API key: Contact your autoGMS administrator
  • Key issues (rotation, revocation): Contact your autoGMS administrator
  • General support: Email support@myautoGMS.com
  • Integration scope and technical design review: Email support@myautoGMS.com and include:
    • target garage(s)
    • required permissions (read or read_write)
    • expected sync direction (pull-only vs push + pull)
    • expected volume (requests/minute, bookings/day)