Home Features Pricing App AI Advisor Docs Compare About Training Contact Log In Get an API key
Developersv1.0.0-rc.6

An API built from the shop floor up.

The same customers, vehicles, appointments, repair orders, invoices, payments, inventory, and tasks a shop runs on every day, over a versioned REST API with signed webhooks. The shop issues the key, scopes decide what it reaches, and the contract is frozen in OpenAPI.

  • 59 operations across 14 resources
  • Signed webhooks with replay
  • Idempotent writes
  • Version 1.0.0-rc.6
GET/v1/shop200 OK
$ curl https://api.shopcommander.com/v1/shop \
    -H "Authorization: Bearer $SC_API_KEY"
{
  "id": "shop_1f3c…",
  "object": "shop",
  "name": "Northside Auto",
  "timezone": "America/Toronto",
  "currency": "CAD",
  "capabilities": {
    "online_booking": true,
    "tire_storage": true
  }
}

What a key can reach

Every resource below is the shop’s live record, not a copy. Each one links to its operations in the reference.

appointments8 operationsAvailability, booking, cancellation, check-in, and conversion into a repair order.canned jobs2 operationsThe shop’s packaged jobs, ready to add to an order.customers7 operationsFind, create, update, and archive customers; keep your own ids on them.events2 operationsThe same event feed webhooks deliver, available to poll.inventory items2 operationsThe parts the shop stocks, with on-hand, reserved, and available quantities.invoices2 operationsPosted invoices, exactly as the customer received them.jobs6 operationsStart, complete, or flag a job; read its parts and labor.payments2 operationsEvery payment recorded against those invoices.repair orders7 operationsRepair orders and their jobs, from creation through completion.shop1 operationTime zone, currency, and which optional features the shop has switched on.tasks7 operationsFollow-ups and to-dos, whether they came from you or from the shop.technicians1 operationWho can be assigned work.vehicles6 operationsThe customer’s vehicles by VIN and plate, with your external ids attached.webhook endpoints6 operationsRegister HTTPS endpoints, rotate signing secrets, send test events.

Want to build an integration?

Build with us, at no cost.

Shop Commander is free for shops, and the API is part of the product: no developer tier, no per-call pricing, no upgrade button. Whether you are wiring a shop’s website into its schedule, syncing a fleet’s repair history, feeding an accounting system, or giving an AI assistant a safe way in, you build against the same contract the shop already runs on.

Browse the guides

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