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 Onlyfor dashboards and reporting, orRead & Writefor 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:
| Resource | Read | Write |
|---|---|---|
| Garages | Location details, contact info | -- |
| Customers | Profiles, booking history, vehicles | Create, update customers and vehicles |
| Vehicles | Vehicle details, VIN decoding | Create, update, delete vehicles |
| Bookings | All bookings with status, technicians, parts, stages | Create, update, change status, delete, assign technicians and parts |
| Booking Stages | Job stages with assigned technicians | Create, update, change status, delete stages |
| Technicians | Team list, performance stats, assigned work | -- |
| Services | Service catalog with pricing | -- |
| Inventory | Stock levels, low-stock alerts, barcode lookup | Create items, update details, adjust stock |
| Invoices | Invoice details, payment status | -- |
| Estimates | Estimate details, approval status, line items | Create, update, send estimates |
| Purchase Orders | PO details, procurement statistics | -- |
| Bays | Bay availability and current assignments | -- |
| Webhooks | List subscriptions, delivery history | Create, update, delete, test webhooks |
Note: Write operations require a
Read & WriteAPI 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.createdbooking.createdbooking.updatedbooking.status_changedbooking.completedtechnician.assignedestimate.createdestimate.sentinventory.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
Fleet Calendar Sync (Recommended Pattern)
For integrations like AssetMinder, use this pattern to avoid scheduling overlaps:
- Read first:
GET /api/v1/garages/{garageId}/bookingsGET /api/v1/garages/{garageId}/bookings/countsGET /api/v1/garages/{garageId}/bays
- Build/refresh external calendar slots from active booking states.
- Optional write-back booking creation with
POST /bookings. - 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.
- 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:
| Parameter | Default | Max | Description |
|---|---|---|---|
page | 1 | -- | Page number |
limit | 20 | 100 | Items 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 firstsort=name-- Alphabetical
Date Filtering
Most list endpoints support date range filtering:
dateFrom=2026-01-01-- Records from this date onwardsdateTo=2026-01-31-- Records up to this date
Rate Limiting
Each API key has a request limit per minute based on its tier:
| Tier | Requests per Minute |
|---|---|
| Standard | 60 |
| Premium | 300 |
| Enterprise | 1,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
| Endpoint | Description |
|---|---|
GET /garages | List all garages accessible to this key |
GET /garages/{garageId} | Get garage details |
Customers
| Endpoint | Description |
|---|---|
GET /garages/{gid}/customers | List garage customers |
GET /garages/{gid}/customers/search?q=ahmed | Search by name, email, or phone |
POST /garages/{gid}/customers | Create 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}/vehicles | List customer vehicles |
POST /garages/{gid}/customers/{cid}/vehicles | Add a vehicle to a customer |
GET /garages/{gid}/customers/{cid}/bookings | List customer bookings |
Vehicles
| Endpoint | Description |
|---|---|
GET /garages/{gid}/vehicles | List all vehicles |
POST /garages/{gid}/vehicles | Create 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
| Endpoint | Description |
|---|---|
GET /garages/{gid}/bookings | List bookings (filter by status, date, customer, technician) |
POST /garages/{gid}/bookings | Create a booking |
GET /garages/{gid}/bookings/counts | Get 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}/status | Change booking status |
POST /garages/{gid}/bookings/{bid}/technician | Assign a technician |
GET /garages/{gid}/bookings/{bid}/inventory | List assigned parts |
POST /garages/{gid}/bookings/{bid}/inventory | Assign parts to a booking |
GET /garages/{gid}/bookings/{bid}/parts | List assigned parts (alias) |
GET /garages/{gid}/bookings/{bid}/attachments | List attachments |
GET /garages/{gid}/bookings/{bid}/stages | List project stages |
POST /garages/{gid}/bookings/{bid}/stages | Create a stage |
PATCH /garages/{gid}/bookings/{bid}/stages/{sid} | Update a stage |
POST /garages/{gid}/bookings/{bid}/stages/{sid}/status | Change stage status |
DELETE /garages/{gid}/bookings/{bid}/stages/{sid} | Delete a stage |
Technicians
| Endpoint | Description |
|---|---|
GET /garages/{gid}/technicians | List technicians |
GET /garages/{gid}/technicians/{tid}/stats | Performance statistics |
GET /garages/{gid}/technicians/{tid}/bookings | Assigned bookings |
Services
| Endpoint | Description |
|---|---|
GET /garages/{gid}/services | Service catalog |
GET /garages/{gid}/services/{sid} | Service details |
GET /garages/{gid}/services/{sid}/prices | Pricing by vehicle type |
Inventory
| Endpoint | Description |
|---|---|
GET /garages/{gid}/inventory | List items |
POST /garages/{gid}/inventory | Create an inventory item |
GET /garages/{gid}/inventory/{iid} | Get item |
PATCH /garages/{gid}/inventory/{iid} | Update an item |
POST /garages/{gid}/inventory/{iid}/adjust | Adjust stock (add or subtract) |
GET /garages/{gid}/inventory/low-stock | Items below threshold |
GET /garages/{gid}/inventory/categories | Categories with counts |
GET /garages/{gid}/inventory/stats | Inventory statistics |
GET /garages/{gid}/inventory/barcode/{code} | Barcode lookup |
Invoices
| Endpoint | Description |
|---|---|
GET /garages/{gid}/invoices | List invoices |
GET /garages/{gid}/invoices/{iid} | Get invoice detail |
Estimates
| Endpoint | Description |
|---|---|
GET /garages/{gid}/estimates | List estimates |
POST /garages/{gid}/estimates | Create an estimate |
GET /garages/{gid}/estimates/{eid} | Get estimate detail |
PATCH /garages/{gid}/estimates/{eid} | Update an estimate |
POST /garages/{gid}/estimates/{eid}/send | Send an estimate to the customer |
Purchase Orders
| Endpoint | Description |
|---|---|
GET /garages/{gid}/purchase-orders | List purchase orders |
GET /garages/{gid}/purchase-orders/{pid} | Get PO detail |
GET /garages/{gid}/purchase-orders/stats | Procurement statistics |
Bays
| Endpoint | Description |
|---|---|
GET /garages/{gid}/bays | List bays with current status |
Webhooks
| Endpoint | Description |
|---|---|
GET /garages/{gid}/webhooks | List your webhook subscriptions |
POST /garages/{gid}/webhooks | Create a webhook subscription |
PATCH /garages/{gid}/webhooks/{wid} | Update a webhook |
DELETE /garages/{gid}/webhooks/{wid} | Delete a webhook |
POST /garages/{gid}/webhooks/{wid}/test | Send a test event |
GET /garages/{gid}/webhooks/{wid}/deliveries | View 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 (
readorread_write) - expected sync direction (pull-only vs push + pull)
- expected volume (requests/minute, bookings/day)