The API is built to allow you to create a functional application or integration quickly and easily.
Returns a list of matching results across entity types based on the provided search term.
By default, results are returned from all entity types (jobs, leads, clients, invoices) up to the specified limit per type.
Use the type parameter to restrict results to a single entity type. Requesting type=lead requires the Leads add-on to be enabled on the account.
Results are ranked by relevance score. The entityId field is an ID that can be used with other API endpoints.
| term required | string Example: term=john doe Search term matched against name, phone, email, address, serial numbers, and custom fields across entity types. |
| type | string Enum: "job" "lead" "client" "invoice" Restrict results to a single entity type. Omit to search across all types.
|
| limit | number Default: 5 Example: limit=5 Maximum number of results to return per entity type. Defaults to 5, maximum 15. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "limit": 5,
- "totalResults": 10,
- "data": [
- {
- "entityType": "job",
- "entityId": "JOB-LwqGJnRwvZPaNe5E",
- "uuid": "GD87TS",
- "serialId": 1042,
- "name": "Fix leaking pipe",
- "status": "pending",
- "date": "2026-04-28 09:00:00",
- "totalPrice": 250,
- "amountDue": 100,
- "companyName": "Acme Corp",
- "email": "client@example.com",
- "primaryPhone": "6195551234",
- "fullAddress": "123 Main St, San Diego, CA 92101",
- "clientInfo": {
- "serialId": 1023,
- "fullName": "John Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryPhone": "6195555555",
- "fullAddress": "123 Main St, New York, NY 10001"
}
}
]
}Retrieves a paginated list of Ad Groups.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| disabled | boolean Filter by disabled state. When true, returns only disabled ad groups; when false, returns only enabled ad groups. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Group A",
- "displayOrder": 1,
- "description": "This is a sample ad group.",
- "disabled": false
}
]
}Creates a new Ad Group and returns the created Ad Group object.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Ad Group data to create.
| name required | string The name of the ad group. |
| displayOrder required | number The position of the ad group in the display list. |
| description | string The description of the ad group. |
| disabled | boolean Indicates whether the ad group is disabled or not. |
{- "name": "Group 1",
- "displayOrder": 1,
- "description": "This is an ad group.",
- "disabled": false
}{- "id": "AG-71b8d7310acbf8cc",
- "name": "Group A",
- "displayOrder": 1,
- "description": "This is a sample ad group.",
- "disabled": false
}Retrieves a single Ad Group by its ID.
| id required | string Example: AG-71b8d7310acbf8cc The ad group ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "AG-71b8d7310acbf8cc",
- "name": "Group A",
- "displayOrder": 1,
- "description": "This is a sample ad group.",
- "disabled": false
}Updates an existing Ad Group and returns the updated Ad Group.
| id required | string Example: AG-71b8d7310acbf8cc The ad group ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Ad Group fields to update.
| name | string The name of the ad group. |
| displayOrder | number The position of the ad group in the display list. |
| description | string The description of the ad group. |
| disabled | boolean Indicates whether the ad group is disabled or not. |
{- "name": "Group 1",
- "displayOrder": 1,
- "description": "This is an ad group.",
- "disabled": false
}{- "id": "AG-71b8d7310acbf8cc",
- "name": "Group A",
- "displayOrder": 1,
- "description": "This is a sample ad group.",
- "disabled": false
}Beta: This endpoint is subject to change and may contain bugs. Breaking changes may occur without notice.
Returns the list of available booking slots for the account within the requested date range.
Only slots that still have open capacity are returned, so a day with no returned slots is fully booked or unavailable.
Each slot includes a userIds array containing the IDs of users who are already occupying capacity in that slot.
Use jobTypes to restrict availability to the technicians who can perform those job types, and availableBased/totalSpots/scheduleOffset/showHolidays to override account booking settings for the request without changing them.
The range cannot exceed 60 days.
| startDate | string Example: startDate=2026-01-15 The first date of the range to return availability for, in |
| endDate | string Example: endDate=2026-01-31 The last date of the range to return availability for, in |
| slotLength | number Example: slotLength=60 The slot length in minutes. Must be between 30 and 480 (8 hours) in steps of 30. Defaults to the account configured slot length when omitted. |
| jobTypes | string Example: jobTypes=JT-8718036049ec4c4d Comma-separated list of job type IDs (prefix |
| availableBased | number Example: availableBased=1 Overrides the account capacity mode for this request only: |
| totalSpots | number Example: totalSpots=3 Overrides the total capacity per slot for this request only. Mainly useful together with |
| scheduleOffset | number Example: scheduleOffset=24 Overrides the minimum notice window in hours for this request only. Allowed values: |
| showHolidays | number Example: showHolidays=1 Overrides whether public holidays block slots for this request only: |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "totalResults": 100,
- "data": [
- {
- "startTime": "2026-01-15 09:00",
- "startTimestamp": 1768460400,
- "slotLength": 60,
- "totalSpots": 3,
- "openSpots": 2,
- "userIds": [
- "USR-83510a9930f203f4",
- "USR-a4f86bf1deefec12",
- "USR-d59dbcd34aa19dce"
]
}
]
}Beta: This endpoint is subject to change and may contain bugs. Breaking changes may occur without notice.
Returns the entities (jobs, leads, tasks, events, recurrences, time-offs) that are occupying capacity on the requested date, including fully booked slots.
Use this endpoint to investigate why a specific date has reduced or no availability. Each entity includes a ID that can be used with the corresponding resource endpoint.
| date required | string Example: date=2026-01-15 The date to retrieve blocking entities for, in |
| slotLength | number Example: slotLength=60 The slot length in minutes. Must be between 30 and 480 (8 hours) in steps of 30. Defaults to the account configured slot length when omitted. |
| jobTypes | string Example: jobTypes=JT-8718036049ec4c4d Comma-separated list of job type IDs (prefix |
| availableBased | number Example: availableBased=1 Overrides the account capacity mode for this request only: |
| totalSpots | number Example: totalSpots=3 Overrides the total capacity per slot for this request only. Mainly useful together with |
| scheduleOffset | number Example: scheduleOffset=24 Overrides the minimum notice window in hours for this request only. Allowed values: |
| showHolidays | number Example: showHolidays=1 Overrides whether public holidays block slots for this request only: |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "totalResults": 100,
- "data": [
- {
- "startTime": "2026-01-15 09:00",
- "startTimestamp": 1768460400,
- "blockingEntities": [
- {
- "type": "job",
- "id": "JOB-BA5r7o4bqzR9MONa",
- "name": "Plumbing repair"
}
]
}
]
}Returns a paginated list of notes for the given client, ordered by creation date descending.
| clientId required | string Example: CL-OvmDp2yvv1yqMwRl The client ID (prefix |
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "CLN-211d1676f4b90c40",
- "note": "Customer requested a follow-up call.",
- "pin": false,
- "techName": "John Doe",
- "createdAt": "2021-01-01 00:00:00"
}
]
}Creates a new note for the given client.
| clientId required | string Example: CL-OvmDp2yvv1yqMwRl The client ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Client Note data to create.
| note required | string The note content. |
| pin | boolean Whether the note is pinned to the top of the list. |
{- "note": "Customer requested a follow-up call.",
- "pin": false
}{- "id": "CLN-211d1676f4b90c40",
- "note": "Customer requested a follow-up call.",
- "pin": false,
- "techName": "John Doe",
- "createdAt": "2021-01-01 00:00:00"
}Returns a single note belonging to the given client.
| clientId required | string Example: CL-OvmDp2yvv1yqMwRl The client ID (prefix |
| noteId required | string Example: CLN-211d1676f4b90c40 The client note ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "CLN-211d1676f4b90c40",
- "note": "Customer requested a follow-up call.",
- "pin": false,
- "techName": "John Doe",
- "createdAt": "2021-01-01 00:00:00"
}Updates the content and/or pinned state of a note belonging to the given client.
| clientId required | string Example: CL-OvmDp2yvv1yqMwRl The client ID (prefix |
| noteId required | string Example: CLN-211d1676f4b90c40 The client note ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Client Note fields to update.
| note | string The note content. |
| pin | boolean Whether the note is pinned to the top of the list. |
{- "note": "Customer requested a follow-up call.",
- "pin": true
}{- "id": "CLN-211d1676f4b90c40",
- "note": "Customer requested a follow-up call.",
- "pin": false,
- "techName": "John Doe",
- "createdAt": "2021-01-01 00:00:00"
}Deletes a note belonging to the given client.
| clientId required | string Example: CL-OvmDp2yvv1yqMwRl The client ID (prefix |
| noteId required | string Example: CLN-211d1676f4b90c40 The client note ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
Returns a paginated list of clients. Supports full-text search, tag filtering, due-balance filtering, sorting, and date-range filtering. Results are sourced from Elasticsearch and include basic contact and address information.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| searchQuery | string Example: searchQuery=John Doe Free-text search string matched against full name, company name, full address, parent full name, custom fields, primary phone, and email address. |
| isDue | string Enum: "PastDue" "Due" Filter clients by outstanding balance status. |
| tags | string Example: tags=TAG-16a94b03317f6e64,TAG-211d1676f4b90c40 Comma-separated list of tag IDs to filter by. Only clients that have all specified tags are returned. |
| field | string Enum: "serialId" "firstName" "fullName" "clientCompany" "primaryPhone" Field to sort results by. When omitted the default sort is by |
| order | string Enum: "ASC" "DESC" Examples:
Sort direction. Defaults to |
| dateProperty | string Value: "created" The client date field to apply the date filter to. Must be combined with |
| dateOperator | string Enum: "prev" "next" "between" Examples:
Comparison operator for the date filter. Must be combined with |
| date | string Examples:
Date value(s) for the filter. Format depends on |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John",
- "lastName": "Doe",
- "fullName": "John Doe",
- "companyName": "John Doe Inc.",
- "email": "john.doe@example.com",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "456",
- "secondaryPhone": "1234567890",
- "country": "USA",
- "state": "NY",
- "city": "New York",
- "zipcode": "10001",
- "unit": "100",
- "address": "123 Main St",
- "fullAddress": "123 Main St, New York, NY 10001",
- "clientContacts": [
- {
- "firstName": "John",
- "lastName": "Doe",
- "fullName": "John Doe",
- "email": "john.doe@example.com",
- "primaryPhone": "1234567890",
- "secondaryPhone": "1234567890",
- "country": "USA",
- "state": "NY",
- "city": "New York",
- "zipcode": "10001",
- "address": "123 Main St",
- "role": "Property Manager",
- "note": "Prefers contact by email."
}
], - "created": "2026-01-01 00:00:00"
}
]
}Beta: This endpoint is subject to change and may contain bugs. Breaking changes may occur without notice.
Creates a new client and returns the created client object. Either email or primaryPhone must be provided. The client's service location is created from addressDetails. Optionally accepts a billing address, an ad group, a parent client, tax exemption details, and custom field values.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Client data to create.
| firstName required | string The first name of the client. |
| lastName | string The last name of the client. |
| companyName | string The company name of the client. |
string The email address of the client. Either email or primaryPhone must be provided. | |
| primaryExt | string The extension number for the primary phone number. |
| primaryPhone | string The primary phone number of the client. Either email or primaryPhone must be provided. |
| secondaryExt | string The extension number for the secondary phone number. |
| secondaryPhone | string The secondary phone number of the client. |
object The service address details of the client. When provided, a service location is created for the client. | |
object The billing address details of the client. When different from the service address, a separate billing location is created. | |
| adGroupId | string The ID of the ad group (prefix |
| allowBilling | boolean Whether the client allows billing. Defaults to the account-level setting when omitted. |
| parentClientId | string The ID of the parent client (prefix |
| taxExempt | boolean Whether the client is tax exempt. |
| taxExemptReason | string Enum: "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "99" The tax exemption reason code. Can only be provided when taxExempt is true; defaults to |
| description | string The description of the client. |
Array of objects (CustomFieldValueV2Dto) The custom fields of the client. |
{- "firstName": "John",
- "lastName": "Doe",
- "companyName": "Example Inc.",
- "email": "john.doe@example.com",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "456",
- "secondaryPhone": "1234567890",
- "addressDetails": {
- "country": "US",
- "state": "NY",
- "city": "New York",
- "zipCode": "10001",
- "address": "123 Main St",
- "unit": "100"
}, - "billingAddressDetails": {
- "country": "US",
- "state": "NY",
- "city": "New York",
- "zipCode": "10001",
- "address": "123 Main St",
- "unit": "100"
}, - "adGroupId": "AG-59kGnmvvyamryw1O",
- "allowBilling": true,
- "parentClientId": "CL-OvmDp2yvv1yqMwRl",
- "taxExempt": false,
- "taxExemptReason": "9",
- "description": "This is a description",
- "customFields": [
- {
- "id": "CF-DNr3zVoKWod6abEn",
- "value": "test"
}
]
}{- "id": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John",
- "lastName": "Doe",
- "fullName": "John Doe",
- "companyName": "John Doe Inc.",
- "email": "john.doe@example.com",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "456",
- "secondaryPhone": "1234567890",
- "country": "USA",
- "state": "NY",
- "city": "New York",
- "zipcode": "10001",
- "unit": "100",
- "address": "123 Main St",
- "serviceAddress": "123 Main St, New York, NY 10001",
- "billingAddress": "123 Main St, New York, NY 10001",
- "allowBilling": true,
- "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "tags": [
- {
- "id": "TAG-211d1676f4b90c40",
- "name": "Tag 1",
- "color": "#edce4c"
}
], - "parentClient": {
- "id": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John",
- "lastName": "Doe",
- "fullName": "John Doe",
- "companyName": "John Doe Inc.",
- "email": "john.doe@example.com",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "456",
- "secondaryPhone": "1234567890",
- "country": "USA",
- "state": "NY",
- "city": "New York",
- "zipcode": "10001",
- "unit": "100",
- "address": "123 Main St",
- "serviceAddress": "123 Main St, New York, NY 10001",
- "billingAddress": "123 Main St, New York, NY 10001",
- "allowBilling": true
}, - "clientContacts": [
- {
- "id": "CLC-211d1676f4b90c40",
- "firstName": "John",
- "lastName": "Doe",
- "fullName": "John Doe",
- "email": "john.doe@example.com",
- "primaryPhone": "1234567890",
- "secondaryPhone": "1234567890",
- "country": "USA",
- "state": "NY",
- "city": "New York",
- "zipcode": "10001",
- "address": "123 Main St",
- "role": "Property Manager",
- "note": "Prefers contact by email."
}
], - "notes": [
- {
- "id": "CLN-211d1676f4b90c40",
- "note": "Customer requested a follow-up call.",
- "techName": "John Doe",
- "createdAt": "2021-01-01 00:00:00"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "created": "2026-01-01 00:00:00"
}Returns a single client including full contact details, service and billing addresses, tags, ad group, notes, additional contacts, and custom field values.
| id required | string Example: CL-OvmDp2yvv1yqMwRl The client ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John",
- "lastName": "Doe",
- "fullName": "John Doe",
- "companyName": "John Doe Inc.",
- "email": "john.doe@example.com",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "456",
- "secondaryPhone": "1234567890",
- "country": "USA",
- "state": "NY",
- "city": "New York",
- "zipcode": "10001",
- "unit": "100",
- "address": "123 Main St",
- "serviceAddress": "123 Main St, New York, NY 10001",
- "billingAddress": "123 Main St, New York, NY 10001",
- "allowBilling": true,
- "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "tags": [
- {
- "id": "TAG-211d1676f4b90c40",
- "name": "Tag 1",
- "color": "#edce4c"
}
], - "parentClient": {
- "id": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John",
- "lastName": "Doe",
- "fullName": "John Doe",
- "companyName": "John Doe Inc.",
- "email": "john.doe@example.com",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "456",
- "secondaryPhone": "1234567890",
- "country": "USA",
- "state": "NY",
- "city": "New York",
- "zipcode": "10001",
- "unit": "100",
- "address": "123 Main St",
- "serviceAddress": "123 Main St, New York, NY 10001",
- "billingAddress": "123 Main St, New York, NY 10001",
- "allowBilling": true
}, - "clientContacts": [
- {
- "id": "CLC-211d1676f4b90c40",
- "firstName": "John",
- "lastName": "Doe",
- "fullName": "John Doe",
- "email": "john.doe@example.com",
- "primaryPhone": "1234567890",
- "secondaryPhone": "1234567890",
- "country": "USA",
- "state": "NY",
- "city": "New York",
- "zipcode": "10001",
- "address": "123 Main St",
- "role": "Property Manager",
- "note": "Prefers contact by email."
}
], - "notes": [
- {
- "id": "CLN-211d1676f4b90c40",
- "note": "Customer requested a follow-up call.",
- "techName": "John Doe",
- "createdAt": "2021-01-01 00:00:00"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "created": "2026-01-01 00:00:00"
}Retrieves a paginated list of Custom Fields, optionally filtered by entity type.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| entityType | string Enum: "JOB" "CLIENT" Filter results by the entity the custom field belongs to. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "entityType": "JOB",
- "name": "Custom Field 1",
- "type": "Text",
- "groupId": "CFG-eYLPK7198xVp6Z8q",
- "jobTypes": [
- {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}
], - "options": [
- "option 1",
- "option 2",
- "option 3"
], - "position": 1,
- "required": false,
- "requiredClose": false,
- "searchable": false
}
]
}Creates a new Custom Field and returns the created Custom Field.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Custom Field data to create.
| entityType required | string Enum: "JOB" "CLIENT" The entity type of the custom field. |
| name required | string The custom field name. |
| type required | string Enum: "Text" "Number" "Date" "Drop Down" "Checkbox" "Large Text" "File Upload" The type of the custom field. |
| groupId | string The ID of the custom fields group (prefix |
| jobTypes | Array of strings Array of job type IDs to associate with the custom field (prefix |
| options | Array of strings The options of the custom field (Drop Down type only). |
| position | number The position of the custom field. |
| required | boolean Indicates whether the custom field is required or not. (job only) |
| requiredClose | boolean Indicates whether the custom field is required to close the job. (job only) |
| searchable | boolean Indicates whether the custom field is searchable or not. |
{- "entityType": "JOB",
- "name": "Custom Field 1",
- "type": "Text",
- "groupId": "CFG-KMYQvPr0GZWwke3z",
- "jobTypes": [
- "JT-KMYQvPr0GZWwke3z",
- "JT-AMYQvPr0GZWwke4a"
], - "options": [
- "option 1",
- "option 2",
- "option 3"
], - "position": 1,
- "required": false,
- "requiredClose": false,
- "searchable": false
}{- "id": "CF-eYLPK7198xVp6Z8q",
- "entityType": "JOB",
- "name": "Custom Field 1",
- "type": "Text",
- "groupId": "CFG-eYLPK7198xVp6Z8q",
- "jobTypes": [
- {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}
], - "options": [
- "option 1",
- "option 2",
- "option 3"
], - "position": 1,
- "required": false,
- "requiredClose": false,
- "searchable": false
}Retrieves a single Custom Field by its ID.
| id required | string Example: CF-eYLPK7198xVp6Z8q The custom field ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "CF-eYLPK7198xVp6Z8q",
- "entityType": "JOB",
- "name": "Custom Field 1",
- "type": "Text",
- "groupId": "CFG-eYLPK7198xVp6Z8q",
- "jobTypes": [
- {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}
], - "options": [
- "option 1",
- "option 2",
- "option 3"
], - "position": 1,
- "required": false,
- "requiredClose": false,
- "searchable": false
}Updates an existing Custom Field and returns the updated object.
| id required | string Example: CF-eYLPK7198xVp6Z8q The custom field ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Custom Field fields to update.
| name | string The custom field name. |
| groupId | string The ID of the custom fields group (prefix |
| jobTypes | Array of strings Array of job type IDs to associate with the custom field (prefix |
| options | Array of strings The options of the custom field (Drop Down type only). |
| position | number The position of the custom field. |
| required | boolean Indicates whether the custom field is required or not. (job only) |
| requiredClose | boolean Indicates whether the custom field is required to close the job. (job only) |
| searchable | boolean Indicates whether the custom field is searchable or not. |
{- "name": "Custom Field 1",
- "groupId": "CFG-KMYQvPr0GZWwke3z",
- "jobTypes": [
- "JT-KMYQvPr0GZWwke3z",
- "JT-AMYQvPr0GZWwke4a"
], - "options": [
- "option 1",
- "option 2",
- "option 3"
], - "position": 1,
- "required": false,
- "requiredClose": false,
- "searchable": false
}{- "id": "CF-eYLPK7198xVp6Z8q",
- "entityType": "JOB",
- "name": "Custom Field 1",
- "type": "Text",
- "groupId": "CFG-eYLPK7198xVp6Z8q",
- "jobTypes": [
- {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}
], - "options": [
- "option 1",
- "option 2",
- "option 3"
], - "position": 1,
- "required": false,
- "requiredClose": false,
- "searchable": false
}Retrieves a paginated list of Custom Fields Groups, optionally filtered by entity type.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| entityType | string Enum: "JOB" "CLIENT" Filter results by the entity the custom fields group belongs to. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "CFG-eYLPK7198xVp6Z8q",
- "entityType": "JOB",
- "name": "Custom Fields Group 1"
}
]
}Creates a new Custom Fields Group and returns the created Custom Fields Group.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Custom Fields Group data to create.
| entityType required | string Enum: "JOB" "CLIENT" The entity type of the custom fields group. |
| name required | string The custom fields group name. |
{- "entityType": "JOB",
- "name": "Custom Fields Group 1"
}{- "id": "CFG-eYLPK7198xVp6Z8q",
- "entityType": "JOB",
- "name": "Custom Fields Group 1"
}Retrieves a single Custom Fields Group by its ID.
| id required | string Example: CFG-eYLPK7198xVp6Z8q The custom fields group ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "CFG-eYLPK7198xVp6Z8q",
- "entityType": "JOB",
- "name": "Custom Fields Group 1"
}Updates an existing Custom Fields Group and returns the updated Custom Fields Group.
| id required | string Example: CFG-eYLPK7198xVp6Z8q The custom fields group ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Custom Fields Group fields to update.
| name | string The custom fields group name. |
{- "name": "Custom Fields Group 1"
}{- "id": "CFG-eYLPK7198xVp6Z8q",
- "entityType": "JOB",
- "name": "Custom Fields Group 1"
}Retrieves a paginated list of Estimates, optionally filtered by date range.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| field | string Value: "created"
The field to sort results by. Must be combined with |
| order | string Enum: "ASC" "DESC" Examples:
The sort direction. Must be combined with |
| dateProperty | string Enum: "updated" "created" The estimate date field to apply the date filter to. Must be combined with |
| dateOperator | string Enum: "prev" "next" "between" Examples:
Comparison operator for the date filter. Must be combined with |
| date | string Examples:
Date value(s) for the filter. Format depends on |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "ES-LwqGJnRwvZPaNe5E",
- "status": "Pending",
- "serialId": "1-1",
- "name": "Estimate 1",
- "description": "This is a description for the estimate",
- "notes": "This is a note for the estimate",
- "clientId": "CL-LwqGJnRwvZPaNe5E",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "taxPercent": 10,
- "taxableAmount": 100,
- "taxAmount": 10,
- "isDepositPercentage": true,
- "deposit": 100,
- "subTotal": 10,
- "total": 10,
- "declineReason": "This is a decline reason for the estimate",
- "sentDate": "2026-01-01 00:00:00",
- "estimateDate": "2026-01-01 00:00:00",
- "lastViewedDate": "2026-01-01 00:00:00",
- "statusUpdatedAt": "2026-01-01 00:00:00",
- "updated": "2026-01-01 00:00:00",
- "created": "2026-01-01 00:00:00"
}
]
}Retrieves a single Estimate by its ID.
| id required | string Example: ES-LwqGJnRwvZPaNe5E The estimate ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "ES-LwqGJnRwvZPaNe5E",
- "status": "Pending",
- "serialId": "1-1",
- "name": "Estimate 1",
- "description": "This is a description for the estimate",
- "notes": "This is a note for the estimate",
- "clientId": "CL-LwqGJnRwvZPaNe5E",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "discountAmount": 10,
- "taxPercent": 10,
- "taxableAmount": 100,
- "taxAmount": 10,
- "isDepositPercentage": true,
- "deposit": 100,
- "subTotal": 10,
- "total": 10,
- "declineReason": "This is a decline reason for the estimate",
- "lineItems": [
- {
- "id": "ELI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "attachments": [
], - "signatureImage": {
- "id": "IMG-BA5r7o4bqzR9MONa",
- "signedByName": "John Doe",
}, - "sentDate": "2026-01-01 00:00:00",
- "estimateDate": "2026-01-01 00:00:00",
- "lastViewedDate": "2026-01-01 00:00:00",
- "statusUpdatedAt": "2026-01-01 00:00:00",
- "updated": "2026-01-01 00:00:00",
- "created": "2026-01-01 00:00:00"
}Retrieves a paginated list of Events.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| field | string Enum: "start" "status"
The field to sort results by. Must be combined with |
| order | string Enum: "ASC" "DESC" Examples:
The sort direction. Must be combined with |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "EVT-Dxgp7NRjo6kXb5eG",
- "status": "Done",
- "title": "Doctor appointment",
- "description": "Doctor appointment with Dr. Smith",
- "start": "2024-07-25 09:00:00",
- "end": "2024-07-25 11:00:00",
- "isAllDay": false,
- "techIds": [
- "USR-83510a9930f203f4",
- "USR-a4f86bf1deefec12",
- "USR-d59dbcd34aa19dce"
], - "isDeleted": false,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00"
}
]
}Creates a new Event and returns the created Event object.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Event data to create.
| status | string Default: "Open" Enum: "Done" "Open" The status of the event. |
| title required | string The title of the event. |
| description | string Default: "" The description of the event. |
| start required | string The time & date when the event starts. Must be before the end date. |
| end required | string The time & date when the event ends. Must be after the start date. |
| isAllDay | boolean Default: false Whether the event is an all-day event. |
| techIds | Array of strings Array of tech IDs assigned to the event (prefix |
{- "status": "Open",
- "title": "Doctor appointment",
- "description": "Doctor appointment with Dr. Smith",
- "start": "2024-07-25 09:00:00",
- "end": "2024-07-25 11:00:00",
- "isAllDay": false,
- "techIds": [
- "USR-83510a9930f203f4",
- "USR-a4f86bf1deefec12",
- "USR-d59dbcd34aa19dce"
]
}{- "id": "EVT-Dxgp7NRjo6kXb5eG",
- "status": "Done",
- "title": "Doctor appointment",
- "description": "Doctor appointment with Dr. Smith",
- "start": "2024-07-25 09:00:00",
- "end": "2024-07-25 11:00:00",
- "isAllDay": false,
- "techIds": [
- "USR-83510a9930f203f4",
- "USR-a4f86bf1deefec12",
- "USR-d59dbcd34aa19dce"
], - "isDeleted": false,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00"
}Retrieves a single Event by its ID.
| id required | string Example: EVT-Dxgp7NRjo6kXb5eG The event ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "EVT-Dxgp7NRjo6kXb5eG",
- "status": "Done",
- "title": "Doctor appointment",
- "description": "Doctor appointment with Dr. Smith",
- "start": "2024-07-25 09:00:00",
- "end": "2024-07-25 11:00:00",
- "isAllDay": false,
- "techIds": [
- "USR-83510a9930f203f4",
- "USR-a4f86bf1deefec12",
- "USR-d59dbcd34aa19dce"
], - "isDeleted": false,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00",
}Updates an existing Event and returns the updated Event.
| id required | string Example: EVT-Dxgp7NRjo6kXb5eG The event ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Event fields to update.
| status | string Enum: "Done" "Open" The status of the event. |
| title | string The title of the event. |
| description | string The description of the event. |
| start | string The time & date when the event starts. |
| end | string The time & date when the event ends. |
| isAllDay | boolean Whether the event is an all-day event. |
| techIds | Array of strings Array of tech IDs assigned to the event (prefix |
{- "status": "Done",
- "title": "Doctor appointment",
- "description": "Doctor appointment with Dr. Smith",
- "start": "2024-07-25 09:00:00",
- "end": "2024-07-25 11:00:00",
- "isAllDay": false,
- "techIds": [
- "USR-83510a9930f203f4",
- "USR-a4f86bf1deefec12",
- "USR-d59dbcd34aa19dce"
]
}{- "id": "EVT-Dxgp7NRjo6kXb5eG",
- "status": "Done",
- "title": "Doctor appointment",
- "description": "Doctor appointment with Dr. Smith",
- "start": "2024-07-25 09:00:00",
- "end": "2024-07-25 11:00:00",
- "isAllDay": false,
- "techIds": [
- "USR-83510a9930f203f4",
- "USR-a4f86bf1deefec12",
- "USR-d59dbcd34aa19dce"
], - "isDeleted": false,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00"
}Retrieves a paginated list of Invoices, optionally filtered by date range.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| field | string Value: "created"
The field to sort results by. Must be combined with |
| order | string Enum: "ASC" "DESC" Examples:
The sort direction. Must be combined with |
| dateProperty | string Enum: "updated" "created" The invoice date field to apply the date filter to. Must be combined with |
| dateOperator | string Enum: "prev" "next" "between" Examples:
Comparison operator for the date filter. Must be combined with |
| date | string Examples:
Date value(s) for the filter. Format depends on |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "IV-bK9r2XyZL54aWDR0",
- "uuid": "3YBIBO",
- "serialId": 56,
- "name": "Invoice 1",
- "notes": "This is a note for the invoice",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "subTotal": 946,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2026-01-01 10:00:00",
- "updated": "2026-01-01 00:00:00",
- "created": "2026-01-01 00:00:00"
}
]
}Retrieves a single Invoice by its ID.
| id required | string Example: IV-LwqGJnRwvZPaNe5E The invoice ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "IV-bK9r2XyZL54aWDR0",
- "uuid": "3YBIBO",
- "serialId": 56,
- "name": "Invoice 1",
- "notes": "This is a note for the invoice",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "discountAmount": 10,
- "subTotal": 946,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2026-01-01 10:00:00",
- "lineItems": [
- {
- "id": "ILI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "attachments": [
], - "signatureImage": {
- "id": "IMG-BA5r7o4bqzR9MONa",
- "signedByName": "John Doe",
}, - "updated": "2026-01-01 00:00:00",
- "created": "2026-01-01 00:00:00"
}Retrieves a paginated list of Job Sub Statuses.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up",
- "parentName": "In progress",
- "color": "lavender"
}
]
}Creates a new Job Sub Status and returns the created Job Sub Status object.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Job Sub Status data to create.
| name required | string The name of the job sub status. |
| parentName required | string Enum: "In progress" "Canceled" "Pending" "done pending approval" The name of the parent job status. |
| color required | string Enum: "silver" "blue" "green" "orange" "red" "anthracite" "grey" "azure" "denim" "royalBlue" "crimson" "cerise" "apricot" "cream" "bronze" "yellow" "emerald" "forest" "purple" "plum" "lavender" "violet" "slate" The color key for the job sub status. Available colors: |
{- "name": "New",
- "parentName": "In progress",
- "color": "silver"
}{- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up",
- "parentName": "In progress",
- "color": "lavender"
}Retrieves a single Job Sub Status by its ID.
| id required | string Example: JSS-BA5r7o4bqzR9MONa The job sub status ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up",
- "parentName": "In progress",
- "color": "lavender"
}Updates an existing Job Sub Status and returns the updated Job Sub Status.
| id required | string Example: JSS-BA5r7o4bqzR9MONa The job sub status ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Job Sub Status fields to update.
| name | string The name of the job sub status. |
| color | string Enum: "silver" "blue" "green" "orange" "red" "anthracite" "grey" "azure" "denim" "royalBlue" "crimson" "cerise" "apricot" "cream" "bronze" "yellow" "emerald" "forest" "purple" "plum" "lavender" "violet" "slate" The color key for the job sub status. Available colors: |
{- "name": "New",
- "color": "silver"
}{- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up",
- "parentName": "In progress",
- "color": "lavender"
}Retrieves a paginated list of Jobs, optionally filtered by date range.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| field | string Enum: "created" "updated" "statusUpdated" "utcUpdated" The field to sort results by. Must be combined with |
| order | string Enum: "ASC" "DESC" Examples:
The sort direction. Must be combined with |
| isOpen | boolean Default: false Example: isOpen=true When true, returns only open jobs. When false, returns only closed (Canceled or Done) jobs. When omitted, no status filter is applied. |
| dateProperty | string Enum: "date" "endDate" "utcUpdated" "created" The job date field to apply the date filter to. Must be combined with |
| dateOperator | string Enum: "prev" "next" "between" Examples:
Comparison operator for the date filter. Must be combined with |
| date | string Examples:
Date value(s) for the filter. Format depends on |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "JOB-BA5r7o4bqzR9MONa",
- "uuid": "3YBIBO",
- "serialId": 12345,
- "name": "AC Repair",
- "status": "Submitted",
- "subStatus": {
- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up"
}, - "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the job.",
- "subTotal": 946,
- "discountAmount": 10,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2022-01-01 10:00:00",
- "converted": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "maskedNumber": {
- "number": "6195551234",
- "extension": "042",
- "secondaryExtension": "043"
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "lineItems": [
- {
- "id": "JLI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "type": "product",
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "conversionDate": "2022-01-01 10:00:00",
- "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}
]
}Creates a new Job and returns the created Job object.
Client Matching & Creation Logic:
If clientInfo.clientId is provided:
If clientInfo.clientId is NOT provided:
When creating a new client, the following fields in clientInfo become required:
firstName: Client's first nameemail or primaryPhone: At least one contact method (email must be valid when provided)addressDetails: Complete address information (country, state, city, zipCode, address)Property/Address Logic:
clientId exists, the system first attempts to find a matching property for that client by comparing the provided address detailsclientInfo.addressDetailsSummary: The system intelligently matches existing clients and properties before creating new ones, ensuring data consistency and avoiding duplicates.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Job data to create.
| date | string <date-time> The scheduled start date and time for the job (Must be before the endDate). Required when isScheduled is true. Note: Both dates are rounded to the nearest quarter hour (0, 15, 30, 45 minutes) for validation. |
| endDate | string <date-time> The scheduled end date and time for the job (Must be after the start date). Required when isScheduled is true. Note: Both dates are rounded to the nearest quarter hour (0, 15, 30, 45 minutes) for validation. |
| isAllDay | boolean
Whether the job is an all-day event. Defaults to false. |
| isScheduled | boolean
Whether the job is scheduled. When false, the job is created as unscheduled and date/endDate become optional. Defaults to true. |
| name | string The name of the job. |
| description | string The description of the job. |
| timeZone | string The timezone of the job. |
| jobTypeId required | string The ID of the job type (prefix |
| adGroupId | string The ID of the ad group (prefix |
required | object The client information including address details. |
| createdBy | string The ID of the user who created the job (prefix |
| createdDate | string <date-time> The date and time when the job record was created. If not provided, defaults to the current timestamp. |
Array of objects (CustomFieldValueV2Dto) The custom fields of the job. |
{- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "name": "AC Repair",
- "description": "This is a description",
- "timeZone": "America/New_York",
- "jobTypeId": "JT-38c1ee5c4efa38a4",
- "adGroupId": "AG-59kGnmvvyamryw1O",
- "clientInfo": {
- "clientId": "CL-Lb2R3vrLxBk3YkOJ",
- "firstName": "John",
- "lastName": "Doe",
- "email": "john.doe@example.com",
- "companyName": "Example Inc.",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "123",
- "secondaryPhone": "1234567890",
- "addressDetails": {
- "country": "US",
- "state": "NY",
- "city": "New York",
- "zipCode": "10001",
- "address": "123 Main St",
- "unit": "100"
}
}, - "createdBy": "USR-laAe5KNY6DZmEnzV",
- "createdDate": "2022-01-01 10:00:00",
- "customFields": [
- {
- "id": "CF-DNr3zVoKWod6abEn",
- "value": "test"
}
]
}{- "id": "JOB-BA5r7o4bqzR9MONa",
- "uuid": "3YBIBO",
- "serialId": 12345,
- "name": "AC Repair",
- "status": "Submitted",
- "subStatus": {
- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up"
}, - "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the job.",
- "subTotal": 946,
- "discountAmount": 10,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2022-01-01 10:00:00",
- "converted": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "maskedNumber": {
- "number": "6195551234",
- "extension": "042",
- "secondaryExtension": "043"
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "lineItems": [
- {
- "id": "JLI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "type": "product",
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "conversionDate": "2022-01-01 10:00:00",
- "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00",
- "attachments": [
]
}Retrieves a single Job by its ID.
| id required | string Example: JOB-BA5r7o4bqzR9MONa The job ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "JOB-BA5r7o4bqzR9MONa",
- "uuid": "3YBIBO",
- "serialId": 12345,
- "name": "AC Repair",
- "status": "Submitted",
- "subStatus": {
- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up"
}, - "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the job.",
- "subTotal": 946,
- "discountAmount": 10,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2022-01-01 10:00:00",
- "converted": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "maskedNumber": {
- "number": "6195551234",
- "extension": "042",
- "secondaryExtension": "043"
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "lineItems": [
- {
- "id": "JLI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "type": "product",
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "conversionDate": "2022-01-01 10:00:00",
- "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00",
- "attachments": [
]
}Updates an existing Job and returns the updated Job.
| id required | string Example: JOB-BA5r7o4bqzR9MONa The job ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Job fields to update.
| status | string Enum: "Submitted" "In progress" "Pending" "done pending approval" "Canceled" "Done" The status of the job. |
| subStatusId | string The ID of the job sub status (prefix |
| date | string <date-time> The scheduled start date and time for the job (Must be before the endDate). Note: Both dates are rounded to the nearest quarter hour (0, 15, 30, 45 minutes) for validation. |
| endDate | string <date-time> The scheduled end date and time for the job (Must be after the start date). Note: Both dates are rounded to the nearest quarter hour (0, 15, 30, 45 minutes) for validation. |
| isAllDay | boolean
Whether the job is an all-day event. When omitted, the current value is left unchanged. |
| isScheduled | boolean
Whether the job is scheduled. When false, the job is marked as unscheduled. When omitted, the current schedule state is left unchanged. |
| name | string The name of the job. |
| description | string The description of the job. |
| timeZone | string The timezone of the job. |
| jobTypeId | string The ID of the job type (prefix |
| adGroupId | string The ID of the ad group (prefix |
object The client information including address details. | |
| createdBy | string The ID of the user who created the job (prefix |
| tags | Array of strings Array of tag IDs to assign to the job (prefix |
Array of objects (CustomFieldValueV2Dto) The custom fields of the job. |
{- "status": "Submitted",
- "subStatusId": "JSS-BA5r7o4bqzR9MONa",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "name": "AC Repair",
- "description": "This is a description",
- "timeZone": "America/New_York",
- "jobTypeId": "JT-38c1ee5c4efa38a4",
- "adGroupId": "AG-59kGnmvvyamryw1O",
- "clientInfo": {
- "firstName": "John",
- "lastName": "Doe",
- "email": "john.doe@example.com",
- "companyName": "Example Inc.",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "123",
- "secondaryPhone": "1234567890",
- "addressDetails": {
- "country": "US",
- "state": "NY",
- "city": "New York",
- "zipCode": "10001",
- "address": "123 Main St",
- "unit": "100"
}
}, - "createdBy": "USR-laAe5KNY6DZmEnzV",
- "tags": [
- "TAG-16a94b03317f6e64"
], - "customFields": [
- {
- "id": "CF-DNr3zVoKWod6abEn",
- "value": "test"
}
]
}{- "id": "JOB-BA5r7o4bqzR9MONa",
- "uuid": "3YBIBO",
- "serialId": 12345,
- "name": "AC Repair",
- "status": "Submitted",
- "subStatus": {
- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up"
}, - "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the job.",
- "subTotal": 946,
- "discountAmount": 10,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2022-01-01 10:00:00",
- "converted": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "maskedNumber": {
- "number": "6195551234",
- "extension": "042",
- "secondaryExtension": "043"
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "lineItems": [
- {
- "id": "JLI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "type": "product",
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "conversionDate": "2022-01-01 10:00:00",
- "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00",
- "attachments": [
]
}Retrieves a paginated list of technicians assigned to a job.
| jobId required | string Example: JOB-BA5r7o4bqzR9MONa The Job ID |
| pageSize | number Example: pageSize=10 The page size |
| page | number Example: page=1 The page number |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "USR-BA5r7o4bqzR9MONa",
- "name": "John Doe",
- "emailAddress": "john.doe@example.com",
- "isPrimary": true
}
]
}Assigns a technician to a job. If the account does not have multi-technician enabled, use replace: true to replace the existing technician.
| jobId required | string Example: JOB-BA5r7o4bqzR9MONa The Job ID |
| Authorization required | string Example: Bearer <token> Bearer Token |
| technitionId required | string The ID of the technician (prefix |
| isPrimary | boolean Whether the technician is the primary technician. |
| replace | boolean Whether to replace the existing technician, works only if the option "Allow Multiple Technicians" is disabled in the account settings. |
{- "technitionId": "USR-BA5r7o4bqzR9MONa",
- "isPrimary": true,
- "replace": true
}{- "id": "USR-BA5r7o4bqzR9MONa",
- "name": "John Doe",
- "emailAddress": "john.doe@example.com",
- "isPrimary": true
}Sets the specified technician as the primary technician for the job. All other technicians will be set as non-primary.
| jobId required | string Example: JOB-BA5r7o4bqzR9MONa The Job ID |
| userId required | string Example: USR-BA5r7o4bqzR9MONa The User ID |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "USR-BA5r7o4bqzR9MONa",
- "name": "John Doe",
- "emailAddress": "john.doe@example.com",
- "isPrimary": true
}Removes the specified technician from the job.
| jobId required | string Example: JOB-BA5r7o4bqzR9MONa The Job ID |
| userId required | string Example: USR-BA5r7o4bqzR9MONa The User ID |
| Authorization required | string Example: Bearer <token> Bearer Token |
Retrieves a paginated list of Job Types.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| disabled | boolean Filter by disabled state. When true, returns only disabled job types; when false, returns only enabled job types. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "JT-8718036049ec4c4d",
- "name": "Cleaning",
- "avgDuration": 60,
- "displayOrder": 1,
- "disabled": false
}
]
}Creates a new Job Type and returns the created Job Type object.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Job Type data to create.
| name required | string The name of the job type. |
| avgDuration | number The average duration in minutes. |
| displayOrder required | number The position of the job type in the display list. |
| disabled | boolean Indicates whether the job type is disabled or not. |
| applyToSubAccounts | boolean When true, the job type is also created on all franchise sub-accounts. |
{- "name": "Some type",
- "avgDuration": 60,
- "displayOrder": 1,
- "disabled": false,
- "applyToSubAccounts": true
}{- "id": "JT-8718036049ec4c4d",
- "name": "Cleaning",
- "avgDuration": 60,
- "displayOrder": 1,
- "disabled": false
}Retrieves a single Job Type by its ID.
| id required | string Example: JT-8718036049ec4c4d The job type ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "JT-8718036049ec4c4d",
- "name": "Cleaning",
- "avgDuration": 60,
- "displayOrder": 1,
- "disabled": false
}Updates an existing Job Type and returns the updated Job Type.
| id required | string Example: JT-8718036049ec4c4d The job type ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Job Type fields to update.
| name | string The name of the job type. |
| avgDuration | number The average duration in minutes. |
| displayOrder | number The position of the job type in the display list. |
| disabled | boolean Indicates whether the job type is disabled or not. |
| applyToSubAccounts | boolean When true, the update is also applied to matching job types on all franchise sub-accounts. |
{- "name": "Some type",
- "avgDuration": 60,
- "displayOrder": 1,
- "disabled": false,
- "applyToSubAccounts": true
}{- "id": "JT-8718036049ec4c4d",
- "name": "Cleaning",
- "avgDuration": 60,
- "displayOrder": 1,
- "disabled": false
}Creates a new Lead Status and returns the created Lead Status.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Lead Status data to create.
| name required | string The name of the lead status. |
{- "name": "Submitted"
}{- "name": "Submitted"
}Retrieves a paginated list of Leads, optionally filtered by date range.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| field | string Enum: "created" "updated" "statusUpdated" "utcUpdated" The field to sort results by. Must be combined with |
| order | string Enum: "ASC" "DESC" Examples:
The sort direction. Must be combined with |
| isOpen | boolean Default: false Example: isOpen=true When true, returns only open (not lost) leads. When false, returns only lost leads. When omitted, no filter is applied. |
| dateProperty | string Enum: "date" "endDate" "utcUpdated" "created" The lead date field to apply the date filter to. Must be combined with |
| dateOperator | string Enum: "prev" "next" "between" Examples:
Comparison operator for the date filter. Must be combined with |
| date | string Examples:
Date value(s) for the filter. Format depends on |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "LD-LwqGJnRwvZPaNe5E",
- "uuid": "GD87TS",
- "serialId": 12345,
- "status": "Submitted",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": true,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the lead.",
- "leadLost": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}
]
}Creates a new Lead and returns the created Lead object.
Client Matching & Creation Logic:
If clientInfo.clientId is provided:
If clientInfo.clientId is NOT provided:
When creating a new client, the following fields in clientInfo become required:
firstName: Client's first nameemail or primaryPhone: At least one contact method (email must be valid when provided)addressDetails: Complete address information (country, state, city, zipCode, address)Property/Address Logic:
clientId exists the system first attempts to find a matching property for that client by comparing the provided address detailsclientInfo.addressDetailsSummary: The system intelligently matches existing clients and properties before creating new ones, ensuring data consistency and avoiding duplicates.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Lead data to create.
| date | string <date-time> The scheduled start date and time for the lead (Must be before the endDate). Required when isScheduled is true. Note: Both dates are rounded to the nearest quarter hour (0, 15, 30, 45 minutes) for validation. |
| endDate | string <date-time> The scheduled end date and time for the lead (Must be after the start date). Required when isScheduled is true. Note: Both dates are rounded to the nearest quarter hour (0, 15, 30, 45 minutes) for validation. |
| isAllDay | boolean
Whether the lead is an all-day event. Defaults to false. |
| isScheduled | boolean
Whether the lead is scheduled. When false, the lead is created as unscheduled and date/endDate become optional. Defaults to true. |
| description | string The description of the lead. |
| timeZone | string The timezone of the lead. |
| jobTypeId | string The ID of the job type (prefix |
| adGroupId | string The ID of the ad group (prefix |
required | object The client information including address details. |
| createdBy | string The ID of the user who created the lead (prefix |
| createdDate | string <date-time> The date and time when the lead record was created. If not provided, defaults to the current timestamp. |
Array of objects (CustomFieldValueV2Dto) The custom fields of the lead. |
{- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "description": "This is a description",
- "timeZone": "America/New_York",
- "jobTypeId": "JT-38c1ee5c4efa38a4",
- "adGroupId": "AG-59kGnmvvyamryw1O",
- "clientInfo": {
- "clientId": "CL-Lb2R3vrLxBk3YkOJ",
- "firstName": "John",
- "lastName": "Doe",
- "email": "john.doe@example.com",
- "companyName": "Example Inc.",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "123",
- "secondaryPhone": "1234567890",
- "addressDetails": {
- "country": "US",
- "state": "NY",
- "city": "New York",
- "zipCode": "10001",
- "address": "123 Main St",
- "unit": "100"
}
}, - "createdBy": "USR-laAe5KNY6DZmEnzV",
- "createdDate": "2022-01-01 10:00:00",
- "customFields": [
- {
- "id": "CF-DNr3zVoKWod6abEn",
- "value": "test"
}
]
}{- "id": "LD-LwqGJnRwvZPaNe5E",
- "uuid": "GD87TS",
- "serialId": 12345,
- "status": "Submitted",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": true,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the lead.",
- "leadLost": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}Retrieves a single Lead by its ID.
| id required | string Example: LD-LwqGJnRwvZPaNe5E The lead ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "LD-LwqGJnRwvZPaNe5E",
- "uuid": "GD87TS",
- "serialId": 12345,
- "status": "Submitted",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": true,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the lead.",
- "leadLost": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}Updates an existing Lead and returns the updated Lead.
| id required | string Example: LD-LwqGJnRwvZPaNe5E The lead ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Lead fields to update.
| status | string Enum: "new" "scheduled" "in progress" "estimated" "approved" "and any user-defined status" The status of the lead. |
| date | string <date-time> The scheduled start date and time for the lead (Must be before the endDate). Note: Both dates are rounded to the nearest quarter hour (0, 15, 30, 45 minutes) for validation. |
| endDate | string <date-time> The scheduled end date and time for the lead (Must be after the start date). Note: Both dates are rounded to the nearest quarter hour (0, 15, 30, 45 minutes) for validation. |
| isAllDay | boolean
Whether the lead is an all-day event. When omitted, the current value is left unchanged. |
| isScheduled | boolean
Whether the lead is scheduled. When false, the lead is marked as unscheduled. When omitted, the current schedule state is left unchanged. |
| description | string The description of the lead. |
| timeZone | string The timezone of the lead. |
| jobTypeId | string The ID of the job type (prefix |
| adGroupId | string The ID of the ad group (prefix |
object The client information including address details. | |
| createdBy | string The ID of the user who created the lead (prefix |
| tags | Array of strings Array of tag IDs to assign to the lead (prefix |
Array of objects (CustomFieldValueV2Dto) The custom fields of the lead. |
{- "status": "new",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "description": "This is a description",
- "timeZone": "America/New_York",
- "jobTypeId": "JT-38c1ee5c4efa38a4",
- "adGroupId": "AG-59kGnmvvyamryw1O",
- "clientInfo": {
- "firstName": "John",
- "lastName": "Doe",
- "email": "john.doe@example.com",
- "companyName": "Example Inc.",
- "primaryExt": "123",
- "primaryPhone": "1234567890",
- "secondaryExt": "123",
- "secondaryPhone": "1234567890",
- "addressDetails": {
- "country": "US",
- "state": "NY",
- "city": "New York",
- "zipCode": "10001",
- "address": "123 Main St",
- "unit": "100"
}
}, - "createdBy": "USR-laAe5KNY6DZmEnzV",
- "tags": [
- "TAG-16a94b03317f6e64"
], - "customFields": [
- {
- "id": "CF-DNr3zVoKWod6abEn",
- "value": "test"
}
]
}{- "id": "LD-LwqGJnRwvZPaNe5E",
- "uuid": "GD87TS",
- "serialId": 12345,
- "status": "Submitted",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": true,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the lead.",
- "leadLost": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}Converts an existing Lead to a Job and returns the resulting Job object.
| leadId required | string Example: LD-LwqGJnRwvZPaNe5E The lead ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "JOB-BA5r7o4bqzR9MONa",
- "uuid": "3YBIBO",
- "serialId": 12345,
- "name": "AC Repair",
- "status": "Submitted",
- "subStatus": {
- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up"
}, - "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the job.",
- "subTotal": 946,
- "discountAmount": 10,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2022-01-01 10:00:00",
- "converted": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "maskedNumber": {
- "number": "6195551234",
- "extension": "042",
- "secondaryExtension": "043"
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "lineItems": [
- {
- "id": "JLI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "type": "product",
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "conversionDate": "2022-01-01 10:00:00",
- "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}Beta: This endpoint is subject to change and may contain bugs. Breaking changes may occur without notice.
Reactivates a lost Lead and returns the updated Lead object.
| leadId required | string Example: LD-LwqGJnRwvZPaNe5E The lead ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "LD-LwqGJnRwvZPaNe5E",
- "uuid": "GD87TS",
- "serialId": 12345,
- "status": "Submitted",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": true,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the lead.",
- "leadLost": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}Beta: This endpoint is subject to change and may contain bugs. Breaking changes may occur without notice.
Marks an existing Lead as lost and returns the updated Lead object.
| leadId required | string Example: LD-LwqGJnRwvZPaNe5E The lead ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "LD-LwqGJnRwvZPaNe5E",
- "uuid": "GD87TS",
- "serialId": 12345,
- "status": "Submitted",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": true,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the lead.",
- "leadLost": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}Retrieves a paginated list of technicians assigned to a lead.
| leadId required | string Example: LD-BA5r7o4bqzR9MONa The Lead ID |
| pageSize | number Example: pageSize=10 The page size |
| page | number Example: page=1 The page number |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "USR-BA5r7o4bqzR9MONa",
- "name": "John Doe",
- "emailAddress": "john.doe@example.com",
- "isPrimary": true
}
]
}Assigns a technician to a lead. If the account does not have multi-technician enabled, use replace: true to replace the existing technician.
| leadId required | string Example: LD-BA5r7o4bqzR9MONa The Lead ID |
| Authorization required | string Example: Bearer <token> Bearer Token |
| technitionId required | string The ID of the technician (prefix |
| isPrimary | boolean Whether the technician is the primary technician. |
| replace | boolean Whether to replace the existing technician, works only if the option "Allow Multiple Technicians" is disabled in the account settings. |
{- "technitionId": "USR-BA5r7o4bqzR9MONa",
- "isPrimary": true,
- "replace": true
}{- "id": "USR-BA5r7o4bqzR9MONa",
- "name": "John Doe",
- "emailAddress": "john.doe@example.com",
- "isPrimary": true
}Sets the specified technician as the primary technician for the lead. All other technicians will be set as non-primary.
| leadId required | string Example: LD-BA5r7o4bqzR9MONa The Lead ID |
| userId required | string Example: USR-BA5r7o4bqzR9MONa The User ID |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "USR-BA5r7o4bqzR9MONa",
- "name": "John Doe",
- "emailAddress": "john.doe@example.com",
- "isPrimary": true
}Removes the specified technician from the lead.
| leadId required | string Example: LD-BA5r7o4bqzR9MONa The Lead ID |
| userId required | string Example: USR-BA5r7o4bqzR9MONa The User ID |
| Authorization required | string Example: Bearer <token> Bearer Token |
Retrieves a paginated list of Tags.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| type | string Enum: "job" "client" "call" "task" "project" Examples:
Filter tags by type. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "TAG-3e6cca162914f48f",
- "name": "Opportunity",
- "color": "#0059a0",
- "type": "job"
}
]
}Creates a new Tag and returns the created Tag object.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Tag data to create.
| name required | string The name of the tag. |
| color required | string Enum: "#0059a0" "#be2c2c" "#e18a2b" "#37d34d" "#edce4c" "#c04d97" "#198218" "#3d1c8b" The color of the tag. |
| type required | string Enum: "job" "client" "call" "task" "project" The type of the tag. |
{- "name": "Opportunity",
- "color": "#0059a0",
- "type": "job"
}{- "id": "TAG-3e6cca162914f48f",
- "name": "Opportunity",
- "color": "#0059a0",
- "type": "job"
}Updates an existing Tag and returns the updated Tag.
| id required | string Example: TAG-16a94b03317f6e64 The tag ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Tag fields to update.
| name | string The name of the tag. |
| color | string Enum: "#0059a0" "#be2c2c" "#e18a2b" "#37d34d" "#edce4c" "#c04d97" "#198218" "#3d1c8b" The color of the tag. |
{- "name": "Opportunity",
- "color": "#0059a0"
}{- "id": "TAG-3e6cca162914f48f",
- "name": "Opportunity",
- "color": "#0059a0",
- "type": "job"
}Retrieves a paginated list of Time Off based on the applied filters and pagination.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| field | string Enum: "id" "techId" "startDate" "endDate" "status" "reason" "details" "isAllDay" "updatedAt" "createdAt" The field to sort results by. Must be combined with |
| order | string Enum: "ASC" "DESC" Examples:
The sort direction. Must be combined with |
| techId | Array of strings Example: techId=USR-8c65ffdb713ea0ea Filter by tech ID (prefix |
| baseDate | string <date-time> Example: baseDate=2025-01-13 13:36:46 The time off start-date boundary for the filter. Must be combined with |
| timeline | string Enum: "prev" "next" Examples:
Comparison direction for the date filter. Must be combined with |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "TO-de9750285414508f",
- "techId": "USR-38c1ee5c4efa38a4",
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 11:00:00",
- "status": "approved",
- "reason": "Vacation",
- "details": "Doctor appointment",
- "isAllDay": true,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00"
}
]
}Creates a new Time Off and returns the created Time Off object.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Time Off data to create.
| techId required | string The tech ID to assign the time off to (prefix |
| startDate required | string <date-time> The time & date when the time off starts. |
| endDate required | string <date-time> The time & date when the time off ends. |
| status | string Enum: "approved" "pending" "declined" The status of the time off request. |
| reason | string Enum: "Vacation" "Sick day" "Personal" "Company Added" "Other" Reason for the time off. |
| details | string Details about the time off. |
| isAllDay | boolean Whether the time off is for the entire day. |
{- "techId": "USR-38c1ee5c4efa38a4",
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 11:00:00",
- "status": "pending",
- "reason": "Vacation",
- "details": "Doctor appointment",
- "isAllDay": false
}{- "id": "TO-de9750285414508f",
- "techId": "USR-38c1ee5c4efa38a4",
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 11:00:00",
- "status": "approved",
- "reason": "Vacation",
- "details": "Doctor appointment",
- "isAllDay": true,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00"
}Retrieves a paginated list of future approved time offs based on the current date and pagination.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| field | string Enum: "id" "techId" "startDate" "endDate" "status" "reason" "details" "isAllDay" "updatedAt" "createdAt" The field to sort results by. Must be combined with |
| order | string Enum: "ASC" "DESC" Examples:
The sort direction. Must be combined with |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "TO-de9750285414508f",
- "techId": "USR-38c1ee5c4efa38a4",
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 11:00:00",
- "status": "approved",
- "reason": "Vacation",
- "details": "Doctor appointment",
- "isAllDay": true,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00"
}
]
}Retrieves a single Time Off by its ID.
| id required | string Example: TO-de9750285414508f The time off ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "TO-de9750285414508f",
- "techId": "USR-38c1ee5c4efa38a4",
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 11:00:00",
- "status": "approved",
- "reason": "Vacation",
- "details": "Doctor appointment",
- "isAllDay": true,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00"
}Updates an existing Time Off and returns the updated Time Off.
| id required | string Example: TO-de9750285414508f The time off ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Time Off fields to update.
| techId | string The tech ID to assign the time off to (prefix |
| startDate | string <date-time> The time & date when the time off starts. |
| endDate | string <date-time> The time & date when the time off ends. |
| status | string Enum: "approved" "pending" "declined" The status of the time off request. |
| reason | string Enum: "Vacation" "Sick day" "Personal" "Company Added" "Other" Reason for the time off. |
| details | string Details about the time off. |
| isAllDay | boolean Whether the time off is for the entire day. |
{- "techId": "USR-38c1ee5c4efa38a4",
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 11:00:00",
- "status": "pending",
- "reason": "Vacation",
- "details": "Doctor appointment",
- "isAllDay": false
}{- "id": "TO-de9750285414508f",
- "techId": "USR-38c1ee5c4efa38a4",
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 11:00:00",
- "status": "approved",
- "reason": "Vacation",
- "details": "Doctor appointment",
- "isAllDay": true,
- "updatedAt": "2024-07-25 09:00:00",
- "createdAt": "2024-07-25 09:00:00"
}Retrieves a paginated list of Time Sheets based on the applied filters and pagination.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| field | string Value: "startDate"
The field to sort results by. Must be combined with |
| order | string Enum: "ASC" "DESC" Examples:
The sort direction. Must be combined with |
| techId | string Example: techId=USR-81ce48127c24fd23 Filter by tech ID (prefix |
| jobId | string Example: jobId=JOB-BA5r7o4bqzR9MONa Filter by job ID (prefix |
| dateQuery | string Example: dateQuery=2025-01-01_2025-12-31 Filter by start date range in the format |
| withJob | boolean Examples:
When true, only returns shifts associated with a job. Ignored if |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "TS-de9750285414508f",
- "techId": "USR-81ce48127c24fd23",
- "techName": "John Doe",
- "startDate": "2024-01-24 08:00:00",
- "endDate": "2024-01-24 16:00:00",
- "notes": "This is a note",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "laborCost": 34.75,
- "shiftLength": "08:00"
}
]
}Creates a new Time Sheet and returns the created Time Sheet object.
| Authorization required | string Example: Bearer <token> Bearer Token |
The Time Sheet data to create.
| techId required | string The ID of the user to clock into this shift (prefix |
| jobId | string The ID of the job associated with this shift (prefix |
| laborCost | number The labor cost per hour of this shift. |
| startDate required | string The start date and time of the shift. |
| endDate required | string The end date and time of the shift. |
| notes | string The notes of the shift. |
{- "techId": "USR-81ce48127c24fd23",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "laborCost": 25,
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 09:00:00",
- "notes": "This is a note"
}{- "id": "TS-de9750285414508f",
- "techId": "USR-81ce48127c24fd23",
- "techName": "John Doe",
- "startDate": "2024-01-24 08:00:00",
- "endDate": "2024-01-24 16:00:00",
- "notes": "This is a note",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "laborCost": 34.75,
- "shiftLength": "08:00"
}Retrieves a single Time Sheet by its ID.
| id required | string Example: TS-f4e29a5a3f8a01a6 The time sheet ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "TS-de9750285414508f",
- "techId": "USR-81ce48127c24fd23",
- "techName": "John Doe",
- "startDate": "2024-01-24 08:00:00",
- "endDate": "2024-01-24 16:00:00",
- "notes": "This is a note",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "laborCost": 34.75,
- "shiftLength": "08:00"
}Updates an existing Time Sheet and returns the updated Time Sheet.
| id required | string Example: TS-f4e29a5a3f8a01a6 The time sheet ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Time Sheet fields to update.
| techId | string The ID of the user clocked into this shift (prefix |
| laborCost | number The labor cost per hour of this shift. |
| startDate | string The start date and time of the shift. |
| endDate | string The end date and time of the shift. |
| notes | string The notes of the shift. |
{- "techId": "USR-81ce48127c24fd23",
- "laborCost": 25,
- "startDate": "2024-07-25 09:00:00",
- "endDate": "2024-07-25 09:00:00",
- "notes": "This is a note"
}{- "id": "TS-de9750285414508f",
- "techId": "USR-81ce48127c24fd23",
- "techName": "John Doe",
- "startDate": "2024-01-24 08:00:00",
- "endDate": "2024-01-24 16:00:00",
- "notes": "This is a note",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "laborCost": 34.75,
- "shiftLength": "08:00"
}Retrieves a paginated list of Users.
| pageSize | number Example: pageSize=10 Number of records to return per page. |
| page | number Example: page=1 The page index. |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "pageSize": 10,
- "page": 1,
- "totalResults": 50,
- "hasMore": true,
- "data": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Smith",
- "emailAddress": "john.doe@gmail.com",
- "cellPhone": "1234567890",
- "address": "1234 Elm Street, Apt 5B, Springfield, IL 62701, USA",
- "role": "tech",
- "fieldTech": true,
- "active": true,
- "notes": "This is a note",
- "jobTypes": [
- {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}
], - "serviceAreas": [
- {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
]
}
]
}Retrieves a single User by its ID.
| id required | string Example: USR-A21Lz3rPQxkYqRNo The user ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
{- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Smith",
- "emailAddress": "john.doe@gmail.com",
- "cellPhone": "1234567890",
- "address": "1234 Elm Street, Apt 5B, Springfield, IL 62701, USA",
- "role": "tech",
- "fieldTech": true,
- "active": true,
- "notes": "This is a note",
- "jobTypes": [
- {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}
], - "serviceAreas": [
- {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
]
}Adds Job Types to a User and returns the updated User object.
| id required | string Example: USR-A21Lz3rPQxkYqRNo The user ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Job Type IDs to add.
| jobTypes required | Array of strings Array of job type IDs (prefix |
{- "jobTypes": [
- "JT-38c1ee5c4efa38a4",
- "JT-38c1ee5c4efa38a5"
]
}{- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Smith",
- "emailAddress": "john.doe@gmail.com",
- "cellPhone": "1234567890",
- "address": "1234 Elm Street, Apt 5B, Springfield, IL 62701, USA",
- "role": "tech",
- "fieldTech": true,
- "active": true,
- "notes": "This is a note",
- "jobTypes": [
- {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}
], - "serviceAreas": [
- {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
]
}Removes Job Types from a User.
| id required | string Example: USR-A21Lz3rPQxkYqRNo The user ID (prefix |
| Authorization required | string Example: Bearer <token> Bearer Token |
The Job Type IDs to remove.
| jobTypes required | Array of strings Array of job type IDs (prefix |
{- "jobTypes": [
- "JT-38c1ee5c4efa38a4",
- "JT-38c1ee5c4efa38a5"
]
}Workiz POSTs this payload to your configured webhook URL whenever a job automation rule fires.
To set up a webhook, go to the Workiz Automation Center, select a trigger event (e.g. job_created), add optional conditions, then choose post webhook as the action. See the Workiz help article for a step-by-step guide.
The trigger.type value reflects the automation event (e.g. job_created). The data object is identical to the response from the corresponding GET /:id endpoint.
Authorization header: When an auth key is configured on the automation rule, Workiz includes Authorization: Bearer <authKey> in the request. This header is optional — your endpoint does not need to require it.
Your endpoint should return any 2xx status code to acknowledge receipt.
| Authorization | string Example: Bearer sk_live_1234567890 Optional Bearer token sent by Workiz when an auth key is configured on the automation rule. |
The webhook payload Workiz sends to your endpoint.
required | object The trigger event that fired this webhook. |
required | object The full job entity at the time of the event. |
required | object Metadata about the automation rule that triggered this webhook. |
{- "trigger": {
- "type": "job_created",
- "timestamp": "2024-03-15T10:30:00Z"
}, - "data": {
- "id": "JOB-BA5r7o4bqzR9MONa",
- "uuid": "3YBIBO",
- "serialId": 12345,
- "name": "AC Repair",
- "status": "Submitted",
- "subStatus": {
- "id": "JSS-BA5r7o4bqzR9MONa",
- "name": "Follow Up"
}, - "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": false,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the job.",
- "subTotal": 946,
- "discountAmount": 10,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2022-01-01 10:00:00",
- "converted": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "maskedNumber": {
- "number": "6195551234",
- "extension": "042",
- "secondaryExtension": "043"
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "lineItems": [
- {
- "id": "JLI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "type": "product",
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "conversionDate": "2022-01-01 10:00:00",
- "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}, - "metadata": {
- "automationId": "auto_789",
- "ruleName": "New Job Notification"
}
}Workiz POSTs this payload to your configured webhook URL whenever a lead automation rule fires.
To set up a webhook, go to the Workiz Automation Center, select a trigger event (e.g. lead_created), add optional conditions, then choose post webhook as the action. See the Workiz help article for a step-by-step guide.
The trigger.type value reflects the automation event (e.g. lead_created). The data object is identical to the response from the corresponding GET /:id endpoint.
Authorization header: When an auth key is configured on the automation rule, Workiz includes Authorization: Bearer <authKey> in the request. This header is optional — your endpoint does not need to require it.
Your endpoint should return any 2xx status code to acknowledge receipt.
| Authorization | string Example: Bearer sk_live_1234567890 Optional Bearer token sent by Workiz when an auth key is configured on the automation rule. |
The webhook payload Workiz sends to your endpoint.
required | object The trigger event that fired this webhook. |
required | object The full lead entity at the time of the event. |
required | object Metadata about the automation rule that triggered this webhook. |
{- "trigger": {
- "type": "job_created",
- "timestamp": "2024-03-15T10:30:00Z"
}, - "data": {
- "id": "LD-LwqGJnRwvZPaNe5E",
- "uuid": "GD87TS",
- "serialId": 12345,
- "status": "Submitted",
- "date": "2022-01-01 10:00:00",
- "endDate": "2022-01-01 10:00:00",
- "isAllDay": true,
- "isScheduled": true,
- "jobType": {
- "id": "JT-8718036049ec4c4d",
- "name": "Repair"
}, - "adGroup": {
- "id": "AG-71b8d7310acbf8cc",
- "name": "Ad Group 1"
}, - "description": "This is a description of the lead.",
- "leadLost": true,
- "clientInfo": {
- "clientId": "CL-OvmDp2yvv1yqMwRl",
- "serialId": 1023,
- "firstName": "John Doe",
- "lastName": "Doe",
- "companyName": "Sample Company name",
- "email": "client@workiz.com",
- "primaryExt": "619",
- "primaryPhone": "6195555555",
- "secondaryExt": "613",
- "secondaryPhone": "6195555555",
- "addressDetails": {
- "country": "US",
- "state": "Ohio",
- "city": "San Francisco",
- "zipCode": "94102",
- "address": "462 Powell St",
- "unit": "3422",
- "latitude": -76.2768398,
- "longitude": 36.9669587,
- "locationKey": "462 Powell St, San Francisco, Ohio 94102"
}, - "serviceArea": {
- "id": "SA-71b8d7310acbf8cc",
- "name": "San Francisco"
}
}, - "team": [
- {
- "id": "USR-38c1ee5c4efa38a4",
- "name": "John Doe"
}
], - "tags": [
- {
- "id": "TAG-8cddc18e7b0458fa",
- "name": "Estimate"
}
], - "customFields": [
- {
- "id": "CF-eYLPK7198xVp6Z8q",
- "fieldName": "Custom Field 1",
- "value": "John Doe"
}
], - "notes": [
- {
- "id": "JNT-8cddc18e7b0458fa",
- "techName": "John Doe",
- "note": "This is a note",
- "timestamp": "2022-01-01 10:00:00"
}
], - "statusUpdated": "2022-01-01 12:00:00",
- "utcUpdatedAt": "2022-01-01 12:00:00",
- "updatedAt": "2022-01-01 12:00:00",
- "createdAt": "2022-01-01 10:00:00"
}, - "metadata": {
- "automationId": "auto_789",
- "ruleName": "New Job Notification"
}
}Workiz POSTs this payload to your configured webhook URL whenever a invoice automation rule fires.
To set up a webhook, go to the Workiz Automation Center, select a trigger event (e.g. invoice_sent), add optional conditions, then choose post webhook as the action. See the Workiz help article for a step-by-step guide.
The trigger.type value reflects the automation event (e.g. invoice_sent). The data object is identical to the response from the corresponding GET /:id endpoint.
Authorization header: When an auth key is configured on the automation rule, Workiz includes Authorization: Bearer <authKey> in the request. This header is optional — your endpoint does not need to require it.
Your endpoint should return any 2xx status code to acknowledge receipt.
| Authorization | string Example: Bearer sk_live_1234567890 Optional Bearer token sent by Workiz when an auth key is configured on the automation rule. |
The webhook payload Workiz sends to your endpoint.
required | object The trigger event that fired this webhook. |
required | object The full invoice entity at the time of the event. |
required | object Metadata about the automation rule that triggered this webhook. |
{- "trigger": {
- "type": "job_created",
- "timestamp": "2024-03-15T10:30:00Z"
}, - "data": {
- "id": "IV-bK9r2XyZL54aWDR0",
- "uuid": "3YBIBO",
- "serialId": 56,
- "name": "Invoice 1",
- "notes": "This is a note for the invoice",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "discountAmount": 10,
- "subTotal": 946,
- "taxableAmount": 946,
- "taxPercent": 10.111,
- "taxAmount": 10.51,
- "costing": 10.51,
- "techExpenses": 12.51,
- "tipAmount": 43.51,
- "totalPrice": 956.51,
- "amountDue": 956.51,
- "amountDueDate": "2026-01-01 10:00:00",
- "lineItems": [
- {
- "id": "ILI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "attachments": [
], - "signatureImage": {
- "id": "IMG-BA5r7o4bqzR9MONa",
- "signedByName": "John Doe",
}, - "updated": "2026-01-01 00:00:00",
- "created": "2026-01-01 00:00:00"
}, - "metadata": {
- "automationId": "auto_789",
- "ruleName": "New Job Notification"
}
}Workiz POSTs this payload to your configured webhook URL whenever a estimate automation rule fires.
To set up a webhook, go to the Workiz Automation Center, select a trigger event (e.g. estimate_created), add optional conditions, then choose post webhook as the action. See the Workiz help article for a step-by-step guide.
The trigger.type value reflects the automation event (e.g. estimate_created). The data object is identical to the response from the corresponding GET /:id endpoint.
Authorization header: When an auth key is configured on the automation rule, Workiz includes Authorization: Bearer <authKey> in the request. This header is optional — your endpoint does not need to require it.
Your endpoint should return any 2xx status code to acknowledge receipt.
| Authorization | string Example: Bearer sk_live_1234567890 Optional Bearer token sent by Workiz when an auth key is configured on the automation rule. |
The webhook payload Workiz sends to your endpoint.
required | object The trigger event that fired this webhook. |
required | object The full estimate entity at the time of the event. |
required | object Metadata about the automation rule that triggered this webhook. |
{- "trigger": {
- "type": "job_created",
- "timestamp": "2024-03-15T10:30:00Z"
}, - "data": {
- "id": "ES-LwqGJnRwvZPaNe5E",
- "status": "Pending",
- "serialId": "1-1",
- "name": "Estimate 1",
- "description": "This is a description for the estimate",
- "notes": "This is a note for the estimate",
- "clientId": "CL-LwqGJnRwvZPaNe5E",
- "jobId": "JOB-BA5r7o4bqzR9MONa",
- "discountAmount": 10,
- "taxPercent": 10,
- "taxableAmount": 100,
- "taxAmount": 10,
- "isDepositPercentage": true,
- "deposit": 100,
- "subTotal": 10,
- "total": 10,
- "declineReason": "This is a decline reason for the estimate",
- "lineItems": [
- {
- "id": "ELI-BA5r7o4bqzR9MONa",
- "productId": 1000,
- "name": "Deadbolt",
- "description": "Deadbolt replacement, any color and size",
- "price": 100,
- "quantity": 1,
- "total": 100,
- "cost": 100,
- "taxable": true,
- "discountable": true,
- "inventoryManaged": true,
- "inventorySync": true,
- "optionalConverted": true
}
], - "payments": [
- {
- "id": "PAY-BA5r7o4bqzR9MONa",
- "type": "Cash",
- "amount": 100,
- "tipAmount": 10
}
], - "attachments": [
], - "signatureImage": {
- "id": "IMG-BA5r7o4bqzR9MONa",
- "signedByName": "John Doe",
}, - "sentDate": "2026-01-01 00:00:00",
- "estimateDate": "2026-01-01 00:00:00",
- "lastViewedDate": "2026-01-01 00:00:00",
- "statusUpdatedAt": "2026-01-01 00:00:00",
- "updated": "2026-01-01 00:00:00",
- "created": "2026-01-01 00:00:00"
}, - "metadata": {
- "automationId": "auto_789",
- "ruleName": "New Job Notification"
}
}