Getting Started
Create an API key in Settings → Developer and make your first call in under five minutes.
The Shop Commander API is a versioned REST API with signed webhooks. It lets a shop connect its own website, a fleet customer's systems, accounting tools, dashboards, or an AI assistant to the same data the shop uses every day — customers, vehicles, appointments, repair orders, invoices, payments, inventory, and tasks.
- Base URL:
https://api.shopcommander.com/v1 - Auth:
Authorization: Bearer sc_live_…(an API key issued by the shop) - Format: JSON in, JSON out, UTF-8; money as decimal strings; instants as UTC
Z - Spec: openapi.json — the exact contract, versioned and frozen
1. Get a key
A shop Owner or Admin opens Settings → Developer in Shop Commander, creates an integration (a name plus the scopes it needs), and copies the key from the one-time dialog. Keys are shown once; the shop can issue a second key for rotation and revoke either at any time.
There is no self-serve signup for the API: access is always granted by the shop whose data it reaches.
2. Make a call
curl https://api.shopcommander.com/v1/shop \
-H "Authorization: Bearer sc_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
{
"id": "shop_1f3c…", "object": "shop", "name": "Northside Auto",
"timezone": "America/Toronto", "currency": "CAD",
"capabilities": { "online_booking": true, "tire_storage": true, "…": "…" }
}
GET /v1/shop needs the shop.read scope and is the right first call: it tells you the shop's time zone, currency, and which optional features are switched on, so your integration can adapt instead of guessing.
3. Read something
curl "https://api.shopcommander.com/v1/customers?q=jane&limit=20" \
-H "Authorization: Bearer $SC_API_KEY"
Lists come back in a paginated envelope — see Pagination & sync.
4. Write something
curl -X POST https://api.shopcommander.com/v1/appointments \
-H "Authorization: Bearer $SC_API_KEY" \
-H "Idempotency-Key: booking-form-8f2a1c" \
-H "Content-Type: application/json" \
-d '{"customer_id":"cus_…","vehicle_id":"veh_…","date":"2026-09-14","time":"09:30","reason":"Oil change"}'
Creates that can be retried carry an Idempotency-Key so a network hiccup never books twice. See Idempotency & concurrency.
5. Get told when things change
Add a webhook endpoint to the integration (Settings → Developer, or POST /v1/webhook-endpoints) and Shop Commander will POST signed events — appointment.created, invoice.posted, repair_order.status_changed, and the rest of the taxonomy — to your HTTPS URL.
Where to next
- Authentication & API keys
- Scopes — what a key can reach
- Requests & responses — ids, money, dates, envelopes
- Errors & workflow blockers
- API Reference
- Example integrations
- AI-agent guide — one page you can paste into a coding agent