# ServiceM8 Documentation
## Guides
- [Add-on Types](https://developer.servicem8.com/docs/add-on-types.md)
- [Authentication](https://developer.servicem8.com/docs/authentication.md)
- [Add-on Store Requirements](https://developer.servicem8.com/docs/addon-store-requirements.md)
- [Pagination](https://developer.servicem8.com/docs/pagination.md): The ServiceM8 API implements cursor-based pagination for handling large datasets efficiently.
## API Reference
- [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.
- [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.** 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. - [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. - [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**. - [Retrieve an Allocation Window](https://developer.servicem8.com/reference/getallocationwindows.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**. - [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**. - [Update an Allocation Window](https://developer.servicem8.com/reference/updateallocationwindows.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**. - [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. - [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**. - [Retrieve an Asset Type Field](https://developer.servicem8.com/reference/getassettypefields.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_assets**. - [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**. - [Update an Asset Type Field](https://developer.servicem8.com/reference/updateassettypefields.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_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. - [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**. - [Retrieve an Asset Type](https://developer.servicem8.com/reference/getassettypes.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_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**. - [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](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**. - [Retrieve an Asset](https://developer.servicem8.com/reference/getassets.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_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**. - [Update an Asset](https://developer.servicem8.com/reference/updateassets.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_assets**. - [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. - [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**. - [Retrieve an Attachment](https://developer.servicem8.com/reference/getattachments.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_attachments**. - [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**. - [Update an Attachment](https://developer.servicem8.com/reference/updateattachments.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_attachments**. - [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. - [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**. - [Retrieve a Badge](https://developer.servicem8.com/reference/getbadges.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_badges**. - [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**. - [Update a Badge](https://developer.servicem8.com/reference/updatebadges.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_badges**. - [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. - [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**. - [Retrieve a Bundle](https://developer.servicem8.com/reference/getbundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_inventory**. - [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**. - [Update a Bundle](https://developer.servicem8.com/reference/updatebundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_inventory**. - [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. - [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**. - [Retrieve a Category](https://developer.servicem8.com/reference/getcategories.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_categories**. - [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**. - [Update a Category](https://developer.servicem8.com/reference/updatecategories.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_categories**. - [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. - [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**. - [Retrieve a Client](https://developer.servicem8.com/reference/getclients.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_customers**. - [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**. - [Update a Client](https://developer.servicem8.com/reference/updateclients.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_customers**. - [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. - [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**. - [Retrieve a Company Contact](https://developer.servicem8.com/reference/getcompanycontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_customer_contacts**. - [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**. - [Update a Company Contact](https://developer.servicem8.com/reference/updatecompanycontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_customer_contacts**. - [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. - [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**. - [Retrieve a Document Template](https://developer.servicem8.com/reference/getdocumenttemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**. - [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**. - [Update a Document Template](https://developer.servicem8.com/reference/updatedocumenttemplates.md): #### 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. - [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**. - [Retrieve an Email Template](https://developer.servicem8.com/reference/getemailtemplates.md): #### 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**. - [Update an Email Template](https://developer.servicem8.com/reference/updateemailtemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**. - [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. - [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**. - [Retrieve a Feedback](https://developer.servicem8.com/reference/getfeedback.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_feedback**. - [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**. - [Update a Feedback](https://developer.servicem8.com/reference/updatefeedback.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_feedback**. - [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. - [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**. - [Retrieve a Form Field](https://developer.servicem8.com/reference/getformfields.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_forms**. - [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**. - [Update a Form Field](https://developer.servicem8.com/reference/updateformfields.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_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. - [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**. - [Retrieve a Form Response](https://developer.servicem8.com/reference/getformresponses.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_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**. - [Update a Form Response](https://developer.servicem8.com/reference/updateformresponses.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_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. - [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**. - [Retrieve a Form](https://developer.servicem8.com/reference/getforms.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_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**. - [Update a Form](https://developer.servicem8.com/reference/updateforms.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_forms**. - [Add note to message](https://developer.servicem8.com/reference/addnotetoinboxmessage.md): Adds a note to an inbox message - [Archive or unarchive message](https://developer.servicem8.com/reference/archiveinboxmessage.md): Archives or unarchives an inbox message - [Attach message to existing job](https://developer.servicem8.com/reference/attachinboxmessagetojob.md): Attaches an inbox message to an existing job - [Convert message to job](https://developer.servicem8.com/reference/convertinboxmessagetojob.md): Converts an inbox message into a new job, optionally using a job template - [Create a new inbox message](https://developer.servicem8.com/reference/createinboxmessage.md): Creates a new inbox message that will appear in the inbox - [Get inbox message details](https://developer.servicem8.com/reference/getinboxmessage.md): Retrieves detailed information about a specific inbox message including attachments and conversation history - [List inbox messages](https://developer.servicem8.com/reference/listinboxmessages.md): Retrieves a paginated list of inbox messages with optional filtering - [Mark message as read](https://developer.servicem8.com/reference/markinboxmessageasread.md): Marks an inbox message as read - [Snooze or unsnooze message](https://developer.servicem8.com/reference/snoozeinboxmessage.md): Snoozes a message until a specified date/time or unsnoozes it - [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. - [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**. - [Retrieve a Job Activity](https://developer.servicem8.com/reference/getjobactivities.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**. - [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**. - [Update a Job Activity](https://developer.servicem8.com/reference/updatejobactivities.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_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. - [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**. - [Retrieve a Job Allocation](https://developer.servicem8.com/reference/getjoballocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_schedule**. - [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**. - [Update a Job Allocation](https://developer.servicem8.com/reference/updatejoballocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_schedule**. - [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. - [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**. - [Retrieve a Job Checklist](https://developer.servicem8.com/reference/getjobchecklists.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_checklists**. - [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**. - [Update a Job Checklist](https://developer.servicem8.com/reference/updatejobchecklists.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_checklists**. - [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. - [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**. - [Retrieve a Job Contact](https://developer.servicem8.com/reference/getjobcontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_contacts**. - [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**. - [Update a Job Contact](https://developer.servicem8.com/reference/updatejobcontacts.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_contacts**. - [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. - [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**. - [Retrieve a Job Material Bundle](https://developer.servicem8.com/reference/getjobmaterialbundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_materials**. - [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**. - [Update a Job Material Bundle](https://developer.servicem8.com/reference/updatejobmaterialbundles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_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. - [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**. - [Retrieve a Job Material](https://developer.servicem8.com/reference/getjobmaterials.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_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**. - [Update a Job Material](https://developer.servicem8.com/reference/updatejobmaterials.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_materials**. - [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. - [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**. - [Retrieve a Job Payment](https://developer.servicem8.com/reference/getjobpayments.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_payments**. - [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**. - [Update a Job Payment](https://developer.servicem8.com/reference/updatejobpayments.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_job_payments**. - [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. - [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**. - [Retrieve a Job Queue](https://developer.servicem8.com/reference/getjobqueues.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_queues**. - [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**. - [Update a Job Queue](https://developer.servicem8.com/reference/updatejobqueues.md): #### 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**. - [Retrieve a Job Template](https://developer.servicem8.com/reference/getjobtemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_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**. - [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. - [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**. - [Retrieve a Job](https://developer.servicem8.com/reference/getjobs.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**. - [Update a Job](https://developer.servicem8.com/reference/updatejobs.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_jobs**. - [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. - [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**. - [Retrieve a Knowledge Article](https://developer.servicem8.com/reference/getknowledgearticles.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_knowledge**. - [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**. - [Update a Knowledge Article](https://developer.servicem8.com/reference/updateknowledgearticles.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_knowledge**. - [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. - [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**. - [Retrieve a Location](https://developer.servicem8.com/reference/getlocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_locations**. - [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**. - [Update a Location](https://developer.servicem8.com/reference/updatelocations.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_locations**. - [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. - [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**. - [Retrieve a Material](https://developer.servicem8.com/reference/getmaterials.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_inventory**. - [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**. - [Update a Material](https://developer.servicem8.com/reference/updatematerials.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_inventory**. - [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. - [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**. - [Retrieve a Note](https://developer.servicem8.com/reference/getnotes.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_job_notes**. - [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**. - [Update a Note](https://developer.servicem8.com/reference/updatenotes.md): #### OAuth Scope This endpoint requires the following OAuth scope **publish_job_notes**. - [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. - [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. - [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 - [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 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**. - [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. - [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**. - [Retrieve a SMS Template](https://developer.servicem8.com/reference/getsmstemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**. - [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**. - [Update a SMS Template](https://developer.servicem8.com/reference/updatesmstemplates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_templates**. - [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. - [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**. - [Retrieve a Staff Member](https://developer.servicem8.com/reference/getstaffmembers.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_staff**. - [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**. - [Update a Staff Member](https://developer.servicem8.com/reference/updatestaffmembers.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_staff**. - [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. - [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**. - [Retrieve a Staff Message](https://developer.servicem8.com/reference/getstaffmessages.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_messages**. - [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**. - [Update a Staff Message](https://developer.servicem8.com/reference/updatestaffmessages.md): #### OAuth Scope This endpoint requires the following OAuth scope **publish_messages**. - [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. - [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**. - [Retrieve a Task](https://developer.servicem8.com/reference/gettasks.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_tasks**. - [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**. - [Update a Task](https://developer.servicem8.com/reference/updatetasks.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_tasks**. - [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. - [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**. - [Retrieve a Tax Rate](https://developer.servicem8.com/reference/gettaxrates.md): #### OAuth Scope This endpoint requires the following OAuth scope **read_tax_rates**. - [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**. - [Update a Tax Rate](https://developer.servicem8.com/reference/updatetaxrates.md): #### OAuth Scope This endpoint requires the following OAuth scope **manage_tax_rates**. - [Retrieve a Vendor](https://developer.servicem8.com/reference/getvendors.md): Vendor account information #### OAuth Scope This endpoint requires the following OAuth scope **vendor**. - [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**. - [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.