# ServiceM8 Documentation
> Documentation for ServiceM8
## Guides
- [Authentication](https://developer.servicem8.com/docs/authentication.md)
- [Add-on Types](https://developer.servicem8.com/docs/add-on-types.md)
- [Add-on Store Requirements](https://developer.servicem8.com/docs/addon-store-requirements.md)
- [MCP Server](https://developer.servicem8.com/docs/mcp-server.md): Connect to your ServiceM8 account as an MCP Server
- [Getting Started](https://developer.servicem8.com/docs/getting-started-1.md)
- [Add-on Capabilities](https://developer.servicem8.com/docs/add-on-capabilities.md): Add-ons can provide functionality by using the various ServiceM8 APIs, by extending the ServiceM8 user interface, or both.
- [Pagination](https://developer.servicem8.com/docs/pagination.md): The ServiceM8 API implements cursor-based pagination for handling large datasets efficiently.
## API Reference
- [List all Allocation Windows](https://developer.servicem8.com/reference/listallocationwindows.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**.
- [Create a new Allocation Window](https://developer.servicem8.com/reference/createallocationwindows.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve an Allocation Window](https://developer.servicem8.com/reference/getallocationwindows.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**.
- [Update an Allocation Window](https://developer.servicem8.com/reference/updateallocationwindows.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**.
- [Delete an Allocation Window](https://developer.servicem8.com/reference/deleteallocationwindows.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**.
- [List all Asset Type Fields](https://developer.servicem8.com/reference/listassettypefields.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_assets**.
- [Create a new Asset Type Field](https://developer.servicem8.com/reference/createassettypefields.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve an Asset Type Field](https://developer.servicem8.com/reference/getassettypefields.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_assets**.
- [Update an Asset Type Field](https://developer.servicem8.com/reference/updateassettypefields.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**.
- [Delete an Asset Type Field](https://developer.servicem8.com/reference/deleteassettypefields.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**.
- [List all Asset Types](https://developer.servicem8.com/reference/listassettypes.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_assets**.
- [Create a new Asset Type](https://developer.servicem8.com/reference/createassettypes.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve an Asset Type](https://developer.servicem8.com/reference/getassettypes.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_assets**.
- [Update an Asset Type](https://developer.servicem8.com/reference/updateassettypes.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**.
- [Delete an Asset Type](https://developer.servicem8.com/reference/deleteassettypes.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**.
- [Assets](https://developer.servicem8.com/reference/assets.md)
- [List all Assets](https://developer.servicem8.com/reference/listassets.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_assets**.
- [Retrieve an Asset](https://developer.servicem8.com/reference/getassets.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_assets**.
- [Update an Asset](https://developer.servicem8.com/reference/updateassets.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**.
- [Delete an Asset](https://developer.servicem8.com/reference/deleteassets.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**.
- [Attachments](https://developer.servicem8.com/reference/attachments.md)
- [List all Attachments](https://developer.servicem8.com/reference/listattachments.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_attachments**.
- [Create a new Attachment](https://developer.servicem8.com/reference/createattachments.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_attachments**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve an Attachment](https://developer.servicem8.com/reference/getattachments.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_attachments**.
- [Update an Attachment](https://developer.servicem8.com/reference/updateattachments.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_attachments**.
- [Delete an Attachment](https://developer.servicem8.com/reference/deleteattachments.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_attachments**.
- [List all Availabilities](https://developer.servicem8.com/reference/listavailabilities.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**.
- [Create a new Availability](https://developer.servicem8.com/reference/createavailabilities.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve an Availability](https://developer.servicem8.com/reference/getavailabilities.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**.
- [Update an Availability](https://developer.servicem8.com/reference/updateavailabilities.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**.
- [Delete an Availability](https://developer.servicem8.com/reference/deleteavailabilities.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**.
- [List all Badges](https://developer.servicem8.com/reference/listbadges.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **manage_badges**.
- [Create a new Badge](https://developer.servicem8.com/reference/createbadges.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_badges**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Badge](https://developer.servicem8.com/reference/getbadges.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_badges**.
- [Update a Badge](https://developer.servicem8.com/reference/updatebadges.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_badges**.
- [Delete a Badge](https://developer.servicem8.com/reference/deletebadges.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_badges**.
- [List all Bundles](https://developer.servicem8.com/reference/listbundles.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_inventory**.
- [Create a new Bundle](https://developer.servicem8.com/reference/createbundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_inventory**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Bundle](https://developer.servicem8.com/reference/getbundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_inventory**.
- [Update a Bundle](https://developer.servicem8.com/reference/updatebundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_inventory**.
- [Delete a Bundle](https://developer.servicem8.com/reference/deletebundles.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_inventory**.
- [List all Categories](https://developer.servicem8.com/reference/listcategories.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_categories**.
- [Create a new Category](https://developer.servicem8.com/reference/createcategories.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_categories**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Category](https://developer.servicem8.com/reference/getcategories.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_categories**.
- [Update a Category](https://developer.servicem8.com/reference/updatecategories.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_categories**.
- [Delete a Category](https://developer.servicem8.com/reference/deletecategories.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_categories**.
- [List all Clients](https://developer.servicem8.com/reference/listclients.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_customers**.
- [Create a new Client](https://developer.servicem8.com/reference/createclients.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_customers**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Client](https://developer.servicem8.com/reference/getclients.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_customers**. #### Open in ServiceM8 Use `https://go.servicem8.com/OpenClient/{uuid}` to open this Client in the ServiceM8 web app. This is a web app URL, not a REST API endpoint. Users who are not signed in are redirected through login and then back to the requested Client. The signed-in staff member must have access to Clients.
- [Update a Client](https://developer.servicem8.com/reference/updateclients.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_customers**.
- [Delete a Client](https://developer.servicem8.com/reference/deleteclients.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_customers**.
- [List all Company Contacts](https://developer.servicem8.com/reference/listcompanycontacts.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_customer_contacts**.
- [Create a new Company Contact](https://developer.servicem8.com/reference/createcompanycontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_customer_contacts**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Company Contact](https://developer.servicem8.com/reference/getcompanycontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_customer_contacts**.
- [Update a Company Contact](https://developer.servicem8.com/reference/updatecompanycontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_customer_contacts**.
- [Delete a Company Contact](https://developer.servicem8.com/reference/deletecompanycontacts.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_customer_contacts**.
- [List all Document Templates](https://developer.servicem8.com/reference/listdocumenttemplates.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Create a new Document Template](https://developer.servicem8.com/reference/createdocumenttemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Document Template](https://developer.servicem8.com/reference/getdocumenttemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Update a Document Template](https://developer.servicem8.com/reference/updatedocumenttemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Delete a Document Template](https://developer.servicem8.com/reference/deletedocumenttemplates.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [List all Email Templates](https://developer.servicem8.com/reference/listemailtemplates.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Create a new Email Template](https://developer.servicem8.com/reference/createemailtemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve an Email Template](https://developer.servicem8.com/reference/getemailtemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Update an Email Template](https://developer.servicem8.com/reference/updateemailtemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Delete an Email Template](https://developer.servicem8.com/reference/deleteemailtemplates.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [List all Feedback](https://developer.servicem8.com/reference/listfeedback.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_feedback**.
- [Create a new Feedback](https://developer.servicem8.com/reference/createfeedback.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_feedback**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Feedback](https://developer.servicem8.com/reference/getfeedback.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_feedback**.
- [Update a Feedback](https://developer.servicem8.com/reference/updatefeedback.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_feedback**.
- [Delete a Feedback](https://developer.servicem8.com/reference/deletefeedback.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_feedback**.
- [List all Form Fields](https://developer.servicem8.com/reference/listformfields.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_forms**.
- [Create a new Form Field](https://developer.servicem8.com/reference/createformfields.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Form Field](https://developer.servicem8.com/reference/getformfields.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_forms**.
- [Update a Form Field](https://developer.servicem8.com/reference/updateformfields.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**.
- [Delete a Form Field](https://developer.servicem8.com/reference/deleteformfields.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**.
- [List all Form Responses](https://developer.servicem8.com/reference/listformresponses.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_forms**.
- [Create a new Form Response](https://developer.servicem8.com/reference/createformresponses.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Form Response](https://developer.servicem8.com/reference/getformresponses.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_forms**.
- [Update a Form Response](https://developer.servicem8.com/reference/updateformresponses.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**.
- [Delete a Form Response](https://developer.servicem8.com/reference/deleteformresponses.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**.
- [List all Forms](https://developer.servicem8.com/reference/listforms.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_forms**.
- [Create a new Form](https://developer.servicem8.com/reference/createforms.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Form](https://developer.servicem8.com/reference/getforms.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_forms**.
- [Update a Form](https://developer.servicem8.com/reference/updateforms.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**.
- [Delete a Form](https://developer.servicem8.com/reference/deleteforms.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**.
- [List all Job Activities](https://developer.servicem8.com/reference/listjobactivities.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**.
- [Create a new Job Activity](https://developer.servicem8.com/reference/createjobactivities.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job Activity](https://developer.servicem8.com/reference/getjobactivities.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**.
- [Update a Job Activity](https://developer.servicem8.com/reference/updatejobactivities.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**.
- [Delete a Job Activity](https://developer.servicem8.com/reference/deletejobactivities.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**.
- [List all Job Activities](https://developer.servicem8.com/reference/listjobadminactivities.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_admin_activity**.
- [Retrieve a Job Activity](https://developer.servicem8.com/reference/getjobadminactivities.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_admin_activity**.
- [List all Job Allocations](https://developer.servicem8.com/reference/listjoballocations.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**.
- [Create a new Job Allocation](https://developer.servicem8.com/reference/createjoballocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job Allocation](https://developer.servicem8.com/reference/getjoballocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**.
- [Update a Job Allocation](https://developer.servicem8.com/reference/updatejoballocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**.
- [Delete a Job Allocation](https://developer.servicem8.com/reference/deletejoballocations.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**.
- [List all Job Checklists](https://developer.servicem8.com/reference/listjobchecklists.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_checklists**.
- [Create a new Job Checklist](https://developer.servicem8.com/reference/createjobchecklists.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_checklists**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job Checklist](https://developer.servicem8.com/reference/getjobchecklists.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_checklists**.
- [Update a Job Checklist](https://developer.servicem8.com/reference/updatejobchecklists.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_checklists**.
- [Delete a Job Checklist](https://developer.servicem8.com/reference/deletejobchecklists.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_checklists**.
- [List all Job Contacts](https://developer.servicem8.com/reference/listjobcontacts.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_contacts**.
- [Create a new Job Contact](https://developer.servicem8.com/reference/createjobcontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_contacts**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job Contact](https://developer.servicem8.com/reference/getjobcontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_contacts**.
- [Update a Job Contact](https://developer.servicem8.com/reference/updatejobcontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_contacts**.
- [Delete a Job Contact](https://developer.servicem8.com/reference/deletejobcontacts.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_contacts**.
- [List all Job Material Bundles](https://developer.servicem8.com/reference/listjobmaterialbundles.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_materials**.
- [Create a new Job Material Bundle](https://developer.servicem8.com/reference/createjobmaterialbundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_materials**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job Material Bundle](https://developer.servicem8.com/reference/getjobmaterialbundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_materials**.
- [Update a Job Material Bundle](https://developer.servicem8.com/reference/updatejobmaterialbundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_materials**.
- [Delete a Job Material Bundle](https://developer.servicem8.com/reference/deletejobmaterialbundles.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_materials**.
- [List all Job Materials](https://developer.servicem8.com/reference/listjobmaterials.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_materials**.
- [Create a new Job Material](https://developer.servicem8.com/reference/createjobmaterials.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_materials**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job Material](https://developer.servicem8.com/reference/getjobmaterials.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_materials**.
- [Update a Job Material](https://developer.servicem8.com/reference/updatejobmaterials.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_materials**.
- [Delete a Job Material](https://developer.servicem8.com/reference/deletejobmaterials.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_materials**.
- [List all Job Payments](https://developer.servicem8.com/reference/listjobpayments.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_payments**.
- [Create a new Job Payment](https://developer.servicem8.com/reference/createjobpayments.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_payments**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job Payment](https://developer.servicem8.com/reference/getjobpayments.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_payments**.
- [Update a Job Payment](https://developer.servicem8.com/reference/updatejobpayments.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_payments**.
- [Delete a Job Payment](https://developer.servicem8.com/reference/deletejobpayments.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_payments**.
- [List all Job Queues](https://developer.servicem8.com/reference/listjobqueues.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_queues**.
- [Create a new Job Queue](https://developer.servicem8.com/reference/createjobqueues.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_queues**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job Queue](https://developer.servicem8.com/reference/getjobqueues.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_queues**.
- [Update a Job Queue](https://developer.servicem8.com/reference/updatejobqueues.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_queues**.
- [Delete a Job Queue](https://developer.servicem8.com/reference/deletejobqueues.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_queues**.
- [Create a job from a template](https://developer.servicem8.com/reference/createjobfromtemplate.md): Creates a new job by cloning an existing job template. All template entities (tasks, materials, checklists, quotes, custom fields) are cloned to the new job. #### Field Overrides Only the following fields can be overridden when creating a job from a template: - `job_description` - Job description - `company_uuid` - UUID of the company/client - `company_name` - Name of the company/client (will lookup existing or create new) - `job_address` - Street address for the job **Note:** You cannot specify both `company_uuid` and `company_name`. If `company_name` is provided, the system will first search for an existing company with that name. If found, it will use that company's UUID. If not found, a new company will be created. Any other fields in the request body will be ignored. #### OAuth Scope This endpoint requires the following OAuth scope **create_jobs**.
- [List all Job Templates](https://developer.servicem8.com/reference/listjobtemplates.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_jobs**.
- [Retrieve a Job Template](https://developer.servicem8.com/reference/getjobtemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_jobs**.
- [List all Jobs](https://developer.servicem8.com/reference/listjobs.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_jobs**.
- [Create a new Job](https://developer.servicem8.com/reference/createjobs.md): #### OAuth Scope This endpoint requires the following OAuth scope **create_jobs**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Job](https://developer.servicem8.com/reference/getjobs.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_jobs**. #### Open in ServiceM8 Use `https://go.servicem8.com/OpenJob/{uuid}` to open this Job in the ServiceM8 web app. This is a web app URL, not a REST API endpoint. Users who are not signed in are redirected through login and then back to the requested Job. The signed-in staff member must have access to the Job and Dispatch Board.
- [Update a Job](https://developer.servicem8.com/reference/updatejobs.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_jobs**.
- [Delete a Job](https://developer.servicem8.com/reference/deletejobs.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_jobs**.
- [List all Knowledge Articles](https://developer.servicem8.com/reference/listknowledgearticles.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_knowledge**.
- [Create a new Knowledge Article](https://developer.servicem8.com/reference/createknowledgearticles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_knowledge**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Knowledge Article](https://developer.servicem8.com/reference/getknowledgearticles.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_knowledge**.
- [Update a Knowledge Article](https://developer.servicem8.com/reference/updateknowledgearticles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_knowledge**.
- [Delete a Knowledge Article](https://developer.servicem8.com/reference/deleteknowledgearticles.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_knowledge**.
- [List all Locations](https://developer.servicem8.com/reference/listlocations.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_locations**.
- [Create a new Location](https://developer.servicem8.com/reference/createlocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_locations**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Location](https://developer.servicem8.com/reference/getlocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_locations**.
- [Update a Location](https://developer.servicem8.com/reference/updatelocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_locations**.
- [Delete a Location](https://developer.servicem8.com/reference/deletelocations.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_locations**.
- [List all Materials](https://developer.servicem8.com/reference/listmaterials.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_inventory**.
- [Create a new Material](https://developer.servicem8.com/reference/creatematerials.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_inventory**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Material](https://developer.servicem8.com/reference/getmaterials.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_inventory**.
- [Update a Material](https://developer.servicem8.com/reference/updatematerials.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_inventory**.
- [Delete a Material](https://developer.servicem8.com/reference/deletematerials.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_inventory**.
- [List all Notes](https://developer.servicem8.com/reference/listnotes.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_job_notes**.
- [Create a new Note](https://developer.servicem8.com/reference/createnotes.md): #### OAuth Scope This endpoint requires the following OAuth scope **publish_job_notes**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Note](https://developer.servicem8.com/reference/getnotes.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_notes**.
- [Update a Note](https://developer.servicem8.com/reference/updatenotes.md): #### OAuth Scope This endpoint requires the following OAuth scope **publish_job_notes**.
- [Delete a Note](https://developer.servicem8.com/reference/deletenotes.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **publish_job_notes**.
- [List all SMS Templates](https://developer.servicem8.com/reference/listsmstemplates.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Create a new SMS Template](https://developer.servicem8.com/reference/createsmstemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a SMS Template](https://developer.servicem8.com/reference/getsmstemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Update a SMS Template](https://developer.servicem8.com/reference/updatesmstemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [Delete a SMS Template](https://developer.servicem8.com/reference/deletesmstemplates.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**.
- [List all Security Roles](https://developer.servicem8.com/reference/listsecurityroles.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_security_roles**.
- [Retrieve a Security Role](https://developer.servicem8.com/reference/getsecurityroles.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_security_roles**.
- [List all Staff Members](https://developer.servicem8.com/reference/liststaffmembers.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_staff**.
- [Create a new Staff Member](https://developer.servicem8.com/reference/createstaffmembers.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_staff**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Staff Member](https://developer.servicem8.com/reference/getstaffmembers.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_staff**.
- [Update a Staff Member](https://developer.servicem8.com/reference/updatestaffmembers.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_staff**.
- [Delete a Staff Member](https://developer.servicem8.com/reference/deletestaffmembers.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_staff**.
- [List all Staff Messages](https://developer.servicem8.com/reference/liststaffmessages.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_messages**.
- [Create a new Staff Message](https://developer.servicem8.com/reference/createstaffmessages.md): #### OAuth Scope This endpoint requires the following OAuth scope **publish_messages**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Staff Message](https://developer.servicem8.com/reference/getstaffmessages.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_messages**.
- [Update a Staff Message](https://developer.servicem8.com/reference/updatestaffmessages.md): #### OAuth Scope This endpoint requires the following OAuth scope **publish_messages**.
- [Delete a Staff Message](https://developer.servicem8.com/reference/deletestaffmessages.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **publish_messages**.
- [List all Suppliers](https://developer.servicem8.com/reference/listsuppliers.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_suppliers**.
- [Create a new Supplier](https://developer.servicem8.com/reference/createsuppliers.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_suppliers**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Supplier](https://developer.servicem8.com/reference/getsuppliers.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_suppliers**.
- [Update a Supplier](https://developer.servicem8.com/reference/updatesuppliers.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_suppliers**.
- [Delete a Supplier](https://developer.servicem8.com/reference/deletesuppliers.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_suppliers**.
- [List all Tasks](https://developer.servicem8.com/reference/listtasks.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_tasks**.
- [Create a new Task](https://developer.servicem8.com/reference/createtasks.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_tasks**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Task](https://developer.servicem8.com/reference/gettasks.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_tasks**.
- [Update a Task](https://developer.servicem8.com/reference/updatetasks.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_tasks**.
- [Delete a Task](https://developer.servicem8.com/reference/deletetasks.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_tasks**.
- [List all Tax Rates](https://developer.servicem8.com/reference/listtaxrates.md): #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **read_tax_rates**.
- [Create a new Tax Rate](https://developer.servicem8.com/reference/createtaxrates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_tax_rates**. #### Record UUID UUID is optional for record creation. If no UUID is supplied, a UUID will be automatically generated for the new record and returned in the `x-record-uuid` response header.
- [Retrieve a Tax Rate](https://developer.servicem8.com/reference/gettaxrates.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_tax_rates**.
- [Update a Tax Rate](https://developer.servicem8.com/reference/updatetaxrates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_tax_rates**.
- [Delete a Tax Rate](https://developer.servicem8.com/reference/deletetaxrates.md): In ServiceM8, deleting a record sets its `active` field to `0`. Inactive records are still accessible on the API, but are hidden in the UI. Inactive records can be restored by setting their `active` field to `1`. #### OAuth Scope This endpoint requires the following OAuth scope **manage_tax_rates**.
- [List all Vendors](https://developer.servicem8.com/reference/listvendors.md): Vendor account information #### Filtering This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering). #### OAuth Scope This endpoint requires the following OAuth scope **vendor**.
- [Retrieve a Vendor](https://developer.servicem8.com/reference/getvendors.md): Vendor account information #### OAuth Scope This endpoint requires the following OAuth scope **vendor**.
- [List ServiceTemplates](https://developer.servicem8.com/reference/listservicetemplates.md): Lists editable and published Service records, including inactive records. Filtering applies to top-level Service fields only.
- [Get a ServiceTemplate](https://developer.servicem8.com/reference/getservicetemplate.md): Retrieves one editable or published Service record by UUID.
- [Create or update a ServiceTemplate](https://developer.servicem8.com/reference/upsertservicetemplate.md): Creates or sparsely updates an editable Service record. Published-copy UUIDs and publishing fields are rejected.
- [Soft-delete a ServiceTemplate](https://developer.servicem8.com/reference/deleteservicetemplate.md): Sets active=0. Deleting an editable row also soft-deletes its published copy via the existing Service postCommit cascade; deleting a published-copy UUID only deactivates that published row.
- [List job email history](https://developer.servicem8.com/reference/listemailmessages.md): Returns merged inbound and outbound email history for jobs in the account.
- [Get one job email record](https://developer.servicem8.com/reference/getemailmessage.md): Returns a single job email record by UUID.
- [List inbox messages](https://developer.servicem8.com/reference/listinboxmessages.md): Retrieves a paginated list of inbox messages with optional filtering
- [Get inbox message details](https://developer.servicem8.com/reference/getinboxmessage.md): Retrieves detailed information about a specific inbox message including attachments and conversation history
- [Mark message as read](https://developer.servicem8.com/reference/markinboxmessageasread.md): Marks an inbox message as read
- [Archive or unarchive message](https://developer.servicem8.com/reference/archiveinboxmessage.md): Archives or unarchives an inbox message
- [Snooze or unsnooze message](https://developer.servicem8.com/reference/snoozeinboxmessage.md): Snoozes a message until a specified date/time or unsnoozes it
- [Convert message to job](https://developer.servicem8.com/reference/convertinboxmessagetojob.md): Converts an inbox message into a new job, optionally using a job template
- [Attach message to existing job](https://developer.servicem8.com/reference/attachinboxmessagetojob.md): Attaches an inbox message to an existing job
- [Add note to message](https://developer.servicem8.com/reference/addnotetoinboxmessage.md): Adds a note to an inbox message
- [Create a new inbox message](https://developer.servicem8.com/reference/createinboxmessage.md): Creates a new inbox message that will appear in the inbox
- [Search across multiple object types](https://developer.servicem8.com/reference/generalsearch.md): Performs a text search across jobs, companies, and materials. Returns combined results sorted by relevance.
- [Search within a specific object type](https://developer.servicem8.com/reference/objectsearch.md): Performs a text search within a specific object type. Supported types: job, company, material, knowledgearticle, attachment, formresponse, asset, materialbundle
- [Semantic search for jobs](https://developer.servicem8.com/reference/jobembeddingsearch.md): Harness the power of advanced AI embeddings to revolutionise how you search through job data. This endpoint transforms your search query into high-dimensional vector embeddings, then intelligently matches it against our entire job database using semantic similarity algorithms. How it works: 1. AI Query Understanding - Your search terms are processed through neural embedding models that understand context, intent, and meaning 2. Vector-Based Matching - The system compares your query against vector representations of all job content in real-time 3. Intelligent Ranking - Returns results ranked by semantic similarity, not just keyword matching Why this matters: - Find jobs about "plumbing repairs" even when searching for "fixing pipes" - Discover relevant work orders that use different terminology but share the same intent - Uncover hidden patterns and connections in your job data that traditional search would miss This isn't just searchβit's AI that truly understands what you're looking for and delivers the most relevant results, even when the exact words don't match.
- [List job SMS history](https://developer.servicem8.com/reference/listsmsmessages.md): Returns merged inbound and outbound SMS history for jobs in the account.
- [Get one job SMS record](https://developer.servicem8.com/reference/getsmsmessage.md): Returns a single merged job SMS record by UUID.
- [Send an Email](https://developer.servicem8.com/reference/send_email.md): Send an email through the ServiceM8 Messaging API. ## Email Signature You can include a staff member's email signature in your message by using the `
Hello,
This is the main content of the email.
Additional footer information
``` Note: The tag is case-insensitive. Note: you must supply one of `htmlBody` or `textBody` in order to send a message, or you may specify both parameters. If you don't have a HTML-formatted or text-formatted version available, then simply supply the version that you do have and omit the other parameter. Submitting an empty string for either `htmlBody` or `textBody` will result in messages that cannot be viewed on some email clients. You may specify a **Reply To** address, but the **From** address is controlled by ServiceM8. - [Send an SMS Message](https://developer.servicem8.com/reference/send_sms.md): **Important: Sending messages via this endpoint will incur SMS charges.** Marketing and promotional SMS is not permitted. The **From** address of SMS messages sent via the Messaging API depends on the user's Country/Region. It may be alphanumeric or numeric, depending on the capabilities of the telecommunications system in that country. If the user has set up [Premium SMS](https://support.servicem8.com/hc/en-us/articles/200273364-Can-I-change-SMS-messages-to-come-from-my-business-name-rather-than-ServiceM8-) on their account, then their custom Sender ID will be used for any messages sent through the Messaging API. - [Produce a Templated Document](https://developer.servicem8.com/reference/produce_templated_document.md): Use this endpoint to combine Objects with Document Templates to produce PDF, DOCX or JPG output. Specify the request parameters as a JSON object in the body of the request. If everything went smoothly, the response will contain a copy of the produced document in the output format you requested. Otherwise, the response will be a JSON object describing the error which occured. - [Create or Update an Object Webhook Subscription](https://developer.servicem8.com/reference/post_object_webhook_subscription.md): Subscribe to changes on specific fields of an object type (e.g., job, company). When any of the specified fields change, a webhook will be sent to your callback URL. Your callback URL must return a successful `2xx` response within 10 seconds. Requests that take longer than 10 seconds are treated as timeouts. Repeated failed deliveries, including repeated timeouts, can cause the subscription to be automatically deactivated. - [Create or Update an Event Webhook Subscription](https://developer.servicem8.com/reference/post_event_webhook_subscription.md): Subscribe to business events (e.g., job.created, job.completed). When the specified event occurs, a webhook will be sent to your callback URL with detailed event data. Your callback URL must return a successful `2xx` response within 10 seconds. Requests that take longer than 10 seconds are treated as timeouts. Repeated failed deliveries, including repeated timeouts, can cause the subscription to be automatically deactivated. - [List the account's add-ons](https://developer.servicem8.com/reference/listaddonsdkaddons.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. - [Fetch one add-on by slug](https://developer.servicem8.com/reference/getaddonsdkaddon.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. - [Deploy an add-on (atomic manifest + function upsert)](https://developer.servicem8.com/reference/deployaddonsdkaddon.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. Creates the add-on on first deploy (private/unlisted) and updates it thereafter. One multipart request carries the manifest JSON part and the bundled function source part. The manifest is validated before anything is committed. Returns 202 with a deployment id to poll. Requires a full-access API key. - [Poll deployment status](https://developer.servicem8.com/reference/getaddonsdkdeployment.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. - [List secret names for an add-on](https://developer.servicem8.com/reference/listaddonsdksecrets.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. Names only - values are never returned. Requires a full-access API key. - [Set a secret](https://developer.servicem8.com/reference/setaddonsdksecret.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. Secrets are delivered to the add-on's function as environment variables and applied immediately - no redeploy required. Names are case-insensitive and canonicalized to UPPER_CASE. Requires a full-access API key. - [Delete a secret](https://developer.servicem8.com/reference/deleteaddonsdksecret.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. - [Identify the authenticated account](https://developer.servicem8.com/reference/getaddonsdkwhoami.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. Returns the ServiceM8 account the presented API key belongs to, and the key's access level. Used by developer tooling (the sm8 CLI) to validate credentials. - [List all keys for a job](https://developer.servicem8.com/reference/list_job_key_values.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. Returns all keys and values stored by your Addon against the given job. - [Get one key for a job](https://developer.servicem8.com/reference/get_job_key_value.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. Returns the value of a single key stored by your Addon against the given job. - [Set one key for a job](https://developer.servicem8.com/reference/set_job_key_value.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. Sets the value of a single key stored by your Addon against the given job. Creates the key if it does not exist, or replaces the existing value. The request is rejected with a `413` response if the update would take the total storage for the job over the 64KB limit. - [Delete one key for a job](https://developer.servicem8.com/reference/delete_job_key_value.md): > π§ Private Preview > > The Addon SDK API is currently in private preview. These endpoints are only available to accounts and Add-ons enrolled in the preview program β you may not have access yet. Deletes a single key stored by your Addon against the given job. ## Pages - [Platform Policy](https://developer.servicem8.com/platform-policy.md)