{
  "opencollection": "1.0.0",
  "info": {
    "name": "ServiceM8 REST API",
    "version": "1.0",
    "description": "ServiceM8 field service and job management REST API. Plain JSON over HTTP with GET, POST, and DELETE against object endpoints under https://api.servicem8.com/api_1.0. Each object type is a .json collection; single records are addressed as /{object}/{uuid}.json. Private integrations use the X-API-Key header; public add-ons use OAuth 2.0 Bearer tokens. Webhook subscriptions live at https://api.servicem8.com/webhook_subscriptions."
  },
  "request": {
    "auth": {
      "type": "apikey",
      "apikey": {
        "key": "X-API-Key",
        "value": "{{apiKey}}",
        "in": "header"
      }
    }
  },
  "items": [
    {
      "info": { "name": "Jobs", "type": "folder" },
      "items": [
        {
          "info": { "name": "List jobs", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/job.json" },
          "docs": "Lists jobs. Supports OData-style $filter."
        },
        {
          "info": { "name": "Create a job", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/job.json", "body": { "type": "json", "data": "{\"company_uuid\":\"\",\"status\":\"Quote\",\"job_address\":\"\",\"job_description\":\"\"}" } },
          "docs": "Creates a job. New record UUID is returned in the x-record-uuid response header."
        },
        {
          "info": { "name": "Retrieve a job", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/job/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path", "description": "Job UUID." } ] },
          "docs": "Retrieves a single job by UUID."
        },
        {
          "info": { "name": "Update a job", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/job/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{\"status\":\"Work Order\"}" } },
          "docs": "Updates a job by POSTing to the record URL."
        },
        {
          "info": { "name": "Delete a job", "type": "http" },
          "http": { "method": "DELETE", "url": "https://api.servicem8.com/api_1.0/job/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Deletes a job by UUID."
        }
      ]
    },
    {
      "info": { "name": "Job Activities", "type": "folder" },
      "items": [
        {
          "info": { "name": "List job activities", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/jobactivity.json" },
          "docs": "Lists job activities (scheduled bookings and recorded time)."
        },
        {
          "info": { "name": "Create a job activity", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/jobactivity.json", "body": { "type": "json", "data": "{\"job_uuid\":\"\",\"staff_uuid\":\"\",\"start_date\":\"2026-07-10 09:00:00\",\"end_date\":\"2026-07-10 11:00:00\"}" } },
          "docs": "Schedules a job activity for a staff member."
        },
        {
          "info": { "name": "Retrieve a job activity", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/jobactivity/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Retrieves a single job activity by UUID."
        },
        {
          "info": { "name": "Delete a job activity", "type": "http" },
          "http": { "method": "DELETE", "url": "https://api.servicem8.com/api_1.0/jobactivity/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Deletes a job activity by UUID."
        }
      ]
    },
    {
      "info": { "name": "Clients (Companies)", "type": "folder" },
      "items": [
        {
          "info": { "name": "List companies", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/company.json" },
          "docs": "Lists client companies (UI: Clients/Customers)."
        },
        {
          "info": { "name": "Create a company", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/company.json", "body": { "type": "json", "data": "{\"name\":\"Acme Pty Ltd\",\"email\":\"accounts@acme.example\"}" } },
          "docs": "Creates a client company."
        },
        {
          "info": { "name": "Retrieve a company", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/company/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Retrieves a single company by UUID."
        },
        {
          "info": { "name": "Update a company", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/company/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{\"email\":\"billing@acme.example\"}" } },
          "docs": "Updates a company by POSTing to the record URL."
        },
        {
          "info": { "name": "Delete a company", "type": "http" },
          "http": { "method": "DELETE", "url": "https://api.servicem8.com/api_1.0/company/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Deletes a company by UUID."
        },
        {
          "info": { "name": "List company contacts", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/companycontact.json" },
          "docs": "Lists company contacts."
        },
        {
          "info": { "name": "Create a company contact", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/companycontact.json", "body": { "type": "json", "data": "{\"company_uuid\":\"\",\"first\":\"Jane\",\"last\":\"Doe\",\"email\":\"jane@acme.example\"}" } },
          "docs": "Creates a company contact."
        }
      ]
    },
    {
      "info": { "name": "Job Contacts", "type": "folder" },
      "items": [
        {
          "info": { "name": "List job contacts", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/jobcontact.json" },
          "docs": "Lists job contacts."
        },
        {
          "info": { "name": "Create a job contact", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/jobcontact.json", "body": { "type": "json", "data": "{\"job_uuid\":\"\",\"first\":\"John\",\"last\":\"Smith\",\"type\":\"JOB\"}" } },
          "docs": "Creates a job contact (types: JOB, BILLING, Property Owner, Property Manager)."
        },
        {
          "info": { "name": "Delete a job contact", "type": "http" },
          "http": { "method": "DELETE", "url": "https://api.servicem8.com/api_1.0/jobcontact/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Deletes a job contact by UUID."
        }
      ]
    },
    {
      "info": { "name": "Staff", "type": "folder" },
      "items": [
        {
          "info": { "name": "List staff", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/staff.json" },
          "docs": "Lists staff members."
        },
        {
          "info": { "name": "Retrieve a staff member", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/staff/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Retrieves a single staff member by UUID."
        }
      ]
    },
    {
      "info": { "name": "Materials", "type": "folder" },
      "items": [
        {
          "info": { "name": "List materials", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/material.json" },
          "docs": "Lists the materials catalog."
        },
        {
          "info": { "name": "List job materials", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/jobmaterial.json" },
          "docs": "Lists job material line items."
        },
        {
          "info": { "name": "Create a job material", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/jobmaterial.json", "body": { "type": "json", "data": "{\"job_uuid\":\"\",\"name\":\"Callout Fee\",\"quantity\":\"1\",\"price\":\"120.00\"}" } },
          "docs": "Adds a line item to a job."
        }
      ]
    },
    {
      "info": { "name": "Attachments", "type": "folder" },
      "items": [
        {
          "info": { "name": "List attachments", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/attachment.json" },
          "docs": "Lists attachment metadata records."
        },
        {
          "info": { "name": "Create an attachment record", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/attachment.json", "body": { "type": "json", "data": "{\"related_object\":\"job\",\"related_object_uuid\":\"\",\"attachment_name\":\"site-photo.jpg\",\"file_type\":\".jpg\"}" } },
          "docs": "Creates the attachment record; upload bytes to /attachment/{uuid}.file."
        },
        {
          "info": { "name": "Download attachment file", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/attachment/:uuid.file", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Downloads the binary file for an attachment."
        }
      ]
    },
    {
      "info": { "name": "Queues", "type": "folder" },
      "items": [
        {
          "info": { "name": "List queues", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/queue.json" },
          "docs": "Lists workflow queues."
        },
        {
          "info": { "name": "Create a queue", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/queue.json", "body": { "type": "json", "data": "{\"name\":\"Scheduled\"}" } },
          "docs": "Creates a workflow queue."
        }
      ]
    },
    {
      "info": { "name": "Vendors", "type": "folder" },
      "items": [
        {
          "info": { "name": "List vendors", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/vendor.json" },
          "docs": "Returns the connected ServiceM8 account (vendor) record."
        },
        {
          "info": { "name": "Retrieve a vendor", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/vendor/:uuid.json", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Retrieves a single vendor (account) record by UUID."
        }
      ]
    },
    {
      "info": { "name": "Badges", "type": "folder" },
      "items": [
        {
          "info": { "name": "List badges", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/api_1.0/badge.json" },
          "docs": "Lists badges."
        },
        {
          "info": { "name": "Create a badge", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/api_1.0/badge.json", "body": { "type": "json", "data": "{\"name\":\"VIP\",\"colour\":\"#FF0000\"}" } },
          "docs": "Creates a badge."
        }
      ]
    },
    {
      "info": { "name": "Webhooks", "type": "folder" },
      "items": [
        {
          "info": { "name": "List webhook subscriptions", "type": "http" },
          "http": { "method": "GET", "url": "https://api.servicem8.com/webhook_subscriptions" },
          "docs": "Lists webhook subscriptions."
        },
        {
          "info": { "name": "Create an object webhook subscription", "type": "http" },
          "http": { "method": "POST", "url": "https://api.servicem8.com/webhook_subscriptions", "body": { "type": "json", "data": "{\"object\":\"job\",\"fields\":\"status,queue_uuid\",\"callback_url\":\"https://example.com/servicem8/webhook\"}" } },
          "docs": "Subscribe to field changes on an object; ServiceM8 POSTs object, changed fields, uuid, and resource_url to the callback."
        },
        {
          "info": { "name": "Delete a webhook subscription", "type": "http" },
          "http": { "method": "DELETE", "url": "https://api.servicem8.com/webhook_subscriptions/:uuid", "params": [ { "name": "uuid", "value": "", "type": "path" } ] },
          "docs": "Deletes a webhook subscription by UUID."
        }
      ]
    }
  ]
}
