ServiceM8 API Guide for Contractors

One-line verdict: The most self-serve API in this directory — generate a key in your own Settings and you’re in, with full documented read/write on clients, jobs, and job payments. Openness: 5 / 5 — rated 5 because ServiceM8 documents a complete REST API with per-object permission scopes, webhooks, and published rate limits, and its own docs state you do not need a developer account to use API keys.

The connection that works

Rung 1 — Direct connection. ServiceM8’s developer portal documents a family of APIs — REST, Webhooks, Messaging, Document Templates, Custom Fields, and more. The REST API is “plain JSON over HTTP” with named List / Create / Retrieve / Update / Delete operations per object, each guarded by its own permission scope (read_jobs, manage_customers, and so on) — scoped keys done properly, at the object level.

For your own shop, access is as simple as it gets anywhere in this directory: generate an API key in Settings → API Keys and send it as a header. The vendor’s words: “You do not need a ServiceM8 Developer account to use API keys.” The second path exists for people building add-ons for other accounts: register as a Development Partner and implement OAuth 2.0, with one-hour access tokens. That gate sits on selling to others, not on connecting your own shop.

Learn ServiceM8’s naming map before reading any quote: a customer is a Company; quote and invoice line items are JobMaterials; quotes/invoices/work orders in the Job Diary are Attachments. Which leads to the fact this page exists to state plainly: there is no standalone invoice endpoint in ServiceM8’s reference. Invoicing data lives on Job records, JobMaterials, and Attachments. The verified money object is Job Payments — list, retrieve, create, update, delete. Clients, company contacts, jobs, job contacts, tasks, notes, materials, attachments, and form responses all carry the documented CRUD pattern with their own scopes.

Webhooks: documented and honest about their shape — a subscription fires with the object name, what changed, and a link; your system then fetches the record through the API. Nine object types support them (Job, Job Payment, Company, Task, Material, Note, Attachment, Job Activity, Form Response). Failed deliveries retry for up to 72 hours; answering 410 unsubscribes you. Rate limits are published: 180 requests per minute and 20,000 per day, per add-on per account.

Bridge apps: both are real — ServiceM8 documents Zapier in its own help center (triggers New job / New client / form completed; actions Create job / Create client), and Make lists a full module set. On a platform this open, bridges are the shortcut, not the strategy.

Can automate

Can’t automate

Hidden gate: Your own shop’s key is self-serve in Settings — but the moment you sell the add-on to other shops, you have to register as a Development Partner and switch to OAuth. The gate is on distribution, not on your own connection.

Build fit — what this platform supports well

What this means for your shop

If you run ServiceM8, you hold the easiest hand in this directory: the key is in your own Settings, the scopes are per-object, the limits are published, and payments and jobs are real API citizens. The only translation work is vocabulary — companies, job materials, attachments — and any builder who does that translation in the quote, instead of promising you an invoice endpoint that doesn’t exist, is a builder who has read the docs.

Check your shop — free

Free AEO Checker — Is your website ready to be recommended by AI search? Get a readiness score from the signals on your own site.

Free Snapshot — Find where leads and money leak — missed calls, slow lead response, stale quotes, unpaid invoices — and see which ones ServiceM8 can help you close.

At the other end of the size range, our Simpro API guide looks at a deeper, admin-arranged API aimed at larger service operations — a useful contrast if your crew is outgrowing a self-serve setup like this one.