Shop Commander · Developers

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.

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