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
Prerequisites
API access is a paid add-on feature. Your organisation must have API Access enabled. If the feature is not enabled, the API Access page in the dashboard will show a notice with instructions to contact support.
Once enabled, organisation administrators can create and manage API keys directly from the dashboard -- no need to contact support for key operations.
Getting Started
Step 1: Create an API Key
- In the dashboard sidebar, navigate to your organisation and click API Access.
- Click Create key in the top-right corner.
- Enter a descriptive name for the key (e.g., "Production backend", "Fleet dashboard", "Staging testing").
- Choose a permission level:
- Read only -- can only access GET endpoints; suitable for dashboards, reporting, and read-only integrations.
- Read & Write -- full access to all endpoints including creating and modifying data.
- Click Create.
- The full API key is displayed once. Copy it immediately and store it securely -- it cannot be retrieved again after this dialog is closed.
Your organisation has a maximum number of active keys (shown at the top of the page). The Create button is disabled when you reach the limit.
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.SLOT_AT_CAPACITY(409) — selected time slot is full.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)TIMESLOT_REQUIRED(400) when the garage requires a slot and notimeslotis suppliedINVALID_TIMESLOT(400) whentimeslotis not valid for that dateSLOT_AT_CAPACITY(409)ACTIVE_JOB_EXISTS(409)
If a garage uses time-slot scheduling, include a timeslot field in booking writes using HH:MM format, for example:
{
"date": "2026-03-04",
"timeslot": "09:00"
}
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 from the API Access page in your organisation dashboard. Any organisation administrator can perform these actions.
API Access Dashboard
The API Access page shows:
- Stats overview -- four summary cards displaying total requests (30 days), error rate, average latency (with p50/p95/p99 percentiles when available), and total data transferred.
- Keys table -- lists all keys (active and revoked) with per-key metrics:
| Column | What it shows |
|---|---|
| Name | Key name and masked prefix |
| Permission | Read only or Read & Write |
| Requests (30d) | Request count for the last 30 days, with HTTP method breakdown |
| Lifetime | Total all-time request count |
| Errors (30d) | Error count with spike detection (flags if 24-hour error rate is double the 30-day rate) |
| Latency | Average response time |
| Data | Total data transferred |
| Activity | First and last request dates |
| Status | Active or Revoked |
Key Actions
Each active key has three actions in the table:
- View usage -- opens a detailed daily usage breakdown and per-endpoint statistics for that specific key.
- Rotate -- generates a new key and invalidates the old one. The new key is shown once -- copy it immediately. Use this if a key may have been compromised.
- Revoke -- permanently disables the key. Revoked keys remain visible in the table (greyed out) for audit purposes but can no longer be used for API requests.
Rotation and revocation are permanent and cannot be undone.
Analytics Cards
Below the keys table, the page shows additional analytics when data is available:
- Method breakdown -- a visual bar showing request distribution across HTTP methods (GET, POST, PUT, PATCH, DELETE)
- Top endpoints (30d) -- the most-called API paths with request counts, error counts, and average latency
- Recent errors (7d) -- error patterns with status codes, error codes, occurrence counts, and sample paths
- Requests by hour (30d) -- a histogram showing request distribution across hours of the day (UTC)
- Response size distribution -- how response payload sizes are distributed
- Top user agents (30d) -- which client libraries or tools are calling the API
- Top IPs (30d) -- which IP addresses generate the most traffic
- Usage by garage -- request distribution per garage with error rates and latency
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 |
Stage lifecycle values commonly used by project workflows are:
draftopenin_progresscompletedinvoicedclosed
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?
- Enable API access: Email support@myautogms.com to add the API Access add-on to your subscription
- Key management: Use the API Access page in your dashboard to create, rotate, and revoke keys
- 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)
Quick Reference
| I want to... | Endpoint / Action | Method |
|---|---|---|
| Get API credentials | API Access page → Generate Key | Dashboard |
| List all bookings | GET /api/v1/bookings | GET |
| Create a booking | POST /api/v1/bookings | POST |
| Get booking details | GET /api/v1/bookings/:id | GET |
| Update a booking | PATCH /api/v1/bookings/:id | PATCH |
| List customers | GET /api/v1/customers | GET |
| Create a customer | POST /api/v1/customers | POST |
| List services | GET /api/v1/services | GET |
| List invoices | GET /api/v1/invoices | GET |
| Get availability | GET /api/v1/availability | GET |
| Authenticate | Authorization: Bearer <api_key> | Header |
| View API docs | API Access page → Documentation | Dashboard |