---
canonical_url: "https://docs.composio.dev/toolkits/servicetitan"
markdown_url: "https://docs.composio.dev/toolkits/servicetitan.md"
product: "platform"
version: null
last_updated: null
---

# ServiceTitan

ServiceTitan is field service management software for home and commercial service contractors, covering customers, jobs, dispatch, estimates, invoicing, inventory, memberships, payroll, and reporting.

- **Category:** scheduling & booking
- **Auth:** S2S_OAUTH2
- **Composio-managed OAuth available?** No
- **Tools:** 585
- **Triggers:** 0
- **Slug:** `SERVICETITAN`
- **Version:** 00000000_00

## Tools

### Activate Employee Account

**Slug:** `SERVICETITAN_ACTIVATE_EMPLOYEE_ACCOUNT`

Activate a ServiceTitan employee's login account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `employee_id` | integer | Yes | Id of the employee whose login account to activate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Activate Technician Account

**Slug:** `SERVICETITAN_ACTIVATE_TECHNICIAN_ACCOUNT`

Activate a ServiceTitan technician's login account with the required license type and, optionally, assign a truck.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `truck_id` | integer | No | Optional truck Id to assign to the technician. |
| `license_type` | string ("NonManagedTechnician" | "ManagedTechnician" | "ManagedInstaller") | Yes | License type to assign during activation: NonManagedTechnician, ManagedTechnician or ManagedInstaller. |
| `technician_id` | integer | Yes | Id of the technician whose login account to activate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Credit Memo Splits

**Slug:** `SERVICETITAN_ADD_CREDIT_MEMO_SPLITS`

Apply a credit memo to one or more invoices in ServiceTitan by adding splits, each an invoice id and an amount. Splits are added to the memo's existing ones; this operation does not remove or replace them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `splits` | array | Yes | Splits to add, each applying part of the credit memo to one invoice. |
| `credit_memo_id` | integer | Yes | Id of the credit memo. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Customer Tag

**Slug:** `SERVICETITAN_ADD_CUSTOMER_TAG`

Add one tag type to one customer in ServiceTitan. Both ids go in the path and no request body is sent; use ADD_TAGS_TO_CUSTOMERS for several at once.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | integer | Yes | Id of the customer. |
| `tag_type_id` | integer | Yes | Id of the tag type, as defined in the Settings tag types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Equipment to Equipment System

**Slug:** `SERVICETITAN_ADD_EQUIPMENT_TO_EQUIPMENT_SYSTEM`

Attach existing installed equipment to a ServiceTitan equipment system, by system id and a list of installed equipment ids. Returns the updated system.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `equipment_ids` | array | Yes | Installed equipment IDs to attach to the system. |
| `equipment_system_id` | integer | Yes | Id of the equipment system. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Location Tag

**Slug:** `SERVICETITAN_ADD_LOCATION_TAG`

Add one tag type to one location in ServiceTitan. Both ids go in the path and no request body is sent. There is no bulk variant for locations; call once per location and tag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location_id` | integer | Yes | Id of the location. |
| `tag_type_id` | integer | Yes | Id of the tag type, as defined in the Settings tag types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Tags To Customers

**Slug:** `SERVICETITAN_ADD_TAGS_TO_CUSTOMERS`

Add one or more tag types to several customers in ServiceTitan in one call. Every tag type listed is added to every customer listed; use ADD_CUSTOMER_TAG for a single customer and tag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_ids` | array | Yes | Ids of the customers to tag. |
| `tag_type_ids` | array | Yes | Ids of the tag types to add to every customer listed. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Approve Purchase Order Request

**Slug:** `SERVICETITAN_APPROVE_PURCHASE_ORDER_REQUEST`

Approve a ServiceTitan purchase order request by its request id. Takes the request id from LIST_PURCHASE_ORDER_REQUESTS, not a purchase order id. No way to withdraw an approval is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `purchase_order_request_id` | integer | Yes | Id of the purchase order request to approve; this is not a purchase order id. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Assign Technician Skills

**Slug:** `SERVICETITAN_ASSIGN_TECHNICIAN_SKILLS`

Assign existing skills to a ServiceTitan technician. With replace_existing_skills true the technician's current skills are replaced by the given list; with false the list is added.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `skill_ids` | array | Yes | IDs of the skills to give the technician. |
| `technician_id` | integer | Yes | ID of the technician to assign skills to. |
| `replace_existing_skills` | boolean | Yes | True replaces all of the technician's existing skills with skill_ids; False adds skill_ids to the existing skills. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Assign Technicians to Appointment

**Slug:** `SERVICETITAN_ASSIGN_TECHNICIANS_TO_APPOINTMENT`

Assign one or more technicians to a ServiceTitan job appointment. Returns the appointment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | ID of the job appointment to assign technicians to. |
| `technician_ids` | array | Yes | IDs of the technicians to assign. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Attach Job Equipment

**Slug:** `SERVICETITAN_ATTACH_JOB_EQUIPMENT`

Attach one or more equipment items to a ServiceTitan job. Returns the full list of equipment IDs attached after the change. The spec does not say which equipment ids these are; they are not the equipment system ids of the equipment-system tools, and whether installed-equipment ids (LIST_INSTALLED_EQUIPMENT) or pricebook equipment ids (LIST_PRICEBOOK_EQUIPMENT) are meant is unverified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job. |
| `equipment_ids` | array | Yes | IDs of the equipment items to attach to the job. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Attach Job to Project

**Slug:** `SERVICETITAN_ATTACH_JOB_TO_PROJECT`

Attach an existing ServiceTitan job to a project. Takes no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job to attach to the project. |
| `project_id` | integer | Yes | ID of the project. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Create Installed Equipment

**Slug:** `SERVICETITAN_BULK_CREATE_INSTALLED_EQUIPMENT`

Create up to 1000 installed equipment records in ServiceTitan in one atomic request. If any record is invalid the whole batch is rolled back and nothing is created.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `installed_equipment` | array | Yes | Installed equipment records to create. Must contain between 1 and 1000 items; the entire batch is created atomically and fails as a unit if any item is invalid. Nested keys use the documented spelling, for example locationId. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Create Pricebook Items

**Slug:** `SERVICETITAN_BULK_CREATE_PRICEBOOK_ITEMS`

Create many ServiceTitan pricebook items in one request: services, equipment, materials, and discounts and fees. At least one of those four collections must contain an item. Give each item a customId; links inside the same request (serviceMaterials, recommendations, upgrades) can point to it by customId, and the response maps each customId to its new id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `services` | array | No | Pricebook services to write. |
| `equipment` | array | No | Pricebook equipment items to write. |
| `materials` | array | No | Pricebook materials to write. |
| `discount_and_fees` | array | No | Pricebook discounts and fees to write. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Delete Technician Shifts

**Slug:** `SERVICETITAN_BULK_DELETE_TECHNICIAN_SHIFTS`

Delete every ServiceTitan technician shift in a date range, for all technicians. The only criteria are start and end; there is no technician filter, so check the range with List Technician Shifts first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | Yes | End of the range; shifts inside the range are deleted. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `start` | string | Yes | Start of the range; shifts inside the range are deleted. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Update Pricebook Items

**Slug:** `SERVICETITAN_BULK_UPDATE_PRICEBOOK_ITEMS`

Update many ServiceTitan pricebook items in one request: services, equipment, materials, and discounts and fees. At least one of those four collections must contain an item. Each item must carry its id and the documented full set of fields, not just the changed ones.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `services` | array | No | Pricebook services to write. |
| `equipment` | array | No | Pricebook equipment items to write. |
| `materials` | array | No | Pricebook materials to write. |
| `discount_and_fees` | array | No | Pricebook discounts and fees to write. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Cancel Inventory Receipt

**Slug:** `SERVICETITAN_CANCEL_INVENTORY_RECEIPT`

Cancel a ServiceTitan inventory receipt by id, optionally recording a cancellation reason. This cannot be undone through the API: no way to reopen a canceled inventory receipt is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query_id` | integer | No | Optional query id documented separately from the receipt_id path parameter. Its purpose is not described by ServiceTitan. |
| `receipt_id` | integer | Yes | Id of the inventory receipt to cancel. |
| `canceled_reason` | string ("NotRequired" | "Duplicate" | "Accidental" | "VendorIssue" | "Other" | "JobCanceled") | No | Reason the inventory receipt is canceled. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Cancel Inventory Return

**Slug:** `SERVICETITAN_CANCEL_INVENTORY_RETURN`

Cancel a ServiceTitan vendor return by id, optionally recording a cancellation reason. This cannot be undone through the API: no way to reopen a canceled vendor return is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `return_id` | integer | Yes | Id of the vendor return to cancel. |
| `canceled_reason` | string ("NotRequired" | "Duplicate" | "Accidental" | "VendorIssue" | "Other" | "JobCanceled") | No | Reason the vendor return is canceled. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Cancel Job

**Slug:** `SERVICETITAN_CANCEL_JOB`

Cancel a ServiceTitan job with a cancel reason and memo. Jobs cannot be deleted, only canceled; get the reason ID from List Job Cancel Reasons.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | Yes | Memo of job cancel reason. |
| `job_id` | integer | Yes | ID of the job. |
| `reason_id` | integer | Yes | ID of job cancel reason. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Cancel Purchase Order

**Slug:** `SERVICETITAN_CANCEL_PURCHASE_ORDER`

Cancel a ServiceTitan purchase order by id, optionally recording a cancellation reason. This cannot be undone through the API: no way to reopen a canceled purchase order is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `canceled_reason` | string ("NotRequired" | "Duplicate" | "Accidental" | "VendorIssue" | "Other" | "JobCanceled") | No | Reason the purchase order is canceled. |
| `purchase_order_id` | integer | Yes | Id of the purchase order to cancel. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Cancel Report Data Query

**Slug:** `SERVICETITAN_CANCEL_REPORT_DATA_QUERY`

Cancel a long-running report data query in ServiceTitan and release its query_token. Succeeds even if the query had already finished; the result can no longer be fetched afterwards.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query_token` | string | Yes | Token of the long-running query, returned when the query was started. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Confirm Appointment

**Slug:** `SERVICETITAN_CONFIRM_APPOINTMENT`

Mark a ServiceTitan job appointment as confirmed. Takes no body; the appointment's isConfirmed flag becomes true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | ID of the job appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Adjustment Invoice

**Slug:** `SERVICETITAN_CREATE_ADJUSTMENT_INVOICE`

Create an adjustment invoice against an existing invoice in ServiceTitan, for example a refund or a write-off; adjustment_to_id names the invoice being adjusted. It cannot create an ordinary job invoice, and the response is a bare integer that the spec does not describe.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | No | Tax amount. |
| `items` | array | No | Invoice line items. Each entry needs description and quantity. |
| `number` | string | No | Invoice number. |
| `summary` | string | No | Invoice summary (HTML allowed). |
| `type_id` | integer | No | Id of the invoice type. |
| `subtotal` | number | No | Subtotal before tax. |
| `export_id` | string | No | Identifier assigned when the record was exported. |
| `invoiced_on` | string | No | Invoice date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `tax_zone_id` | integer | No | Id of the tax zone; see LIST_TAX_ZONES. |
| `royalty_date` | string | No | Royalty date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `royalty_memo` | string | No | Royalty memo. |
| `review_status` | string ("NeedsReview" | "OnHold" | "Reviewed" | "PendingApproval" | "Rejected" | "ReadyForBilling" | "Invoiced") | No | Review status of the invoice. |
| `assigned_to_id` | integer | No | Id of the user the invoice is assigned to. |
| `budget_code_id` | integer | No | Id of the budget code. |
| `royalty_status` | string ("Pending" | "Sent" | "Failed") | No | Indicates royalty status of invoice. |
| `royalty_sent_on` | string | No | When the royalty was sent. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `adjustment_to_id` | integer | Yes | Id of the existing invoice that this adjustment invoice adjusts. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Appointment

**Slug:** `SERVICETITAN_CREATE_APPOINTMENT`

Add a new appointment to an existing ServiceTitan job, with start and end times and optional technicians. A job's first appointment is created by Create Job; use this only for additional visits.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | Yes | End date-time of new appointment. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `start` | string | Yes | Start date-time of new appointment. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `job_id` | integer | Yes | ID of job for new appointment. |
| `technician_ids` | array | No | List of IDs of technicians to assign to new appointment. |
| `arrival_window_end` | string | No | Arrival window end date-time for new appointment, if configured. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `arrival_window_start` | string | No | Arrival window start date-time for new appointment, if configured. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `special_instructions` | string | No | Special instructions associated to the appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Arrival Window

**Slug:** `SERVICETITAN_CREATE_ARRIVAL_WINDOW`

Create a ServiceTitan arrival window with a start time and duration for a set of business units.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `start` | string | Yes | Start time of the arrival window as a TimeSpan string, e.g. 09:00. |
| `duration` | string | Yes | Documented as the end time for the arrival window defined as TimeSpan, e.g. 11:00, although the field is named duration. Which of the two the API expects is unverified. |
| `business_unit_ids` | array | Yes | IDs of the business units this arrival window applies to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Booking

**Slug:** `SERVICETITAN_CREATE_BOOKING`

Create a booking in ServiceTitan, an incoming request that office staff later book as a job or dismiss. It does not create a job; send at least one phone or email in contacts so staff can follow up.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the customer. |
| `start` | string | No | Requested start time of the booking. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `source` | string | Yes | Where the booking came from, for example the name of the website or widget. |
| `address` | object | No | Address of the booking. When sent, street, city, state, zip and country are required. |
| `summary` | string | Yes | Summary of the booking. |
| `contacts` | array | No | Contacts for the booking, each with type and value. |
| `priority` | string ("Low" | "Normal" | "High" | "Urgent") | No | Booking priority. |
| `campaign_id` | integer | No | ID of the booking's campaign. |
| `external_id` | string | Yes | Your own id for the booking. Required; it can be used later to find the booking with the external_id filter. |
| `job_type_id` | integer | No | ID of the booking's job type. |
| `customer_type` | string ("Residential" | "Commercial") | No | Type of customer: Residential or Commercial. |
| `uploaded_images` | array | No | Images attached to the booking, as a list of strings. The spec does not say whether these are URLs or file names. |
| `business_unit_id` | integer | No | ID of the booking's business unit. |
| `booking_provider_id` | integer | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |
| `is_first_time_client` | boolean | Yes | Whether this is a first-time client. |
| `is_send_confirmation_email` | boolean | No | Set true to send the customer a confirmation email when the booking is created. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Booking Contact

**Slug:** `SERVICETITAN_CREATE_BOOKING_CONTACT`

Add a contact entry (phone, email or fax) to a booking in ServiceTitan for a given booking provider. This is the booking's own contact list, separate from the GUID person contacts managed with CREATE_CONTACT and CREATE_CONTACT_METHOD.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short note about this contact entry, for example 'work number'. |
| `type` | string ("Phone" | "MobilePhone" | "Email" | "Fax") | Yes | Type of contact entry: Phone, MobilePhone, Email or Fax. |
| `value` | string | Yes | The phone number, email address or fax number. |
| `booking_id` | integer | Yes | Id of the booking. |
| `booking_provider_id` | integer | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Booking Provider Tag

**Slug:** `SERVICETITAN_CREATE_BOOKING_PROVIDER_TAG`

Create a booking provider tag in ServiceTitan, the label that identifies one source of bookings. Both tag_name and description are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tag_name` | string | Yes | Name of the booking provider tag. |
| `description` | string | Yes | Description of the booking provider tag. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Budget Code

**Slug:** `SERVICETITAN_CREATE_BUDGET_CODE`

Create a full ServiceTitan budget code from a list of segment item IDs. Use Create Partial Budget Code when some segments have no item chosen.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `segment_item_ids` | array | Yes | IDs of the segment items that make up the budget code. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Business Hours

**Slug:** `SERVICETITAN_CREATE_BUSINESS_HOURS`

Set the ServiceTitan business hours by sending the open time ranges for weekdays, Saturday and Sunday. All three lists are required; whether this replaces existing hours is not documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sunday` | array | Yes | Open time ranges for Sunday. |
| `saturday` | array | Yes | Open time ranges for Saturday. |
| `weekdays` | array | Yes | Open time ranges for weekdays. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Campaign

**Slug:** `SERVICETITAN_CREATE_CAMPAIGN`

Create a marketing campaign in ServiceTitan. name, business_unit_id, category_id and active are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `dnis` | string | No | Tracking phone number (DNIS) of the campaign. Calls to this number are attributed to the campaign. |
| `name` | string | Yes | Name of the campaign. |
| `active` | boolean | Yes | Whether the campaign is active. |
| `medium` | string | No | Marketing medium of the campaign. Accepted values are not documented. |
| `source` | string | No | Traffic source of the campaign. Accepted values are not documented. |
| `category_id` | integer | Yes | Id of the campaign category, from LIST_CAMPAIGN_CATEGORIES. |
| `other_medium` | string | No | Free-text medium label. How it relates to medium is not documented. |
| `other_source` | string | No | Free-text source label. How it relates to source is not documented. |
| `business_unit_id` | integer | Yes | Id of the business unit the campaign belongs to. |
| `is_default_campaign` | boolean | No | Set true to make this the default campaign. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Campaign Category

**Slug:** `SERVICETITAN_CREATE_CAMPAIGN_CATEGORY`

Create a marketing campaign category in ServiceTitan. Returns only the new category's id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the campaign category. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Campaign Cost

**Slug:** `SERVICETITAN_CREATE_CAMPAIGN_COST`

Create the cost record of a marketing campaign for one month in ServiceTitan. The amount is given as a daily cost, not a monthly total.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `year` | integer | Yes | Calendar year of the cost record, e.g. 2025. |
| `month` | integer | Yes | Month of the cost record, 1 to 12. |
| `daily_cost` | number | Yes | Cost per day for that month, as a decimal amount. |
| `campaign_id` | integer | Yes | Id of the campaign the cost belongs to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Contact

**Slug:** `SERVICETITAN_CREATE_CONTACT`

Create a contact (a person record with name and title) in ServiceTitan. It is not linked to anything yet; add phone or email with CREATE_CONTACT_METHOD and link it with CREATE_CONTACT_RELATIONSHIP.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the contact. |
| `title` | string | No | Title of the contact. |
| `reference_id` | string | No | External reference ID of the contact. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Contact Method

**Slug:** `SERVICETITAN_CREATE_CONTACT_METHOD`

Add a contact method (phone, mobile phone, email or fax) to a contact in ServiceTitan. contact_id is the GUID of a person contact from CREATE_CONTACT or LIST_CONTACTS; to add a phone or email directly to a customer, location or booking use CREATE_CUSTOMER_CONTACT, CREATE_LOCATION_CONTACT or CREATE_BOOKING_CONTACT.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short note about this contact method, for example 'work number'. |
| `type` | string ("Phone" | "Email" | "Fax" | "MobilePhone") | Yes | Type of the contact method. |
| `value` | string | Yes | The phone number, email address or fax number. |
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `reference_id` | string | No | Reference ID of the contact method. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Contact Relationship

**Slug:** `SERVICETITAN_CREATE_CONTACT_RELATIONSHIP`

Link a contact to a customer, location or booking in ServiceTitan. All three values go in the path and no request body is sent.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `related_entity_id` | integer | Yes | Id of the customer, location or booking on the other side of the relationship. |
| `relationship_type` | string ("customer" | "location" | "booking") | Yes | What the contact is linked to: customer, location or booking. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Customer

**Slug:** `SERVICETITAN_CREATE_CUSTOMER`

Create a customer in ServiceTitan together with its first location or locations. name, address and at least one entry in locations are required; merging or deactivating customers is not available through the API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the customer. |
| `type` | string ("Residential" | "Commercial") | No | Type of customer. |
| `address` | object | Yes | Bill-To address of the customer record. |
| `contacts` | array | No | Contacts for the customer. |
| `locations` | array | Yes | Locations to create with the customer, at least one. Each needs name and address. |
| `tax_exempt` | boolean | No | Whether the customer is tax exempt. |
| `do_not_mail` | boolean | No | Customer has been flagged as "do not mail". |
| `credit_limit` | number | No | Credit Limit for the customer. |
| `tag_type_ids` | array | No | Ids of the tag types to associate with the customer. |
| `custom_fields` | array | No | Custom field values of the customer, each with typeId and value. |
| `external_data` | object | No | External data items to attach to this customer. |
| `do_not_service` | boolean | No | Customer has been flagged as "do not service". |
| `payment_term_id` | integer | No | Id of the customer's payment term. |
| `national_account` | boolean | No | Customer has been flagged as National Account. |
| `credit_limit_balance` | number | No | Credit Limit Balance for the customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Customer Contact

**Slug:** `SERVICETITAN_CREATE_CUSTOMER_CONTACT`

Add a contact entry (phone, mobile phone, email or fax) to a customer in ServiceTitan. It is not copied to the customer's locations. This is the customer's own contact list, separate from the GUID person contacts managed with CREATE_CONTACT and CREATE_CONTACT_METHOD.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short description about this contact, for example, "work #" or "Owner's daughter - Kelly". |
| `type` | string ("Phone" | "Email" | "Fax" | "MobilePhone") | Yes | Type of contact entry: Phone (landline), MobilePhone, Email or Fax. |
| `value` | string | Yes | The email, phone number, or fax number for the contact. |
| `customer_id` | integer | Yes | Id of the customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Customer Note

**Slug:** `SERVICETITAN_CREATE_CUSTOMER_NOTE`

Add a note to a customer in ServiceTitan. Set add_to_locations to copy the same note to the customer's active locations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | Yes | Text content of customer note. |
| `pin_to_top` | boolean | No | Whether to pin customer note to the top. |
| `customer_id` | integer | Yes | Id of the customer. |
| `add_to_locations` | boolean | No | Whether to add the same note to the customer's active locations. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Employee

**Slug:** `SERVICETITAN_CREATE_EMPLOYEE`

Create an office employee in ServiceTitan with a role and positions; returns the new employee id. account_creation_method picks CreateLater, SendInvite or AssignLoginAndPassword; the spec does not describe what each one does.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Employee name. |
| `email` | string | Yes | Email. |
| `login` | string | No | Login (Username). |
| `role_id` | integer | Yes | User role Id. |
| `password` | string | No | Login password of the new user. Sensitive. The spec does not say which account_creation_method needs it. |
| `positions` | array | Yes | List of company positions. |
| `aad_user_id` | string | No | Azure Active Directory User Id. |
| `phone_number` | string | No | Office phone. |
| `custom_fields` | array | No | List of employee's custom fields, each with typeId and value. |
| `business_unit_id` | integer | No | Business unit Id. |
| `mobile_phone_number` | string | No | Mobile phone. |
| `account_creation_method` | string ("CreateLater" | "SendInvite" | "AssignLoginAndPassword") | Yes | How the login is set up: CreateLater, SendInvite or AssignLoginAndPassword. The spec names the methods but does not describe their effect. |
| `business_unit_access_ids` | array | No | Business Unit Access IDs. Requires 'Business units filtering for employees' feature flag, otherwise HTTP 400. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Equipment System

**Slug:** `SERVICETITAN_CREATE_EQUIPMENT_SYSTEM`

Create an equipment system at a ServiceTitan customer location, optionally attaching installed equipment to it. The name must be unique within the location.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Optional free-text memo. |
| `name` | string | Yes | The display name of the equipment system. Must be unique within the location. |
| `location_id` | integer | Yes | The location at which the new equipment system lives. |
| `tag_type_ids` | array | No | Optional tag type IDs to associate with the new system. |
| `custom_fields` | array | No | Optional custom field values, each with id, typeId and value. |
| `equipment_ids` | array | No | Optional existing installed equipment IDs to attach to the new system at creation time. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Equipment Type

**Slug:** `SERVICETITAN_CREATE_EQUIPMENT_TYPE`

Create an equipment type in ServiceTitan for classifying installed equipment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Equipment type name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Estimate

**Slug:** `SERVICETITAN_CREATE_ESTIMATE`

Create an estimate in ServiceTitan on a job or project, with its line items. Use it to quote work before it is sold; every field is optional in the spec, and which ones ServiceTitan actually needs (such as job_id or project_id) is not documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | No | Tax amount on the estimate. |
| `name` | string | No | Name of the estimate. |
| `items` | array | No | Line items of the estimate, each a pricebook service, material or equipment. Nested keys use the documented spelling (skuId, unitPrice). |
| `job_id` | integer | No | Id of the job the estimate belongs to. |
| `status` | string ("Open" | "Sold" | "Dismissed") | No | Estimate status: Open, Sold or Dismissed. |
| `summary` | string | No | Summary text shown on the estimate. |
| `project_id` | integer | No | Id of the project the estimate belongs to. |
| `sold_by_id` | integer | No | Id of the technician credited with the sale. |
| `location_id` | integer | No | Id of the service location the estimate is for. |
| `review_status` | string ("None" | "NeedsApproval" | "Approved" | "NotApproved") | No | Review status: None, NeedsApproval, Approved or NotApproved. |
| `budget_code_id` | integer | No | Id of the budget code the estimate is booked against. |
| `deposit_amount` | number | No | Deposit requested, as a fixed amount. |
| `external_links` | array | No | Links to external documents shown with the estimate. |
| `is_recommended` | boolean | No | Whether this estimate is the recommended option for the customer. |
| `deposit_percent` | number | No | Deposit requested, as a percentage of the estimate total. |
| `use_default_project_labels` | boolean | No | Whether to apply the project's default labels to the estimate. |
| `require_deposit_on_signature` | boolean | No | Whether the deposit must be paid when the customer signs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Estimate Template

**Slug:** `SERVICETITAN_CREATE_ESTIMATE_TEMPLATE`

Create an estimate template in ServiceTitan from a list of pricebook items. Static templates need a unitPrice on every item; Dynamic templates take prices from the pricebook.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("Dynamic" | "Static") | Yes | Pricing mode: Static (prices fixed on the template, unitPrice needed on every item) or Dynamic (prices computed from the pricebook). |
| `name` | string | Yes | Customer-facing name of the estimate template. |
| `items` | array | Yes | Items of the template. skuId, skuType, quantity and isAddOn are required on each item. |
| `active` | boolean | No | Whether the template is active. |
| `summary` | string | No | Summary text of the template. |
| `internal_name` | string | Yes | Internal name of the estimate template, shown to staff. |
| `business_unit_id` | integer | No | Id of the business unit the template belongs to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create External Call Attribution

**Slug:** `SERVICETITAN_CREATE_EXTERNAL_CALL_ATTRIBUTION`

Attribute a phone call tracked by outside call-tracking software to a web session in ServiceTitan Marketing Ads. It records attribution only; it does not create a call, lead or job.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `web_session_data` | object | Yes | The web session to attribute to. landingPageUrl and referrerUrl are required; click ids (gclid, fbclid, msclkid and others) and UTM values are optional. |
| `external_call_data` | object | Yes | The tracked call: customerPhoneNumber, forwardingPhoneNumber, trackingPhoneNumber and callStartedOnUtc are all required. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Finding

**Slug:** `SERVICETITAN_CREATE_FINDING`

Create a finding in ServiceTitan to record an issue or observation at a customer location, with an urgency level and optional links to installed equipment and the job where it was found. Attachments link file URLs; no file content is uploaded.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Title summarizing the issue or observation (e.g., "Leaking pipe", "Worn brake pads"). |
| `attachments` | array | No | Photos, videos, or documents supporting the finding, each with fileName, url and type. No file content is sent. |
| `description` | string | No | Detailed description of the issue, condition, or observation. |
| `location_id` | integer | Yes | ID of the customer location where the finding was identified. |
| `source_job_id` | integer | No | ID of the job during which this finding was discovered (optional). |
| `urgency_level` | string ("NotSpecified" | "Low" | "Medium" | "High" | "Critical") | Yes | Priority level indicating how urgently the finding should be addressed. |
| `internal_notes` | string | No | Private notes for internal use, not visible to customers. |
| `recommended_solution` | string | No | Suggested action or repair to address the finding. |
| `installed_equipment_id` | integer | No | ID of the specific equipment where the finding was observed (optional). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Finding Attachment

**Slug:** `SERVICETITAN_CREATE_FINDING_ATTACHMENT`

Add an attachment to a ServiceTitan finding by linking a file URL with a file name and media type. No file content is sent; the spec expects the URL returned by ServiceTitan's findings upload endpoint, which is not available as a tool.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | URL of the uploaded file obtained from ServiceTitan's findings upload endpoint, which is not available as a tool; whether other URLs are accepted is undocumented. |
| `type` | string ("Other" | "Image" | "VideoFile" | "VideoLink" | "Document") | Yes | Media type of the attachment. |
| `file_name` | string | Yes | Original file name (e.g., "motor-inspection.jpg"). |
| `finding_id` | integer | Yes | Id of the finding that owns the attachment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create GL Account

**Slug:** `SERVICETITAN_CREATE_GL_ACCOUNT`

Create a general ledger (GL) account in ServiceTitan and return the created account. The spec marks no field as required; use LIST_GL_ACCOUNT_TYPES for valid type names.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Account name. |
| `type` | string | No | Account type name; see LIST_GL_ACCOUNT_TYPES. |
| `number` | string | No | Account number. |
| `subtype` | string | No | Account subtype. |
| `description` | string | No | Account description. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create GPS Pings

**Slug:** `SERVICETITAN_CREATE_GPS_PINGS`

Send GPS location pings for technician vehicles or units to ServiceTitan for a configured GPS provider, so they plot on the Dispatch Map. Returns a per-ping result; a ping can fail while the call succeeds.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pings` | array | Yes | One or more GPS pings to send. At least one GPS ping is required. |
| `gps_provider` | string | Yes | Name of the GPS provider, as configured for the tenant under Settings > Integrations > GPS and selected when the app was connected. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Gross Pay Item

**Slug:** `SERVICETITAN_CREATE_GROSS_PAY_ITEM`

Create a gross pay item inside an existing payroll in ServiceTitan and return its id. payroll_id, amount, activity_code_id and date are required; find the payroll id with LIST_PAYROLLS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Date of the gross pay item. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `memo` | string | No | Memo of the gross pay item. |
| `amount` | number | Yes | Amount of the gross pay item. |
| `invoice_id` | integer | No | Id of the invoice. |
| `payroll_id` | integer | Yes | Id of the payroll the item belongs to; see LIST_PAYROLLS. |
| `budget_code_id` | integer | No | Id of the budget code. |
| `activity_code_id` | integer | Yes | Id of the payroll activity code; see LIST_PAYROLL_ACTIVITY_CODES. |
| `business_unit_id` | integer | No | Id of the business unit to use as the payout business unit. If not provided, the default applies: the employee or technician business unit when no invoice is set, the invoice business unit when one is. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Installed Equipment

**Slug:** `SERVICETITAN_CREATE_INSTALLED_EQUIPMENT`

Create a record of equipment installed at a ServiceTitan customer location, with serial number, warranty dates, and an optional parent equipment or system. Only location_id is required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cost` | number | No | Cost of the equipment. |
| `memo` | string | No | Free-text memo. |
| `name` | string | No | Name of the installed equipment. |
| `model` | string | No | Model name or number. |
| `parent` | object | No | Parent of this equipment: another installed equipment record or an equipment system, given by id and type. |
| `status` | string ("Installed" | "Replaced") | No | Whether the equipment is currently installed or has been replaced. |
| `barcode_id` | string | No | Barcode identifier of the equipment. |
| `attachments` | array | No | Files to link to the equipment, each by URL with its type. |
| `location_id` | integer | Yes | Id of the customer location where the equipment is installed. |
| `installed_on` | string | No | When the equipment was installed. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `manufacturer` | string | No | Manufacturer name. |
| `tag_type_ids` | array | No | Ids of the tag types to apply. |
| `custom_fields` | array | No | Custom field values to set, each with typeId and value. |
| `serial_number` | string | No | Serial number of the equipment. |
| `manufactured_on` | string | No | Date the equipment was manufactured. Date, e.g. 2025-01-31. |
| `equipment_type_id` | integer | No | Id of the equipment type; see LIST_EQUIPMENT_TYPES. |
| `actual_replacement_date` | string | No | Date the equipment was actually replaced. Date, e.g. 2025-01-31. |
| `manufacturer_warranty_end` | string | No | End of the manufacturer warranty. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `manufacturer_warranty_start` | string | No | Start of the manufacturer warranty. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `service_provider_warranty_end` | string | No | End of the service provider warranty. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `service_provider_warranty_start` | string | No | Start of the service provider warranty. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Inventory Adjustment

**Slug:** `SERVICETITAN_CREATE_INVENTORY_ADJUSTMENT`

Create an inventory adjustment in ServiceTitan that changes stock quantities at one inventory location. Only the types Adjustment, BeginningBalance, and Consignment can be created; item quantities may be negative.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | No | Adjustment date. Defaults to today (tenant time) when omitted. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `memo` | string | No | Memo of the inventory adjustment. |
| `type` | string ("Adjustment" | "BeginningBalance" | "Consignment") | Yes | Adjustment type. Only manually-creatable types are accepted (Adjustment, BeginningBalance, Consignment). |
| `items` | array | No | Adjustment line items. Each needs skuId and quantity; quantity may be negative. |
| `location_id` | integer | Yes | Inventory location Id the adjustment posts against. |
| `external_data` | object | No | External data to attach to the created adjustment. applicationGuid and externalData are required. |
| `business_unit_id` | integer | Yes | Business unit Id. |
| `reference_number` | string | No | Reference number of the inventory adjustment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Inventory Receipt

**Slug:** `SERVICETITAN_CREATE_INVENTORY_RECEIPT`

Record a receipt of items against an existing ServiceTitan purchase order. items lists each SKU received with its quantity and cost.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | Yes | Receipt tax. |
| `memo` | string | No | Receipt memo. |
| `items` | array | Yes | Purchase order items received. Each needs skuId, quantity and cost; purchaseOrderItemId names the purchase order line. |
| `job_id` | integer | No | Id of the job to associate with this receipt. |
| `shipping` | number | Yes | Receipt shipping cost. |
| `date_received` | string | Yes | Receipt date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `budget_code_id` | integer | No | Id of the budget code. |
| `purchase_order_id` | integer | Yes | Id of the purchase order for this receipt. |
| `vendor_document_number` | string | No | Vendor document number. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Inventory Return

**Slug:** `SERVICETITAN_CREATE_INVENTORY_RETURN`

Create a vendor return in ServiceTitan inventory, recording items sent back to a vendor from an inventory location.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | Yes | Tax rate of the vendor return, as the spec names it. |
| `memo` | string | No | Memo or summary of the vendor return. |
| `items` | array | No | Line items returned. Each needs skuId, quantity and cost. |
| `job_id` | integer | No | Id of the job. |
| `shipping` | number | Yes | Shipping cost of the vendor return. |
| `vendor_id` | integer | Yes | Id of the vendor the items are returned to. |
| `return_date` | string | Yes | Return date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `budget_code_id` | integer | No | Id of the budget code for the return. |
| `restocking_fee` | number | Yes | Restocking fee of the vendor return. |
| `return_type_id` | integer | Yes | Id of the return type. |
| `business_unit_id` | integer | Yes | Id of the business unit. |
| `reference_number` | string | No | Reference number of the vendor return. |
| `purchase_order_id` | integer | No | Id of the purchase order. |
| `inventory_location_id` | integer | Yes | Id of the inventory location the items are returned from. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Inventory Return Type

**Slug:** `SERVICETITAN_CREATE_INVENTORY_RETURN_TYPE`

Create a vendor return type in ServiceTitan inventory, with its vendor-credit, sales-tax and default settings. Its id is the return_type_id that CREATE_INVENTORY_RETURN requires.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the return type. |
| `is_default` | boolean | Yes | Whether this is the default return type. The spec gives no description for this field. |
| `include_in_sales_tax` | boolean | Yes | Whether returns of this type are included in sales tax. The spec gives no description for this field. |
| `is_default_for_consignment` | boolean | Yes | Whether this is the default return type for consignment. The spec gives no description for this field. |
| `automatically_receive_vendor_credit` | boolean | Yes | Whether the return type allows receiving vendor credits automatically. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Invoice Task

**Slug:** `SERVICETITAN_CREATE_INVOICE_TASK`

Create a task on an invoice in ServiceTitan from a task template. template_id is required and no tool in this toolkit lists invoice task templates, so the id must come from the user or from an existing task's template_id. This is an invoice workflow task, not a Task Management task (CREATE_TASK).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `variables` | object | No | Template variables as name-value pairs of strings. |
| `invoice_id` | integer | Yes | Id of the invoice. |
| `template_id` | string | Yes | Id of the invoice task template to create the task from. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Invoice Template

**Slug:** `SERVICETITAN_CREATE_INVOICE_TEMPLATE`

Create a membership invoice template in ServiceTitan from a list of line items; returns the new template id. Memberships bill from these templates and recurring service jobs are invoiced from them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | No | Line items of the invoice template. Each item needs skuId, quantity, unitPrice and isAddOn. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Job

**Slug:** `SERVICETITAN_CREATE_JOB`

Book a new ServiceTitan job for a customer and location, with at least one appointment. Customer and location must already exist; the job's first appointment is created from the appointments list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lead_id` | integer | No | ID of the Lead associated with this job. |
| `summary` | string | No | Job summary. HTML is accepted. |
| `priority` | string | Yes | Priority of the job. The list filter documents Low, Normal, High, Urgent. |
| `no_charge` | boolean | No | Whether the job is a no-charge job. |
| `booking_id` | integer | No | ID of the Booking that resulted in this job. |
| `project_id` | integer | No | ID of the job's project. |
| `sold_by_id` | integer | No | ID of the Technician who sold the job. |
| `campaign_id` | integer | Yes | ID of the job's campaign. |
| `customer_id` | integer | Yes | ID of the job's customer. |
| `customer_po` | string | No | Customer PO. |
| `job_type_id` | integer | Yes | ID of job type. |
| `location_id` | integer | Yes | ID of the job's location. |
| `appointments` | array | Yes | List of appointment information. Each entry needs start and end; arrivalWindowStart, arrivalWindowEnd and technicianIds are optional. |
| `tag_type_ids` | array | No | List of IDs of tags on the job. |
| `custom_fields` | array | No | Custom fields on the job, each with typeId and value. |
| `external_data` | object | No | Optional model that contains a list of external data items that should be attached to this job. applicationGuid and externalData are required. |
| `recall_for_id` | integer | No | ID of the job that this job is a recall for. |
| `business_unit_id` | integer | Yes | ID of the job's business unit. |
| `partner_lead_call_id` | integer | No | ID of the Call that 3rd-party agents are enabled to set. |
| `job_generated_lead_source` | object | No | Object that contains jobId, the ID of the job from which this job was generated, and employeeId, the ID of the office user or technician. |
| `service_agreement_visit_id` | integer | No | ID of the Service Agreement visit that this job fulfills. When provided, the booked job is linked to the specified SA visit. |
| `invoice_signature_is_required` | boolean | No | Whether the invoice requires a signature. When it is not sent, the rules of the location and the job type apply. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Job Attribution

**Slug:** `SERVICETITAN_CREATE_JOB_ATTRIBUTION`

Attribute an existing job to a web session in ServiceTitan Marketing Ads. It records attribution only; the job must already exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Id of the job to attribute to the web session. |
| `web_session_data` | object | Yes | The web session to attribute to. landingPageUrl and referrerUrl are required; click ids (gclid, fbclid, msclkid and others) and UTM values are optional. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Job Note

**Slug:** `SERVICETITAN_CREATE_JOB_NOTE`

Add a note to a ServiceTitan job, optionally pinned to the top.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | Yes | Text content of job note. |
| `job_id` | integer | Yes | ID of the job. |
| `pin_to_top` | boolean | No | Whether to pin job note to the top. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Job Type

**Slug:** `SERVICETITAN_CREATE_JOB_TYPE`

Create a ServiceTitan job type with its name, priority, duration, business units, skills and default tags.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the job type. |
| `skills` | array | No | List of skills required to complete this job. |
| `summary` | string | No | Text that is automatically added to job summary when booked. |
| `duration` | integer | No | Average length of time for this job type. The unit is not stated on this field; the list filter documents seconds. |
| `priority` | string | No | Level of urgency for this type of job. |
| `no_charge` | boolean | No | When true, all jobs are considered no charge. |
| `tag_type_ids` | array | No | Tags here will automatically be applied to jobs booked. |
| `external_data` | object | No | Optional model that contains a list of external data items that should be attached to this job type. |
| `job_type_class` | string | No | Class used to group job types. |
| `sold_threshold` | number | No | A job is considered as converted if subtotal meets or exceeds this threshold. |
| `business_unit_ids` | array | No | Business Unit Ids associated with job type. |
| `custom_field_type_ids` | array | No | Custom field type IDs to assign to this job type. Order determines display order. |
| `default_estimate_sold_action` | string | No | Default action when an estimate is sold for this job type. |
| `invoice_signature_is_required` | boolean | No | When true signature is required. |
| `enforce_recurring_service_event_selection` | boolean | No | When true enforce recurring service event. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Journal Entry

**Slug:** `SERVICETITAN_CREATE_JOURNAL_ENTRY`

Create a journal entry with debit and credit lines in ServiceTitan; it is marked external automatically. status and version_id are required (the spec does not document what version_id a new entry should carry; unverified without a live account), and the documented response has no body, so the new id is not returned: find the entry with LIST_JOURNAL_ENTRIES.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the journal entry. |
| `lines` | array | No | Journal entry lines; each needs debit and credit. |
| `status` | string ("Open" | "Closed") | Yes | Posting status of the journal entry: Open or Closed. |
| `message` | string | No | Message stored with the journal entry. |
| `post_date` | string | No | Posting date. Date in YYYY-MM-DD form, e.g. 2025-01-31. |
| `version_id` | integer | Yes | Version number of the journal entry. Required by the spec, which does not document what value a new entry should carry; unverified without a live account. |
| `custom_fields` | object | No | Custom fields as name-value pairs of strings. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Labor Type

**Slug:** `SERVICETITAN_CREATE_LABOR_TYPE`

Create a payroll labor type in ServiceTitan and return its id. name, code and active are all required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Code for the payroll labor type. |
| `name` | string | Yes | Name of the payroll labor type. |
| `active` | boolean | Yes | Whether the payroll labor type is active. The spec lists this field as required, so it is always sent. |
| `service_code_id` | integer | No | Id of the labor SKU (service) to map this labor type to. Optional. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Lead

**Slug:** `SERVICETITAN_CREATE_LEAD`

Create a lead in ServiceTitan. campaign_id and summary are required, and one of call_reason_id or follow_up_date must be sent; passing booking_id irreversibly dismisses that booking and turns it into this lead; ServiceTitan documents no operation to undo the dismissal. For a web-form style lead with just a name and contact details and no campaign id, use SUBMIT_LEAD_FORM.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `summary` | string | Yes | Lead summary. |
| `lead_zip` | string | No | Zip provided for the lead. |
| `priority` | string ("Low" | "Normal" | "High" | "Urgent") | No | Priority of the lead. |
| `lead_city` | string | No | City provided for the lead. |
| `lead_unit` | string | No | Unit provided for the lead. |
| `booking_id` | integer | No | The associated Booking Id to use for creating the Lead. This Booking will be dismissed and a Lead will get created associated to this Booking. |
| `lead_email` | string | No | Email provided for the lead. |
| `lead_phone` | string | No | Phone number provided for the lead. |
| `lead_state` | string | No | State provided for the lead. |
| `campaign_id` | integer | Yes | ID of the campaign. |
| `customer_id` | integer | No | ID of the customer. |
| `job_type_id` | integer | No | ID of job type. |
| `lead_street` | string | No | Street provided for the lead. |
| `location_id` | integer | No | ID of the location. |
| `lead_country` | string | No | Country provided for the lead. |
| `tag_type_ids` | array | No | List of IDs of tags on the lead. |
| `call_reason_id` | integer | No | ID of the call reason. Required if follow up date is not provided. |
| `follow_up_date` | string | No | Date of when to follow up. Required if call reason ID is not provided. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `business_unit_id` | integer | No | ID of the business unit. |
| `lead_customer_name` | string | No | Customer name provided for the lead. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Lead Follow Up

**Slug:** `SERVICETITAN_CREATE_LEAD_FOLLOW_UP`

Schedule a follow-up on a lead in ServiceTitan by setting the next follow-up date, with an optional note.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | No | Text of follow-up note. |
| `lead_id` | integer | Yes | Id of the lead. |
| `pin_to_top` | boolean | No | Whether to pin follow-up note to the top. |
| `follow_up_date` | string | Yes | Follow-up date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Lead Note

**Slug:** `SERVICETITAN_CREATE_LEAD_NOTE`

Add a note to a lead in ServiceTitan.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | Yes | Text content of lead note. |
| `lead_id` | integer | Yes | Id of the lead. |
| `pin_to_top` | boolean | No | Whether to pin lead note to the top. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Location

**Slug:** `SERVICETITAN_CREATE_LOCATION`

Create a location (service address) in ServiceTitan under an existing customer. name, address and customer_id are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the location. |
| `address` | object | Yes | Address of the location record. |
| `contacts` | array | No | Contacts for the location. |
| `customer_id` | integer | Yes | ID of the location's customer. |
| `tax_zone_id` | integer | No | Optional tax zone id to use for the location. When provided, this tax zone is used instead of being automatically resolved from the location's address. |
| `tag_type_ids` | array | No | Tag type ids for the location. |
| `custom_fields` | array | No | Custom field values of the location, each with typeId and value. |
| `external_data` | object | No | Optional model that contains a list of external data items that should be attached to this Location. |
| `coordinates_source` | string ("None" | "System" | "User" | "Imported") | No | Where the address coordinates came from. |
| `coordinates_verification_status` | string ("Unverified" | "InProgress" | "Failed" | "Verified") | No | Verification status of the address coordinates. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Location Contact

**Slug:** `SERVICETITAN_CREATE_LOCATION_CONTACT`

Add a contact entry (phone, mobile phone, email or fax) to a location in ServiceTitan. The provider guide says an entry added to a new location is also copied to its customer. This is the location's own contact list, separate from the GUID person contacts managed with CREATE_CONTACT and CREATE_CONTACT_METHOD.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short description about this contact, for example, "work #" or "Owner's daughter - Kelly". |
| `type` | string ("Phone" | "Email" | "Fax" | "MobilePhone") | Yes | Type of contact entry: Phone (landline), MobilePhone, Email or Fax. |
| `value` | string | Yes | The email, phone number, or fax number for the contact. |
| `location_id` | integer | Yes | Id of the location. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Location Note

**Slug:** `SERVICETITAN_CREATE_LOCATION_NOTE`

Add a note to a location in ServiceTitan. Set add_to_customer to copy the same note to the location's customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | Yes | Text content of location note. |
| `pin_to_top` | boolean | No | Whether to pin location note to the top. |
| `location_id` | integer | Yes | Id of the location. |
| `add_to_customer` | boolean | No | Whether to add the same note to the location's customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Membership Sale Invoice

**Slug:** `SERVICETITAN_CREATE_MEMBERSHIP_SALE_INVOICE`

Sell a membership to a customer in ServiceTitan by creating a membership sale invoice; returns the new invoice id and customer membership id. It creates a real invoice and membership together, so call it only once the sale is confirmed. Setting recurring_service_action=None deletes the customer's existing recurring services.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | integer | Yes | ID of the customer you are creating the Membership Sale Invoice for. |
| `location_id` | integer | No | Discount location ID of this membership. Leave out for all locations (the spec documents null as all locations). |
| `sale_task_id` | integer | Yes | ID of the sale task that is creating the membership. |
| `business_unit_id` | integer | Yes | Business unit ID. |
| `duration_billing_id` | integer | Yes | ID of the duration/billing option to be used. |
| `recurring_location_id` | integer | No | The location at which recurring services are scheduled. Leave out for all locations (the spec documents null as all locations). |
| `recurring_service_action` | string ("None" | "Single" | "All") | Yes | How many of the customer's locations get the recurring services: All, Single, or None. None deletes existing recurring services. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Non Job Appointment

**Slug:** `SERVICETITAN_CREATE_NON_JOB_APPOINTMENT`

Block time on a ServiceTitan technician's schedule for a non-customer activity such as a meeting, training or time off, optionally repeating. For a customer visit use Create Appointment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the non-job appointment, for example Training. |
| `start` | string | Yes | Start of the non-job appointment. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `end_on` | string | No | Date-time the repetition ends, used when end_type is On. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `repeat` | boolean | No | Whether the non-job appointment repeats. |
| `all_day` | boolean | No | Whether the non-job appointment lasts the whole day. |
| `summary` | string | No | Free-text summary of the non-job appointment. |
| `duration` | string | Yes | Length of the non-job appointment as a TimeSpan string such as 02:00:00. |
| `end_type` | string ("Never" | "After" | "On") | No | How the repetition ends: Never, After a number of occurrences, or On a date. |
| `interval` | integer | No | Repeat every N units of frequency. |
| `frequency` | string ("Daily" | "Weekly" | "Monthly" | "Yearly") | No | How often the non-job appointment repeats. |
| `days_of_week` | string | No | Days of the week the appointment repeats on. The string format is not documented. |
| `technician_id` | integer | Yes | ID of the technician whose time is blocked. |
| `count_occurrences` | integer | No | Number of occurrences, used when end_type is After. |
| `timesheet_code_id` | integer | No | ID of the timesheet code that identifies how this time is paid. |
| `clear_dispatch_board` | boolean | No | Whether to clear this time on the dispatch board. Meaning taken from the field name; not documented. |
| `clear_technician_view` | boolean | No | Whether to clear this time in the technician's view. Meaning taken from the field name; not documented. |
| `show_on_technician_schedule` | boolean | No | Whether the non-job appointment shows on the technician's schedule even if there is no timesheet. |
| `remove_technician_from_capacity_planning` | boolean | No | Whether the technician is left out of capacity planning for this time. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Opt Outs

**Slug:** `SERVICETITAN_CREATE_OPT_OUTS`

Opt one or more phone numbers out of contact in ServiceTitan. The whole request fails if any number cannot be parsed, and a number already opted out globally cannot be opted out for marketing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `opt_out_type` | string ("Unknown" | "Global" | "Marketing" | "Other") | Yes | Type of opt-out to create: Global, Marketing, Other or Unknown. |
| `contact_numbers` | array | Yes | Phone numbers to act on; at least one. Each must be a valid phone number, E.164 format such as +15551234567 recommended. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Partial Budget Code

**Slug:** `SERVICETITAN_CREATE_PARTIAL_BUDGET_CODE`

Create a partial ServiceTitan budget code from segment bindings, where a segment may be left without an item. Use Create Budget Code when every segment has an item.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `segments` | array | Yes | Segment bindings that make up the budget code: one entry per segment, with or without an item. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Payroll Adjustment

**Slug:** `SERVICETITAN_CREATE_PAYROLL_ADJUSTMENT`

Create a payroll adjustment, a manual earning or deduction for one employee or technician, in ServiceTitan and return its id. employee_type must match the kind of id given in employee_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Memo of the payroll adjustment. |
| `rate` | number | No | Rate of the payroll adjustment. |
| `hours` | number | No | Hours of the payroll adjustment. |
| `amount` | number | No | The payroll adjustment amount. |
| `quantity` | number | No | Quantity of the payroll adjustment. |
| `posted_on` | string | Yes | When the adjustment is posted. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `invoice_id` | integer | No | Id of the payroll adjustment invoice. |
| `employee_id` | integer | Yes | Id of the employee or technician the adjustment is for. |
| `employee_type` | string ("Technician" | "Employee") | Yes | Whether employee_id refers to a Technician or an Employee. |
| `activity_code_id` | integer | No | Id of the payroll adjustment activity code. |
| `business_unit_id` | integer | No | Id of the payroll adjustment business unit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Pricebook Category

**Slug:** `SERVICETITAN_CREATE_PRICEBOOK_CATEGORY`

Create a category in the ServiceTitan pricebook, as a Services or Materials category. Set parent_id to create it as a subcategory.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the category. |
| `image` | string | No | The image to display as the category. |
| `active` | boolean | No | Active shows if this category is currently active. |
| `position` | integer | No | The position location of this item. |
| `parent_id` | integer | No | The id of the category that is the parent of this item. Set it to create the category as a subcategory. |
| `sku_images` | array | No | The images that will be used for the SKUs under this category. |
| `sku_videos` | array | No | The videos that will be used for the SKUs under this category. |
| `description` | string | No | A description that described the category. |
| `category_type` | string ("Services" | "Materials") | Yes | The category type: Services or Materials. |
| `business_unit_ids` | array | No | Ids of the business units that are associated with this category. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Pricebook Discount or Fee

**Slug:** `SERVICETITAN_CREATE_PRICEBOOK_DISCOUNT_OR_FEE`

Create a discount or a fee in the ServiceTitan pricebook. The type field decides which one, and amount_type decides whether the amount is a percentage or a fixed value.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Code of the discount or fee. |
| `type` | string ("Discount" | "Fee") | Yes | Discount or Fee: which kind of item this is. |
| `bonus` | number | No | Flat-rate bonus paid for this item. |
| `hours` | number | No | Number of hours associated with the item. |
| `limit` | number | No | Maximum amount that can be applied for this item. |
| `active` | boolean | No | Whether the item is active. |
| `amount` | number | Yes | Percentage or flat amount to discount or add, as amount_type says. |
| `assets` | array | No | Images, videos or PDFs to attach to the item. Each needs type and url. |
| `account` | string | No | Accounting account assigned to the item. |
| `taxable` | boolean | No | Set true to apply tax when the item is added to an estimate or invoice. |
| `categories` | array | No | Ids of the categories technicians use to find the item. |
| `amount_type` | string ("Percentage" | "Fixed") | Yes | Percentage or Fixed: whether amount is a percentage or a flat amount. |
| `description` | string | Yes | Description of the item. The spec gives its format as html. |
| `display_name` | string | No | Display name of the discount or fee. |
| `external_data` | object | No | External data to attach to the item: applicationGuid and an externalData list of key/value pairs, both required. |
| `pays_commission` | boolean | No | Whether this item pays commission. |
| `budget_cost_code` | string | No | Budget cost code segment. Send budget_cost_type with it. |
| `budget_cost_type` | string | No | Budget cost type segment. Send budget_cost_code with it. |
| `commission_bonus` | number | No | Percentage-rate bonus paid for this item. |
| `cross_sale_group` | string | No | Cross-sale group, tracked as a separate column on the Technical Performance Board. |
| `allow_custom_amount` | boolean | No | Set true to let users enter a custom amount when applying this item. |
| `exclude_from_payroll` | boolean | No | Whether the item is excluded from payroll. |
| `intacct_gl_group_account` | string | No | Intacct GL group name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Pricebook Equipment

**Slug:** `SERVICETITAN_CREATE_PRICEBOOK_EQUIPMENT`

Create an equipment item in the ServiceTitan pricebook catalog, with pricing, warranty, vendors, and categories. This does not record equipment installed at a location; use CREATE_INSTALLED_EQUIPMENT for that.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Code of the item. |
| `cost` | number | No | Cost paid to acquire the item. |
| `bonus` | number | No | Flat-rate bonus paid for the item. |
| `hours` | number | No | Number of hours to install the equipment. |
| `model` | string | No | Model of the equipment. |
| `price` | number | No | Sale price of the item. |
| `active` | boolean | No | Whether the item is active. |
| `assets` | array | No | Images, videos or PDFs to attach to the item. Each needs type and url. |
| `account` | string | No | Accounting account assigned to the item. |
| `taxable` | boolean | No | Whether the item is taxable. |
| `upgrades` | array | No | Ids of upgrades that can be sold for this item. |
| `categories` | array | No | Ids of the categories the item belongs to. |
| `dimensions` | object | No | Dimensions of the equipment: height, width and depth. |
| `description` | string | Yes | Description displayed with the item. The spec gives its format as html. |
| `add_on_price` | number | No | Price when the item is sold as an add-on. |
| `display_name` | string | No | Name displayed with the item. |
| `is_inventory` | boolean | No | Whether the equipment is part of inventory. |
| `manufacturer` | string | No | Name of the manufacturer. |
| `member_price` | number | No | Price when the item is sold to a member. |
| `asset_account` | string | No | Name of the asset general ledger account for the item. |
| `external_data` | object | No | External data to attach to the item: applicationGuid and an externalData list of key/value pairs, both required. |
| `other_vendors` | array | No | Other vendors the item can be acquired from. Each needs vendorId, cost and active. |
| `is_cost_locked` | boolean | No | Whether the cost is locked from editing. |
| `primary_vendor` | object | No | Primary vendor the item is acquired from. vendorId, cost and active are required. |
| `is_price_locked` | boolean | No | Whether the price is locked from editing. |
| `pays_commission` | boolean | No | Whether the item pays commission. |
| `recommendations` | array | No | Services and materials recommended with this item, each with skuId and type (Service or Material). |
| `unit_of_measure` | string | No | Unit of measure of the item. |
| `budget_cost_code` | string | No | Budget cost code segment. Send budget_cost_type with it. |
| `budget_cost_type` | string | No | Budget cost type segment. Send budget_cost_code with it. |
| `commission_bonus` | number | No | Percentage-rate bonus paid for the item. |
| `cross_sale_group` | string | No | Cross-sale group, tracked as a separate column on the Technical Performance Board. |
| `add_on_member_price` | number | No | Price when the item is sold to a member as an add-on. |
| `equipment_materials` | array | No | Materials used with this equipment, each with skuId and quantity. |
| `variation_equipment` | array | No | Ids of the variation items to add. |
| `cost_of_sale_account` | string | No | Name of the cost of sale general ledger account for the item. |
| `manufacturer_warranty` | object | No | Manufacturer warranty included with the item: duration (required) and description. |
| `intacct_gl_group_account` | string | No | Intacct GL group name. |
| `is_configurable_equipment` | boolean | No | Whether the item is configurable equipment. |
| `service_provider_warranty` | object | No | Service provider warranty included with the item: duration (required) and description. |
| `exclude_estimated_cost_from_invoice` | boolean | No | Whether the estimated cost is left off the invoice when carried over from an estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Pricebook Material

**Slug:** `SERVICETITAN_CREATE_PRICEBOOK_MATERIAL`

Create a material in the ServiceTitan pricebook, with cost, pricing, vendors, and categories. Only code and description are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Code for the SKU. |
| `cost` | number | No | The cost paid to acquire the material. |
| `bonus` | number | No | Flat-rate bonus paid for this task. |
| `hours` | number | No | The number of hours associated with installing the material. |
| `price` | number | No | Price of this SKU when sold. |
| `active` | boolean | No | Whether the SKU is active. |
| `assets` | array | No | Images, videos or PDFs attached to the SKU, each with type and url. |
| `account` | string | No | The accounting account assigned to this SKU. |
| `taxable` | boolean | No | Whether this SKU is taxable. |
| `categories` | array | No | Ids of the categories this SKU belongs to. |
| `epa_number` | string | No | Optional EPA registration number, up to 500 characters, when is_chemical is true. |
| `description` | string | Yes | Description on the SKU that is displayed with the item. It can contain HTML. |
| `is_chemical` | boolean | No | When true, an EPA number and active ingredients may be recorded for this chemical material. |
| `add_on_price` | number | No | The price if the SKU is sold as an add-on item. |
| `cost_type_id` | integer | No | Id of the cost type of the other direct cost. |
| `display_name` | string | No | Name that displays with the SKU. |
| `is_inventory` | boolean | No | Whether this material is part of your inventory. |
| `member_price` | number | No | The price if the item is sold to a member. |
| `asset_account` | string | No | Name of the asset general ledger account for this item. |
| `external_data` | object | No | External data items to attach to this material, under one application GUID. |
| `other_vendors` | array | No | Other vendors that you might go to acquire this SKU, each with vendorId, cost and active. |
| `is_cost_locked` | boolean | No | Whether the cost is locked from editing. |
| `primary_vendor` | object | No | The primary vendor you use to acquire this SKU. vendorId, cost and active are required inside it. |
| `is_price_locked` | boolean | No | Whether the price is locked from editing. |
| `pays_commission` | boolean | No | Whether this task pays commission. |
| `unit_of_measure` | string | No | The unit of measure used for this SKU. |
| `budget_cost_code` | string | No | The budget cost code segment for this material. budget_cost_type should also be provided. |
| `budget_cost_type` | string | No | The budget cost type segment for this material. budget_cost_code should also be provided. |
| `commission_bonus` | number | No | Percentage-rate bonus paid for this task. |
| `active_ingredients` | string | No | Optional active ingredients, up to 500 characters, when is_chemical is true. |
| `deduct_as_job_cost` | boolean | No | Whether this is deducted as a job cost. |
| `add_on_member_price` | number | No | The price if the SKU is sold to a member as an add-on item. |
| `variation_materials` | array | No | Ids of the variation materials to add. |
| `cost_of_sale_account` | string | No | Name of the cost of sale general ledger account for this item. |
| `is_other_direct_cost` | boolean | No | Whether this is an other direct cost. False by default. |
| `chargeable_by_default` | boolean | No | Whether this is chargeable by default. |
| `intacct_gl_group_account` | string | No | Intacct GL group name. |
| `is_configurable_material` | boolean | No | Whether this is a configurable material. |
| `exclude_estimated_cost_from_invoice` | boolean | No | Whether the estimated cost is excluded from the invoice when carried over from an estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Pricebook Material Markup

**Slug:** `SERVICETITAN_CREATE_PRICEBOOK_MATERIAL_MARKUP`

Create a material markup tier in the ServiceTitan pricebook: a from/to range and the markup percent applied to it. The documented body also requires an id value.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Required by the spec's create body. Send 0 for a new tier, as the spec's example body does; ServiceTitan's handling of other values is undocumented. |
| `percent` | number | Yes | Markup percent applied within the range. |
| `range_to` | number | Yes | Upper bound of the material cost range this markup tier applies to. |
| `range_from` | number | Yes | Lower bound of the material cost range this markup tier applies to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Pricebook Service

**Slug:** `SERVICETITAN_CREATE_PRICEBOOK_SERVICE`

Create a service in the ServiceTitan pricebook, with pricing, warranty, categories, and linked materials and equipment. Only code and description are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Code for the SKU. |
| `bonus` | number | No | Flat rate bonus paid for this task. |
| `hours` | number | No | Hours needed to complete this service. |
| `price` | number | No | Price of this SKU sold. |
| `active` | boolean | No | Active shows if the SKU is active or inactive. |
| `assets` | array | No | Images, videos or PDFs attached to SKU. |
| `account` | string | No | The accounting account assigned to this SKU. |
| `taxable` | boolean | No | Is this SKU taxable. |
| `is_labor` | boolean | No | Is a labor service. |
| `upgrades` | array | No | Ids of the upgrades that can be sold for this service. |
| `warranty` | object | No | Description of the warranty included in this SKU. |
| `categories` | array | No | Ids of the categories the service belongs to. |
| `description` | string | Yes | Description on the SKU that is displayed with the item. |
| `add_on_price` | number | No | The price of the SKU is sold as an add-on item. |
| `display_name` | string | No | Name that displays with the SKU. |
| `member_price` | number | No | The price if the item is sold to a member. |
| `external_data` | object | No | External data to attach to the service: applicationGuid and an externalData list of key/value pairs, both required. |
| `is_price_locked` | boolean | No | Whether the price is locked from editing. |
| `pays_commission` | boolean | No | True if this task pays commission. |
| `recommendations` | array | No | Ids of the services and materials recommended with this service. |
| `budget_cost_code` | string | No | The Budget CostCode segment for this entity. (Note: BudgetCostType should also be provided). |
| `budget_cost_type` | string | No | The Budget CostType segment for this entity (Note: BudgetCostCode should also be provided). |
| `commission_bonus` | number | No | Percentage rate bonus paid for this task. |
| `cross_sale_group` | string | No | A grouping of similar items that you'll then be able to track as a separate columns on the Technical Performance Board. |
| `service_equipment` | array | No | Array of equipment linked to the service. |
| `service_materials` | array | No | Array of materials linked to the service. |
| `add_on_member_price` | number | No | The price if the SKU is sold to a member as an add-on item. |
| `intacct_gl_group_account` | string | No | Intacct GL Group Name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Project

**Slug:** `SERVICETITAN_CREATE_PROJECT`

Create a ServiceTitan project at a location to group related jobs. Only the location is required; jobs are added afterwards with Attach Job To Project.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Project name. |
| `summary` | string | No | Project summary. HTML is accepted. |
| `status_id` | integer | No | Project status id. |
| `start_date` | string | No | Start date of the project. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `customer_id` | integer | No | ID of the project's customer. |
| `location_id` | integer | Yes | ID of the project's location. |
| `custom_fields` | array | No | Project record's custom fields. |
| `external_data` | object | No | Optional model that contains a list of external data items that should be attached to this project. |
| `sub_status_id` | integer | No | Project sub status id. |
| `project_type_id` | integer | No | ID of the project's type. |
| `business_unit_ids` | array | No | IDs of business units for the project. |
| `project_manager_ids` | array | No | IDs of the project's managers. |
| `actual_completion_date` | string | No | Actual completion date of the project. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `target_completion_date` | string | No | Target completion date of the project. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Project Note

**Slug:** `SERVICETITAN_CREATE_PROJECT_NOTE`

Add a note to a ServiceTitan project, optionally pinned to the top.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | Yes | Text content of the project note. Must not be empty. |
| `pin_to_top` | boolean | No | Whether to pin job note to the top. |
| `project_id` | integer | Yes | ID of the project. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Proposal Template

**Slug:** `SERVICETITAN_CREATE_PROPOSAL_TEMPLATE`

Create a proposal template in ServiceTitan that assigns an estimate template to each option of a proposal type. Each proposal type option may appear only once in estimate_assignments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the proposal template. |
| `active` | boolean | No | Whether the template is active. |
| `status` | string ("Publish" | "Draft") | No | Publication status: Publish or Draft. |
| `description` | string | No | Description of the proposal template. |
| `proposal_type_id` | integer | Yes | Id of the proposal type the template belongs to, from the proposal types list. |
| `business_unit_ids` | array | No | Ids of the business units the template is available to. |
| `estimate_assignments` | array | Yes | Maps proposal type options to estimate templates, each with proposalTypeOptionId, estimateTemplateId and order. Each proposalTypeOptionId must be unique within the list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Purchase Order

**Slug:** `SERVICETITAN_CREATE_PURCHASE_ORDER`

Create a purchase order in ServiceTitan for items ordered from a vendor. vendor_id, type_id, business_unit_id and inventory_location_id name existing records, and only the id of the new purchase order is returned.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | Yes | Tax of the purchase order. |
| `date` | string | Yes | Date of the purchase order. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `memo` | string | No | Summary or memo for this purchase order. |
| `items` | array | Yes | Items of the purchase order. |
| `job_id` | integer | No | Id of the job for this purchase order. When omitted, a non-job purchase order is created. |
| `ship_to` | object | Yes | Address the purchase order is shipped to: description and address. |
| `type_id` | integer | Yes | Id of the purchase order type for this purchase order. |
| `shipping` | number | Yes | Shipping cost of the purchase order. |
| `vendor_id` | integer | Yes | Id of the vendor for this purchase order. |
| `project_id` | integer | No | Id of the project for this purchase order. |
| `required_on` | string | Yes | Date the purchase order is required on. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `technician_id` | integer | No | Id of the technician for this purchase order. |
| `budget_code_id` | integer | No | Id of the budget code for this purchase order. |
| `business_unit_id` | integer | Yes | Id of the business unit for this purchase order. |
| `inventory_location_id` | integer | Yes | Id of the inventory location for this purchase order. |
| `vendor_invoice_number` | string | No | Vendor invoice number. Provide it for auto-received purchase orders. |
| `impacts_technician_payroll` | boolean | Yes | Whether this purchase order impacts the technician's payroll. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Purchase Order Markup

**Slug:** `SERVICETITAN_CREATE_PURCHASE_ORDER_MARKUP`

Create a purchase order markup tier in ServiceTitan: a from/to range and the markup percent applied to it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `percent` | number | Yes | Markup percent applied within the range. |
| `range_to` | number | Yes | Upper bound of the range this markup tier applies to. |
| `range_from` | number | Yes | Lower bound of the range this markup tier applies to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Purchase Order Type

**Slug:** `SERVICETITAN_CREATE_PURCHASE_ORDER_TYPE`

Create a purchase order type in ServiceTitan, with its receiving, tax, payroll, and alert settings. Most settings are required, not optional.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the Purchase Order Type. |
| `active` | boolean | Yes | Whether the purchase order type is active. |
| `is_default` | boolean | Yes | Whether this type is the default purchase order type. |
| `skip_weekends` | boolean | Yes | Whether weekends are skipped when the default required date is calculated. |
| `alert_settings` | object | Yes | Alert definition for the Purchase Order Type. All four email flags are required. |
| `landed_cost_method` | string ("None" | "ByValue") | No | Landed cost method for this PO type: None or ByValue. |
| `include_in_po_screen` | boolean | Yes | Whether the type is included in the Purchase Order screen. |
| `include_in_sales_tax` | boolean | Yes | Whether the purchase order total is included in the sales tax calculation. |
| `automatically_receive` | boolean | Yes | Whether purchase orders of this type are received automatically. |
| `display_to_technician` | boolean | Yes | Whether the type is shown to technicians on mobile. |
| `prevent_job_detachment` | boolean | No | When enabled, once a Job is set on a PO of this type it cannot be cleared. |
| `is_default_for_consignment` | boolean | Yes | Whether this type is the default for consignment. |
| `require_job_before_receipt` | boolean | Yes | Whether a job must be set before a purchase order of this type is received. |
| `allow_technicians_to_send_po` | boolean | Yes | Allow permitted technicians to send and receive POs of this type. |
| `exclude_tax_from_job_costing` | boolean | Yes | Whether tax on purchase orders of this type is excluded from job costing. |
| `impact_to_technician_payroll` | boolean | Yes | Default Selection for Impact to Technician Payroll on Purchase Order. |
| `include_tax_in_fully_landed_cost` | boolean | No | Whether to include tax in fully landed cost. |
| `default_required_date_days_offset` | integer | Yes | Default number of days to offset required date. |
| `copy_purchase_order_items_to_invoice_when_received` | boolean | Yes | Whether the items are copied to the invoice when the purchase order is received. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Subtask

**Slug:** `SERVICETITAN_CREATE_SUBTASK`

Create a subtask under an existing task in ServiceTitan Task Management, assigned to an employee. The documented response has no subtask id; it returns parent_task_id and subtask_number.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Title of the subtask. |
| `task_id` | integer | Yes | Id of the parent task. |
| `is_closed` | boolean | Yes | Whether the subtask is created already closed. Send false for a new open subtask. |
| `due_date_time` | string | No | Due date of the subtask. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `assigned_to_id` | integer | Yes | Id of the employee the subtask is assigned to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Tag Type

**Slug:** `SERVICETITAN_CREATE_TAG_TYPE`

Create a tag type in ServiceTitan with a name and a hex color; returns the new tag type id. Keep the name to 30 characters or fewer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | No | Code associated with the tag type, at most 20 characters. |
| `name` | string | Yes | Name of the tag type. The ServiceTitan guide asks for 30 characters or fewer; the spec sets no limit. |
| `color` | string | Yes | Color of the tag type as a 6-digit hex string, for example #FF0000. |
| `importance` | string ("Medium" | "High") | No | Importance of the tag type: Medium or High. |
| `is_conversion_opportunity` | boolean | No | Whether tags of this type count as a sales opportunity. |
| `is_visible_on_dispatch_board` | boolean | No | Whether tags of this type are shown on the dispatch board. |
| `allow_to_use_on_timesheet_activity` | boolean | No | Whether tags of this type may be used on timesheet activities. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Task

**Slug:** `SERVICETITAN_CREATE_TASK`

Create an office task in ServiceTitan Task Management, assigned to an employee. The type, source, business unit and employee ids come from GET_TASK_REFERENCE_DATA. These are Task Management tasks, not the invoice workflow tasks of CREATE_INVOICE_TASK / LIST_INVOICE_TASKS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Title of the task. |
| `job_id` | integer | No | Id of the job the task relates to. |
| `status` | string ("ToDo" | "InProgress" | "OnHold" | "Canceled" | "Completed") | No | Task status: ToDo, InProgress, OnHold, Canceled or Completed. |
| `priority` | string ("Low" | "Normal" | "High" | "Urgent") | Yes | Task priority: Low, Normal, High or Urgent. |
| `is_closed` | boolean | Yes | Whether the task is created already closed. Send false for a new open task. |
| `project_id` | integer | No | Id of the project the task relates to. |
| `started_on` | string | No | When work on the task started. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `complete_by` | string | No | Due date of the task. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `customer_id` | integer | No | Id of the customer the task relates to. |
| `description` | string | No | Full description of the task. |
| `reported_date` | string | Yes | When the task was reported. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `assigned_to_id` | integer | Yes | Id of the employee the task is assigned to. |
| `reported_by_id` | integer | Yes | Id of the employee who reported the task. |
| `business_unit_id` | integer | Yes | Id of the business unit the task belongs to. |
| `employee_task_type_id` | integer | Yes | Id of the task type, from the task management data. |
| `involved_employee_ids` | array | No | Ids of other employees involved in the task. |
| `employee_task_source_id` | integer | Yes | Id of the task source, from the task management data. |
| `employee_task_resolution_id` | integer | No | Id of the task resolution, from the task management data. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Team

**Slug:** `SERVICETITAN_CREATE_TEAM`

Create a ServiceTitan dispatch team with a name and active flag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the team. |
| `active` | boolean | Yes | Whether the team is enabled. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Technician

**Slug:** `SERVICETITAN_CREATE_TECHNICIAN`

Create a field technician in ServiceTitan with a role, positions and license type; returns the new technician id. Get role_id from LIST_USER_ROLES.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bio` | string | No | Biography, as HTML. |
| `home` | object | No | Home address. street and city are required when it is sent. |
| `memo` | string | No | Memo, as HTML. |
| `name` | string | Yes | Technician name. |
| `email` | string | No | Email address. |
| `login` | string | No | Login (user name). |
| `role_id` | integer | Yes | Id of the user role, from LIST_USER_ROLES. |
| `password` | string | No | Login password for the new technician user. It is the new user's password, not a credential of this connection. |
| `zone_ids` | array | No | Ids of all of the technician's zones. |
| `positions` | array | Yes | Company positions of the technician. |
| `team_name` | string | No | Team name (not the team id). |
| `daily_goal` | number | No | Daily revenue goal. |
| `job_filter` | string ("AllScheduledDispatchedWorking" | "NextScheduledDispatchedWorking" | "DispatchedWorking" | "NextScheduledDispatchedWorkingToday" | "AllScheduledDispatchedWorkingToday" | "AllScheduledDispatchedWorkingFiveDays" | "NextScheduledDispatchedWorkingTodayTomorrow" | "AllScheduledDispatchedWorkingTodayTomorrow" | "Next2ScheduledDispatchedWorkingToday") | No | Upcoming appointment visibility. |
| `aad_user_id` | string | No | Azure Active Directory user id. |
| `burden_rate` | number | No | Hourly burden rate. |
| `license_type` | string ("NonManagedTech" | "ManagedTech" | "ManagedInstaller") | Yes | License type. |
| `main_zone_id` | integer | No | Id of the technician's main zone. |
| `phone_number` | string | No | Technician's phone number. |
| `custom_fields` | array | No | Custom field values of the technician, each with typeId and value. |
| `business_unit_id` | integer | No | Id of the business unit, from LIST_BUSINESS_UNITS. |
| `project_label_ids` | array | No | Project label ids. Requires the 'Budget vs Actual' feature flag, otherwise HTTP 400. |
| `account_creation_method` | string ("CreateLater" | "SendInvite" | "AssignLoginAndPassword") | Yes | How the login is set up: CreateLater (no login yet), SendInvite (sends an invitation) or AssignLoginAndPassword (uses login and password). The spec does not say which fields each method requires. |
| `job_history_date_filter` | string ("AllJobs" | "LastThreeDays" | "LastSevenDays" | "LastMonth") | No | Appointment history visibility. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Technician Rating

**Slug:** `SERVICETITAN_CREATE_TECHNICIAN_RATING`

Record a rating from 0 to 10 for a technician on a specific job in ServiceTitan. If that technician and job already have a rating, it is overwritten with the new score.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Id of the job the rating is tied to. |
| `rating` | number | Yes | Rating from 0 to 10. |
| `technician_id` | integer | Yes | Id of the technician being rated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Technician Shift

**Slug:** `SERVICETITAN_CREATE_TECHNICIAN_SHIFT`

Create a ServiceTitan shift (Normal, OnCall or TimeOff) for one or more technicians, optionally repeating daily or weekly. Returns the list of shifts created.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | Yes | When the shift ends. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `note` | string | No | Longer explanation of the shift. |
| `start` | string | Yes | When the shift begins. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `title` | string | Yes | Title of the shift. |
| `shift_days` | string | No | Days to repeat the shift on, as one string. The documented example is 'Monday, Wednesday, Friday'; the format is not described further. |
| `shift_type` | string ("Normal" | "OnCall" | "TimeOff") | Yes | Type of shift. |
| `repeat_type` | string ("Never" | "Daily" | "Weekly") | Yes | How the shift repeats. |
| `technician_ids` | array | Yes | IDs of the technicians to create the shift for. |
| `repeat_end_date` | string | No | Date-time to stop repeating on. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `repeat_interval` | integer | No | Repeat every N days or weeks, according to repeat_type. |
| `timesheet_code_id` | integer | No | Timesheet code ID of the shift. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Technician Skill

**Slug:** `SERVICETITAN_CREATE_TECHNICIAN_SKILL`

Create a new skill in ServiceTitan and assign it to one technician in the same call. To give a technician skills that already exist use Assign Technician Skills.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the skill. |
| `active` | boolean | Yes | Whether the skill is active. |
| `technician_id` | integer | Yes | ID of the technician to assign the new skill to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Timesheet Activity

**Slug:** `SERVICETITAN_CREATE_TIMESHEET_ACTIVITY`

Create a timesheet activity, a block of recorded time for one employee or technician, in ServiceTitan and return its id. employee_id, employee_type, activity_type_id, start_time and tag_type_ids are required; end_time is optional.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Memo or notes related to the activity. |
| `job_id` | integer | No | Id of the job associated with the activity. |
| `end_time` | string | No | End time of the activity. Optional. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `project_id` | integer | No | Id of the project associated with the activity. |
| `start_time` | string | Yes | Start time of the activity. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `employee_id` | integer | Yes | Id of the employee associated with the activity. |
| `miles_driven` | number | No | Miles driven associated with the activity. |
| `tag_type_ids` | array | Yes | Ids of the tag types associated with the activity. Required by the spec; whether an empty list is accepted is not documented. |
| `employee_type` | string ("Technician" | "Employee") | Yes | Type of the employee that employee_id refers to. |
| `labor_type_id` | integer | No | Id of the labor type associated with the activity; see LIST_LABOR_TYPES. |
| `project_label` | string | No | Label of the project associated with the activity. |
| `appointment_id` | integer | No | Id of the appointment associated with the activity. |
| `budget_code_id` | integer | No | Id of the budget code associated with the activity. |
| `activity_type_id` | integer | Yes | Id of the activity type; see LIST_TIMESHEET_ACTIVITY_TYPES. |
| `budget_code_name` | string | No | Name of the budget code associated with the activity. |
| `non_job_event_assignment_id` | integer | No | Id of the non-job event assignment associated with the activity. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Truck

**Slug:** `SERVICETITAN_CREATE_TRUCK`

Create a truck inventory location in ServiceTitan. warehouse_id and name are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Memo of the truck. |
| `name` | string | Yes | Truck name. |
| `template_id` | integer | No | Id of the inventory template for this truck. |
| `warehouse_id` | integer | Yes | Id of the warehouse for this truck. |
| `external_data` | object | No | External data items to attach to this truck. applicationGuid and externalData are required. |
| `technician_ids` | array | No | Ids of the technicians to associate with this truck. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Vendor

**Slug:** `SERVICETITAN_CREATE_VENDOR`

Create an inventory vendor (supplier) in ServiceTitan. The vendor's main address is required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fax` | string | No | Contact fax of the vendor. |
| `memo` | string | No | Memo of the vendor. |
| `name` | string | Yes | Name of the vendor. |
| `tags` | array | No | Tags of the vendor, each with tagTypeId. |
| `email` | string | No | Contact email of the vendor. |
| `phone` | string | No | Contact phone of the vendor. |
| `active` | boolean | Yes | Whether the vendor is active. |
| `address` | object | Yes | Address of the vendor. street, unit, city, state, zip and country are all required. |
| `tax_rate` | number | Yes | Default tax rate. |
| `last_name` | string | No | Contact last name. |
| `first_name` | string | No | Contact first name. |
| `external_data` | object | No | External data items to attach to this vendor: applicationGuid and an externalData list of key and value. |
| `delivery_option` | string ("Manual" | "EmailAsExcel" | "EmailAsPdf" | "EmailAsPdfRollupView" | "Electronic" | "MarkAsSent" | "EmailAsExcelAndPdf" | "VendorPortal") | No | Default purchase order delivery method. |
| `payment_term_id` | integer | No | Id of the payment term. |
| `vendor_contacts` | array | No | Contacts at the vendor who receive purchase order emails, each with name and email. |
| `remittance_vendor_id` | integer | No | Id of the remittance vendor. |
| `is_truck_replenishment` | boolean | Yes | Whether this vendor is used for truck replenishment. |
| `vendor_quickbooks_item` | string | No | Vendor QuickBooks item. |
| `restricted_mobile_creation` | boolean | Yes | Whether purchase order creation on mobile is restricted. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Web Booking Attribution

**Slug:** `SERVICETITAN_CREATE_WEB_BOOKING_ATTRIBUTION`

Attribute an existing booking to a web session in ServiceTitan Marketing Ads. It records attribution only; the booking must already exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `booking_id` | integer | Yes | Id of the booking to attribute to the web session. |
| `web_session_data` | object | Yes | The web session to attribute to. landingPageUrl and referrerUrl are required; click ids (gclid, fbclid, msclkid and others) and UTM values are optional. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Web Lead Form Attribution

**Slug:** `SERVICETITAN_CREATE_WEB_LEAD_FORM_ATTRIBUTION`

Attribute an existing lead captured from a web form to a web session in ServiceTitan Marketing Ads. It records attribution only; the lead must already exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lead_id` | integer | Yes | Id of the lead, captured from a web form, to attribute to the web session. |
| `web_session_data` | object | Yes | The web session to attribute to. landingPageUrl and referrerUrl are required; click ids (gclid, fbclid, msclkid and others) and UTM values are optional. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Zone

**Slug:** `SERVICETITAN_CREATE_ZONE`

Create a ServiceTitan dispatch zone from zip codes, cities, territory numbers, service days and business units.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the zone. |
| `zips` | array | No | Zip codes assigned to the zone. |
| `cities` | array | No | Cities assigned to the zone. |
| `locn_numbers` | array | No | LOCN numbers assigned to the zone. |
| `service_days_ids` | array | No | IDs of the service days assigned to the zone. |
| `business_unit_ids` | array | No | IDs of the business units assigned to the zone. |
| `territory_numbers` | array | No | Territory numbers assigned to the zone. |
| `service_days_enabled` | boolean | No | Whether the service days option is enabled. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Deactivate Employee Account

**Slug:** `SERVICETITAN_DEACTIVATE_EMPLOYEE_ACCOUNT`

Deactivate a ServiceTitan employee's login account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `employee_id` | integer | Yes | Id of the employee whose login account to deactivate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Deactivate Estimate Template

**Slug:** `SERVICETITAN_DEACTIVATE_ESTIMATE_TEMPLATE`

Deactivate an estimate template in ServiceTitan. The template is not removed: it becomes inactive and stops appearing in active-only lists.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `estimate_template_id` | integer | Yes | Id of the estimate template. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Deactivate Proposal Template

**Slug:** `SERVICETITAN_DEACTIVATE_PROPOSAL_TEMPLATE`

Deactivate a proposal template in ServiceTitan. The template is not removed and can be reactivated by updating it with active true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `proposal_template_id` | integer | Yes | Id of the proposal template. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Deactivate Technician Account

**Slug:** `SERVICETITAN_DEACTIVATE_TECHNICIAN_ACCOUNT`

Deactivate a ServiceTitan technician's login account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_id` | integer | Yes | Id of the technician whose login account to deactivate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Appointment

**Slug:** `SERVICETITAN_DELETE_APPOINTMENT`

Delete a ServiceTitan job appointment by ID. The API refuses to delete the only appointment on a job or one with timesheets; an individual appointment cannot be canceled, only deleted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | ID of the job appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Booking Contact

**Slug:** `SERVICETITAN_DELETE_BOOKING_CONTACT`

Remove one contact entry from a booking in ServiceTitan for a given booking provider. The booking itself is kept.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `booking_id` | integer | Yes | Id of the booking. |
| `contact_id` | integer | Yes | Id of the contact entry, from the matching contacts list tool. This is a numeric id, not a contact GUID. |
| `booking_provider_id` | integer | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Contact

**Slug:** `SERVICETITAN_DELETE_CONTACT`

Delete a contact in ServiceTitan by its GUID. To keep the record but hide it, set is_archived with UPDATE_CONTACT instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Contact Method

**Slug:** `SERVICETITAN_DELETE_CONTACT_METHOD`

Delete one contact method from a contact in ServiceTitan. contact_id is the GUID of a person contact from CREATE_CONTACT or LIST_CONTACTS; to add a phone or email directly to a customer, location or booking use CREATE_CUSTOMER_CONTACT, CREATE_LOCATION_CONTACT or CREATE_BOOKING_CONTACT.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `contact_method_id` | string | Yes | GUID of the contact method, from LIST_CONTACT_METHODS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Contact Relationship

**Slug:** `SERVICETITAN_DELETE_CONTACT_RELATIONSHIP`

Remove the link between a contact and a customer, location or booking in ServiceTitan. The contact itself is kept.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `related_entity_id` | integer | Yes | Id of the customer, location or booking on the other side of the relationship. |
| `relationship_type` | string ("customer" | "location" | "booking") | Yes | What the contact is linked to: customer, location or booking. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Customer Contact

**Slug:** `SERVICETITAN_DELETE_CUSTOMER_CONTACT`

Remove one contact entry from a customer in ServiceTitan.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | integer | Yes | Id of the contact entry, from the matching contacts list tool. This is a numeric id, not a contact GUID. |
| `customer_id` | integer | Yes | Id of the customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Customer Note

**Slug:** `SERVICETITAN_DELETE_CUSTOMER_NOTE`

Delete one note from a customer in ServiceTitan.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note_id` | integer | Yes | Id of the note to delete, from the matching notes list tool. |
| `customer_id` | integer | Yes | Id of the customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Equipment System

**Slug:** `SERVICETITAN_DELETE_EQUIPMENT_SYSTEM`

Delete a ServiceTitan equipment system by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `equipment_system_id` | integer | Yes | Id of the equipment system to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Estimate Item

**Slug:** `SERVICETITAN_DELETE_ESTIMATE_ITEM`

Remove one line item from an estimate in ServiceTitan. The removal is permanent.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item_id` | integer | Yes | Id of the estimate line item to remove. |
| `estimate_id` | integer | Yes | Id of the estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Finding Attachment

**Slug:** `SERVICETITAN_DELETE_FINDING_ATTACHMENT`

Remove an attachment from a ServiceTitan finding, by finding id and attachment id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `finding_id` | integer | Yes | Id of the finding that owns the attachment. |
| `attachment_id` | integer | Yes | Id of the finding attachment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Gross Pay Item

**Slug:** `SERVICETITAN_DELETE_GROSS_PAY_ITEM`

Delete a gross pay item in ServiceTitan by its id. The spec documents no response body and no way to restore a deleted item.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `gross_pay_item_id` | integer | Yes | Id of the gross pay item. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Invoice Item

**Slug:** `SERVICETITAN_DELETE_INVOICE_ITEM`

Delete one line item from an invoice in ServiceTitan. The item is removed from the invoice and its totals; the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item_id` | integer | Yes | Id of the invoice item. |
| `invoice_id` | integer | Yes | Id of the invoice. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Job Attachment

**Slug:** `SERVICETITAN_DELETE_JOB_ATTACHMENT`

Delete one attachment from a job in ServiceTitan. The spec documents no way to restore a deleted attachment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Id of the job. |
| `attachment_id` | integer | Yes | Id of the job attachment to delete. The spec describes it as the id returned when the attachment was created. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Journal Entry

**Slug:** `SERVICETITAN_DELETE_JOURNAL_ENTRY`

Delete a journal entry in ServiceTitan. Only external entries, those created through the API, can be deleted; the spec documents no way to restore one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `journal_entry_id` | string | Yes | Id of the journal entry (a GUID string), from LIST_JOURNAL_ENTRIES. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Location Contact

**Slug:** `SERVICETITAN_DELETE_LOCATION_CONTACT`

Remove one contact entry from a location in ServiceTitan.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | integer | Yes | Id of the contact entry, from the matching contacts list tool. This is a numeric id, not a contact GUID. |
| `location_id` | integer | Yes | Id of the location. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Location Note

**Slug:** `SERVICETITAN_DELETE_LOCATION_NOTE`

Delete one note from a location in ServiceTitan.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note_id` | integer | Yes | Id of the note to delete, from the matching notes list tool. |
| `location_id` | integer | Yes | Id of the location. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Non Job Appointment

**Slug:** `SERVICETITAN_DELETE_NON_JOB_APPOINTMENT`

Delete a ServiceTitan non-job appointment by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `non_job_appointment_id` | integer | Yes | ID of the non-job appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Payroll Adjustment

**Slug:** `SERVICETITAN_DELETE_PAYROLL_ADJUSTMENT`

Delete a payroll adjustment in ServiceTitan by its id. employee_type is required and must match the adjustment's owner; the spec documents no way to restore it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `employee_type` | string ("Technician" | "Employee") | Yes | Type of the person the adjustment belongs to: Technician or Employee. Required. |
| `payroll_adjustment_id` | integer | Yes | Id of the payroll adjustment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Pricebook Category

**Slug:** `SERVICETITAN_DELETE_PRICEBOOK_CATEGORY`

Delete a category from the ServiceTitan pricebook by id. To hide a category without deleting it, use UPDATE_PRICEBOOK_CATEGORY with active set to false.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `category_id` | integer | Yes | Id of the pricebook category to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Pricebook Discount or Fee

**Slug:** `SERVICETITAN_DELETE_PRICEBOOK_DISCOUNT_OR_FEE`

Delete a discount or fee from the ServiceTitan pricebook by id. To hide it without deleting, use UPDATE_PRICEBOOK_DISCOUNT_OR_FEE with active set to false.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `discount_or_fee_id` | integer | Yes | Id of the discount or fee to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Pricebook Equipment

**Slug:** `SERVICETITAN_DELETE_PRICEBOOK_EQUIPMENT`

Delete an equipment item from the ServiceTitan pricebook catalog by id. To hide it without deleting, use UPDATE_PRICEBOOK_EQUIPMENT with active set to false.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `equipment_id` | integer | Yes | Id of the pricebook equipment item to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Pricebook Material

**Slug:** `SERVICETITAN_DELETE_PRICEBOOK_MATERIAL`

Delete a material from the ServiceTitan pricebook by id. To hide it without deleting, use UPDATE_PRICEBOOK_MATERIAL with active set to false.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `material_id` | integer | Yes | Id of the pricebook material to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Pricebook Service

**Slug:** `SERVICETITAN_DELETE_PRICEBOOK_SERVICE`

Delete a service from the ServiceTitan pricebook by id. To hide it without deleting, use UPDATE_PRICEBOOK_SERVICE with active set to false.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `service_id` | integer | Yes | Id of the pricebook service to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Project Daily Log Attachment

**Slug:** `SERVICETITAN_DELETE_PROJECT_DAILY_LOG_ATTACHMENT`

Delete one attachment from a ServiceTitan project daily log. The file is removed from the log.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | integer | Yes | The project ID. |
| `daily_log_id` | integer | Yes | ID of the daily log. |
| `attachment_id` | integer | Yes | The attachment ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Purchase Order Markup

**Slug:** `SERVICETITAN_DELETE_PURCHASE_ORDER_MARKUP`

Delete a ServiceTitan purchase order markup tier by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `markup_id` | integer | Yes | Id of the purchase order markup to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Team

**Slug:** `SERVICETITAN_DELETE_TEAM`

Delete a ServiceTitan dispatch team by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `team_id` | integer | Yes | ID of the team. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Technician Shift

**Slug:** `SERVICETITAN_DELETE_TECHNICIAN_SHIFT`

Delete one ServiceTitan technician shift by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_shift_id` | integer | Yes | ID of the technician shift. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Technician Skill

**Slug:** `SERVICETITAN_DELETE_TECHNICIAN_SKILL`

Remove a skill from a ServiceTitan technician by deleting the technician-skill association, whose ID has the form {technicianId}_{skillId}.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_skill_id` | string | Yes | ID of the technician skill, a string of the form {technicianId}_{skillId}. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Timesheet Activity

**Slug:** `SERVICETITAN_DELETE_TIMESHEET_ACTIVITY`

Delete a timesheet activity in ServiceTitan by its id. The recorded time is removed; the spec documents no way to restore it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `activity_id` | integer | Yes | Id of the timesheet activity. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Zone

**Slug:** `SERVICETITAN_DELETE_ZONE`

Delete a ServiceTitan dispatch zone by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `zone_id` | integer | Yes | ID of the zone. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Detach Job Equipment

**Slug:** `SERVICETITAN_DETACH_JOB_EQUIPMENT`

Detach one or more equipment items from a ServiceTitan job in a single call. Returns no content. The spec does not say which equipment ids these are; they are not the equipment system ids of the equipment-system tools, and whether installed-equipment ids (LIST_INSTALLED_EQUIPMENT) or pricebook equipment ids (LIST_PRICEBOOK_EQUIPMENT) are meant is unverified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job. |
| `equipment_ids` | array | Yes | IDs of the equipment items to detach from the job. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Detach Job from Project

**Slug:** `SERVICETITAN_DETACH_JOB_FROM_PROJECT`

Detach a ServiceTitan job from whichever project it belongs to. Only the job ID is given; the project is not named.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job to detach from its project. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Dismiss Booking

**Slug:** `SERVICETITAN_DISMISS_BOOKING`

Dismiss a booking in ServiceTitan for a given booking provider, marking it as not converted to a job. Optionally record a call reason and a memo; no way to undo this is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `booking_id` | integer | Yes | Id of the booking. |
| `call_reason_id` | integer | No | Id of the call reason recorded as the reason for dismissing the booking, from LIST_CALL_REASONS. |
| `dismissing_memo` | string | No | Free-text memo explaining why the booking was dismissed. |
| `booking_provider_id` | string | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Dismiss Estimate

**Slug:** `SERVICETITAN_DISMISS_ESTIMATE`

Mark an estimate as dismissed in ServiceTitan, for a quote the customer will not accept. The estimate is kept, with status Dismissed. No operation to reopen a dismissed estimate is documented; UPDATE_ESTIMATE takes a status field, but whether setting it to Open undoes a dismissal is not documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `estimate_id` | integer | Yes | Id of the estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Dismiss Lead

**Slug:** `SERVICETITAN_DISMISS_LEAD`

Dismiss a lead in ServiceTitan so it needs no further follow-up. A call reason id is required as the dismissal reason; no way to reopen a lead is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lead_id` | integer | Yes | Id of the lead. |
| `dismissing_reason_id` | integer | Yes | Id of the call reason recorded as the reason for dismissing the lead, from LIST_CALL_REASONS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Appointment Assignments

**Slug:** `SERVICETITAN_EXPORT_APPOINTMENT_ASSIGNMENTS`

Export ServiceTitan technician-to-appointment assignments in bulk as a continuation feed. Use it for full or incremental sync; use List Appointment Assignments when you need filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Appointments

**Slug:** `SERVICETITAN_EXPORT_APPOINTMENTS`

Export ServiceTitan job appointments in bulk as a continuation feed. Use it for full or incremental sync; use List Appointments when you need filters beyond active status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only), False (inactive only), Any (both). When omitted, this operation returns both active and inactive items. |
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Bookings

**Slug:** `SERVICETITAN_EXPORT_BOOKINGS`

Export bookings from ServiceTitan as a change feed for bulk sync, one batch per call. Pass the returned continue_from back to get the next batch; use LIST_BOOKINGS for filtered lookups.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Business Units

**Slug:** `SERVICETITAN_EXPORT_BUSINESS_UNITS`

Export feed of business units from ServiceTitan for bulk sync. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_BUSINESS_UNITS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Calls

**Slug:** `SERVICETITAN_EXPORT_CALLS`

Export feed of phone calls from ServiceTitan for bulk sync; each record carries an active flag. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_CALLS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Customer Contacts

**Slug:** `SERVICETITAN_EXPORT_CUSTOMER_CONTACTS`

Export customer contact entries from ServiceTitan as a change feed for bulk sync, one batch per call. Pass the returned continue_from back to get the next batch. Use LIST_CUSTOMER_CONTACTS for a filtered lookup across customers, or LIST_CUSTOMER_CONTACTS for one customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Customers

**Slug:** `SERVICETITAN_EXPORT_CUSTOMERS`

Export customers from ServiceTitan as a change feed for bulk sync, one batch per call. Pass the returned continue_from back to get the next batch; use LIST_CUSTOMERS for filtered lookups.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Employees

**Slug:** `SERVICETITAN_EXPORT_EMPLOYEES`

Export feed of employees from ServiceTitan for bulk sync. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_EMPLOYEES instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Equipment Systems

**Slug:** `SERVICETITAN_EXPORT_EQUIPMENT_SYSTEMS`

Export equipment systems from ServiceTitan as a continuation feed for bulk sync. Pass the returned continue_from token back to get the next batch; set include_recent_changes to receive the most recent changes sooner. Use LIST_EQUIPMENT_SYSTEMS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Estimates

**Slug:** `SERVICETITAN_EXPORT_ESTIMATES`

Export estimates from ServiceTitan as a change feed for bulk sync, one batch per call. Pass the returned continue_from on the next call; has_more false means the feed is caught up. Use LIST_ESTIMATES for filtered lookups.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Gross Pay Items

**Slug:** `SERVICETITAN_EXPORT_GROSS_PAY_ITEMS`

Export gross pay items from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_GROSS_PAY_ITEMS instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Installed Equipment

**Slug:** `SERVICETITAN_EXPORT_INSTALLED_EQUIPMENT`

Export installed equipment records from ServiceTitan as a continuation feed for bulk sync. Pass the returned continue_from token back to get the next batch; set include_recent_changes to receive the most recent changes sooner. Use LIST_INSTALLED_EQUIPMENT instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Inventory Adjustments

**Slug:** `SERVICETITAN_EXPORT_INVENTORY_ADJUSTMENTS`

Export inventory adjustments from ServiceTitan as a continuation feed for bulk sync, with no filters. Pass the returned continue_from token back to get the next batch; use LIST_INVENTORY_ADJUSTMENTS for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Inventory Bills

**Slug:** `SERVICETITAN_EXPORT_INVENTORY_BILLS`

Export inventory bills from ServiceTitan as a continuation feed for bulk sync: returns active, inactive and deleted records with no filters. Pass the returned continue_from on the next call; use LIST_INVENTORY_BILLS instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Inventory Returns

**Slug:** `SERVICETITAN_EXPORT_INVENTORY_RETURNS`

Export vendor returns from ServiceTitan inventory as a continuation feed for bulk sync, with no filters. Pass the returned continue_from token back to get the next batch. Use LIST_INVENTORY_RETURNS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Inventory Transfers

**Slug:** `SERVICETITAN_EXPORT_INVENTORY_TRANSFERS`

Export inventory transfers from ServiceTitan as a continuation feed for bulk sync, with no filters. Pass the returned continue_from token back to get the next batch. Use LIST_INVENTORY_TRANSFERS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Invoice Items

**Slug:** `SERVICETITAN_EXPORT_INVOICE_ITEMS`

Export invoice line items from ServiceTitan as a continuation feed for bulk sync: returns active, inactive and deleted records with no filters. Pass the returned continue_from on the next call and keep it to pick up later changes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Invoices

**Slug:** `SERVICETITAN_EXPORT_INVOICES`

Export invoices from ServiceTitan as a continuation feed for bulk sync: returns active, inactive and deleted records with no filters. Pass the returned continue_from on the next call; use LIST_INVOICES instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Invoice Templates

**Slug:** `SERVICETITAN_EXPORT_INVOICE_TEMPLATES`

Export feed of membership invoice templates from ServiceTitan for bulk sync; the only way to enumerate templates without knowing their ids. The feed takes no filters and each record carries an active flag; pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_INVOICE_TEMPLATES or GET_INVOICE_TEMPLATE when the template ids are already known.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Job Canceled Logs

**Slug:** `SERVICETITAN_EXPORT_JOB_CANCELED_LOGS`

Export ServiceTitan job canceled logs (who canceled which job, when, and why) in bulk as a continuation feed. For the canceled logs of one job use LIST_JOB_CANCELED_LOGS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Job History

**Slug:** `SERVICETITAN_EXPORT_JOB_HISTORY`

Export the status history of all ServiceTitan jobs in bulk as a continuation feed. For one job use Get Job History.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Job Notes

**Slug:** `SERVICETITAN_EXPORT_JOB_NOTES`

Export notes from all ServiceTitan jobs in bulk as a continuation feed. For the notes of one job use List Job Notes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Jobs

**Slug:** `SERVICETITAN_EXPORT_JOBS`

Export ServiceTitan jobs in bulk as a continuation feed that includes active, inactive and deleted records. Use it for full or incremental sync; use List Jobs when you need filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Leads

**Slug:** `SERVICETITAN_EXPORT_LEADS`

Export leads from ServiceTitan as a change feed for bulk sync, one batch per call. Pass the returned continue_from back to get the next batch; use LIST_LEADS for filtered lookups.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Location Contacts

**Slug:** `SERVICETITAN_EXPORT_LOCATION_CONTACTS`

Export location contact entries from ServiceTitan as a change feed for bulk sync, one batch per call. Pass the returned continue_from back to get the next batch. Use LIST_LOCATION_CONTACTS for a filtered lookup across locations, or LIST_LOCATION_CONTACTS for one location.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Locations

**Slug:** `SERVICETITAN_EXPORT_LOCATIONS`

Export locations from ServiceTitan as a change feed for bulk sync, one batch per call. Pass the returned continue_from back to get the next batch; use LIST_LOCATIONS for filtered lookups.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Memberships

**Slug:** `SERVICETITAN_EXPORT_MEMBERSHIPS`

Export feed of customer memberships from ServiceTitan for bulk sync; the feed takes no filters and each record carries an active flag and a status. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_MEMBERSHIPS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Membership Status Changes

**Slug:** `SERVICETITAN_EXPORT_MEMBERSHIP_STATUS_CHANGES`

Export feed of customer membership status changes from ServiceTitan, across all memberships; each record gives the old and new status. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. For the history of one membership use LIST_MEMBERSHIP_STATUS_CHANGES.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Membership Types

**Slug:** `SERVICETITAN_EXPORT_MEMBERSHIP_TYPES`

Export feed of membership types from ServiceTitan for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_MEMBERSHIP_TYPES instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Payments

**Slug:** `SERVICETITAN_EXPORT_PAYMENTS`

Export customer payments from ServiceTitan as a continuation feed for bulk sync: returns active, inactive and deleted records with no filters. Pass the returned continue_from on the next call; use LIST_PAYMENTS instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Payroll Activity Codes

**Slug:** `SERVICETITAN_EXPORT_PAYROLL_ACTIVITY_CODES`

Export payroll activity codes (earning codes) from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_PAYROLL_ACTIVITY_CODES instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Payroll Adjustments

**Slug:** `SERVICETITAN_EXPORT_PAYROLL_ADJUSTMENTS`

Export payroll adjustments from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_PAYROLL_ADJUSTMENTS instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Payroll Job Splits

**Slug:** `SERVICETITAN_EXPORT_PAYROLL_JOB_SPLITS`

Export payroll job splits (each technician's split of a job) from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_PAYROLL_JOB_SPLITS instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Payroll Job Timesheets

**Slug:** `SERVICETITAN_EXPORT_PAYROLL_JOB_TIMESHEETS`

Export job timesheets (technician dispatch, arrival and completion times on job appointments) from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_PAYROLL_JOB_TIMESHEETS instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Payroll Settings

**Slug:** `SERVICETITAN_EXPORT_PAYROLL_SETTINGS`

Export employee and technician payroll settings from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_PAYROLL_SETTINGS instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Pricebook Categories

**Slug:** `SERVICETITAN_EXPORT_PRICEBOOK_CATEGORIES`

Export pricebook categories from ServiceTitan as a continuation feed for bulk sync. Pass the returned continue_from token back to get the next batch; records appear about 15 minutes after a change unless include_recent_changes is true. Use LIST_PRICEBOOK_CATEGORIES instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Pricebook Equipment

**Slug:** `SERVICETITAN_EXPORT_PRICEBOOK_EQUIPMENT`

Export pricebook equipment items from ServiceTitan as a continuation feed for bulk sync. Pass the returned continue_from token back to get the next batch; records appear about 15 minutes after a change unless include_recent_changes is true. Use LIST_PRICEBOOK_EQUIPMENT instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Pricebook Materials

**Slug:** `SERVICETITAN_EXPORT_PRICEBOOK_MATERIALS`

Export pricebook materials from ServiceTitan as a continuation feed for bulk sync. Pass the returned continue_from token back to get the next batch; records appear about 15 minutes after a change unless include_recent_changes is true. Use LIST_PRICEBOOK_MATERIALS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Pricebook Services

**Slug:** `SERVICETITAN_EXPORT_PRICEBOOK_SERVICES`

Export pricebook services from ServiceTitan as a continuation feed for bulk sync. Pass the returned continue_from token back to get the next batch; records appear about 15 minutes after a change unless include_recent_changes is true. Use LIST_PRICEBOOK_SERVICES instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Project Notes

**Slug:** `SERVICETITAN_EXPORT_PROJECT_NOTES`

Export notes from all ServiceTitan projects in bulk as a continuation feed. For the notes of one project use List Project Notes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Projects

**Slug:** `SERVICETITAN_EXPORT_PROJECTS`

Export ServiceTitan projects in bulk as a continuation feed that includes active, inactive and deleted records. Use it for full or incremental sync; use List Projects when you need filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Purchase Orders

**Slug:** `SERVICETITAN_EXPORT_PURCHASE_ORDERS`

Export purchase orders from ServiceTitan as a continuation feed for bulk sync; use LIST_PURCHASE_ORDERS when you need filters. Pass the returned continue_from token back to get the next batch.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Receipts

**Slug:** `SERVICETITAN_EXPORT_RECEIPTS`

Export inventory receipts from ServiceTitan as a continuation feed for bulk sync. Pass continue_from from each response to get the next batch. Use LIST_INVENTORY_RECEIPTS for filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Recurring Service Events

**Slug:** `SERVICETITAN_EXPORT_RECURRING_SERVICE_EVENTS`

Export feed of recurring service events from ServiceTitan for bulk sync; the feed takes no filters, and an event with active false has been deleted. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_RECURRING_SERVICE_EVENTS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Recurring Services

**Slug:** `SERVICETITAN_EXPORT_RECURRING_SERVICES`

Export feed of location recurring services from ServiceTitan for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_RECURRING_SERVICES instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Recurring Service Types

**Slug:** `SERVICETITAN_EXPORT_RECURRING_SERVICE_TYPES`

Export feed of recurring service types from ServiceTitan for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_RECURRING_SERVICE_TYPES instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Service Agreements

**Slug:** `SERVICETITAN_EXPORT_SERVICE_AGREEMENTS`

Export feed of service agreements from ServiceTitan for bulk sync. Returns active, inactive and deleted records; pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_SERVICE_AGREEMENTS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Tag Types

**Slug:** `SERVICETITAN_EXPORT_TAG_TYPES`

Export feed of tag types from ServiceTitan for bulk sync. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_TAG_TYPES instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Technician Ratings

**Slug:** `SERVICETITAN_EXPORT_TECHNICIAN_RATINGS`

Export technician ratings from ServiceTitan as a change feed for bulk sync, one batch per call. Pass the returned continue_from back to get the next batch. Use LIST_TECHNICIAN_RATINGS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Technicians

**Slug:** `SERVICETITAN_EXPORT_TECHNICIANS`

Export feed of technicians from ServiceTitan for bulk sync. Pass the returned continue_from on the next call, and has_more false means the feed is caught up. Use LIST_TECHNICIANS instead for a filtered, paged lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Timesheet Activities

**Slug:** `SERVICETITAN_EXPORT_TIMESHEET_ACTIVITIES`

Export timesheet activities from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_TIMESHEET_ACTIVITIES instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Timesheet Activity Categories

**Slug:** `SERVICETITAN_EXPORT_TIMESHEET_ACTIVITY_CATEGORIES`

Export timesheet activity categories from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_TIMESHEET_ACTIVITY_CATEGORIES instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Timesheet Activity Types

**Slug:** `SERVICETITAN_EXPORT_TIMESHEET_ACTIVITY_TYPES`

Export timesheet activity types from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_TIMESHEET_ACTIVITY_TYPES instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Timesheet Codes

**Slug:** `SERVICETITAN_EXPORT_TIMESHEET_CODES`

Export timesheet codes from ServiceTitan as a continuation feed for bulk sync; the feed takes no filters and each record carries an active flag. Pass the returned continue_from on the next call; use LIST_TIMESHEET_CODES instead for a filtered lookup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `continue_from` | string | No | Continuation token from the continue_from field of the previous response. Omit to start from the beginning, or pass a date such as 2020-01-01 to start from that point in time. |
| `include_recent_changes` | boolean | No | Set true to receive the most recent changes sooner. The same record can then appear again on consecutive calls. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get AP Bill

**Slug:** `SERVICETITAN_GET_AP_BILL`

Get one accounts-payable (vendor) bill in ServiceTitan by its id, including items and expense items. Use LIST_AP_BILLS to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_id` | integer | Yes | Id of the AP bill. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Appointment

**Slug:** `SERVICETITAN_GET_APPOINTMENT`

Get one ServiceTitan job appointment by its ID, including its schedule, arrival window, status and confirmation flag. Use List Appointments to find the ID from a job or project.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | ID of the job appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Arrival Window

**Slug:** `SERVICETITAN_GET_ARRIVAL_WINDOW`

Get one ServiceTitan arrival window by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `arrival_window_id` | integer | Yes | ID of the arrival window. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Arrival Window Configuration

**Slug:** `SERVICETITAN_GET_ARRIVAL_WINDOW_CONFIGURATION`

Get the tenant-wide ServiceTitan arrival window setting: whether a job's default start time is the start or the end of the chosen arrival window.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Booking

**Slug:** `SERVICETITAN_GET_BOOKING`

Get one booking in ServiceTitan by id, across all booking providers. Use GET_PROVIDER_BOOKING when the connection is restricted to a single booking provider tag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `booking_id` | integer | Yes | Id of the booking. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Booking Provider Tag

**Slug:** `SERVICETITAN_GET_BOOKING_PROVIDER_TAG`

Get one booking provider tag in ServiceTitan by its id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `booking_provider_tag_id` | integer | Yes | Id of the booking provider tag. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Business Hours

**Slug:** `SERVICETITAN_GET_BUSINESS_HOURS`

Get the ServiceTitan business hours: the open time ranges for weekdays, Saturday and Sunday. Returns one object, not a list.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Business Unit

**Slug:** `SERVICETITAN_GET_BUSINESS_UNIT`

Get one business unit in ServiceTitan by id, including its name, address, email and phone.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `business_unit_id` | integer | Yes | Id of the business unit. |
| `external_data_application_guid` | string | No | Application GUID. When given, the external data stored under this GUID is returned with the business unit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Call

**Slug:** `SERVICETITAN_GET_CALL`

Get one phone call in ServiceTitan by id, with the linked job, customer, campaign and agent.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `call_id` | integer | Yes | Id of the call. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Call Recording

**Slug:** `SERVICETITAN_GET_CALL_RECORDING`

Download the audio recording of one call from ServiceTitan as an audio/mpeg file. Use it for a call whose recording_url is set; the response for a call with no recording is not documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `call_id` | integer | Yes | Id of the call. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Call Voicemail

**Slug:** `SERVICETITAN_GET_CALL_VOICEMAIL`

Download the voicemail audio left on one call from ServiceTitan as an audio/mpeg file. Use it for a call whose voicemail URL is set; the response for a call with no voicemail is not documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `call_id` | integer | Yes | Id of the call. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Campaign

**Slug:** `SERVICETITAN_GET_CAMPAIGN`

Get one marketing campaign in ServiceTitan by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `campaign_id` | integer | Yes | Id of the marketing campaign. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Campaign Category

**Slug:** `SERVICETITAN_GET_CAMPAIGN_CATEGORY`

Get one marketing campaign category in ServiceTitan by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `campaign_category_id` | integer | Yes | Id of the campaign category. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Campaign Cost

**Slug:** `SERVICETITAN_GET_CAMPAIGN_COST`

Get one campaign cost record in ServiceTitan by the cost record's id, not the campaign id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `campaign_cost_id` | integer | Yes | Id of the campaign cost record, from LIST_CAMPAIGN_COSTS. This is not the campaign id. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Campaign Cost Summary

**Slug:** `SERVICETITAN_GET_CAMPAIGN_COST_SUMMARY`

Get the total cost of each marketing campaign in ServiceTitan over a date range. Both from_date and to_date are required; the result is not paged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `to_date` | string | Yes | End of the date range. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `from_date` | string | Yes | Start of the date range. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Cancel Reasons by Job IDs

**Slug:** `SERVICETITAN_GET_CANCEL_REASONS_BY_JOB_IDS`

Get the cancel reason recorded on each of the given ServiceTitan jobs. Requires job IDs; for the catalogue of available reasons use List Job Cancel Reasons.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_ids` | array | Yes | IDs of the jobs to get cancel reasons for. List of ids, max 50, sent comma-separated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Capacity

**Slug:** `SERVICETITAN_GET_CAPACITY`

Calculate real-time ServiceTitan capacity and technician availability for a time frame, optionally for given business units and a job type. Read-only even though it is a POST; use it before booking a job to find open slots.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_type_id` | integer | No | ID of the job type whose duration is used to calculate availability. |
| `business_unit_ids` | array | No | IDs of the business units to calculate availability for. |
| `ends_on_or_before` | string | Yes | End of the time frame to calculate capacity for. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `starts_on_or_after` | string | Yes | Start of the time frame to calculate capacity for. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `skill_based_availability` | boolean | Yes | Whether to match availability on the skills the job type needs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Contact

**Slug:** `SERVICETITAN_GET_CONTACT`

Get one contact (a person record with name and title) in ServiceTitan by its GUID. Phone numbers and emails are not included; read them with LIST_CONTACT_METHODS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Contact Method

**Slug:** `SERVICETITAN_GET_CONTACT_METHOD`

Get one contact method of a contact in ServiceTitan. Both ids are GUIDs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `contact_method_id` | string | Yes | GUID of the contact method, from LIST_CONTACT_METHODS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Contact Method Preference

**Slug:** `SERVICETITAN_GET_CONTACT_METHOD_PREFERENCE`

Get one communication preference of a contact method in ServiceTitan by preference name. Names come from LIST_CONTACT_PREFERENCE_TYPES.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `preference_name` | string | Yes | Name of the preference, from LIST_CONTACT_PREFERENCE_TYPES. |
| `contact_method_id` | string | Yes | GUID of the contact method, from LIST_CONTACT_METHODS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Customer

**Slug:** `SERVICETITAN_GET_CUSTOMER`

Get one customer in ServiceTitan by id, including bill-to address, balance, custom fields and tags.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | integer | Yes | Id of the customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Email Channel Cost

**Slug:** `SERVICETITAN_GET_EMAIL_CHANNEL_COST`

Get the cost of the email marketing channel in ServiceTitan over a date range. Both from_date and to_date are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `to_date` | string | Yes | End of the date range. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `from_date` | string | Yes | Start of the date range. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Employee

**Slug:** `SERVICETITAN_GET_EMPLOYEE`

Get one office employee in ServiceTitan by id, including name, email, phone, role and positions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `employee_id` | integer | Yes | Id of the employee. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Employee Payroll Settings

**Slug:** `SERVICETITAN_GET_EMPLOYEE_PAYROLL_SETTINGS`

Get the payroll settings of one office employee in ServiceTitan. Use GET_TECHNICIAN_PAYROLL_SETTINGS for a technician.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `employee_id` | integer | Yes | Id of the office employee. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Equipment System

**Slug:** `SERVICETITAN_GET_EQUIPMENT_SYSTEM`

Get one ServiceTitan equipment system by id, including the installed equipment attached to it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `equipment_system_id` | integer | Yes | Id of the equipment system to get. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Equipment Type

**Slug:** `SERVICETITAN_GET_EQUIPMENT_TYPE`

Get one ServiceTitan equipment type by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `equipment_type_id` | integer | Yes | Id of the equipment type to get. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Estimate

**Slug:** `SERVICETITAN_GET_ESTIMATE`

Get one estimate in ServiceTitan by its id, including its status, totals and line items.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `estimate_id` | integer | Yes | Id of the estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Estimate Template

**Slug:** `SERVICETITAN_GET_ESTIMATE_TEMPLATE`

Get one estimate template in ServiceTitan by its id, with its items.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `estimate_template_id` | integer | Yes | Id of the estimate template. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Expense Transaction

**Slug:** `SERVICETITAN_GET_EXPENSE_TRANSACTION`

Get one expense transaction in ServiceTitan by its id. Use LIST_EXPENSE_TRANSACTIONS to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `expense_id` | integer | Yes | Id of the expense transaction. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Finding

**Slug:** `SERVICETITAN_GET_FINDING`

Get one ServiceTitan finding by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `finding_id` | integer | Yes | Id of the finding to get. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Finding Attachment

**Slug:** `SERVICETITAN_GET_FINDING_ATTACHMENT`

Get one attachment of a ServiceTitan finding, by finding id and attachment id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `finding_id` | integer | Yes | Id of the finding that owns the attachment. |
| `attachment_id` | integer | Yes | Id of the finding attachment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get GL Account

**Slug:** `SERVICETITAN_GET_GL_ACCOUNT`

Get one general ledger (GL) account in ServiceTitan by its id. Use LIST_GL_ACCOUNTS to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `account_id` | integer | Yes | Id of the general ledger account. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Hold Reasons by Job IDs

**Slug:** `SERVICETITAN_GET_HOLD_REASONS_BY_JOB_IDS`

Get the hold reason recorded on each of the given ServiceTitan jobs and on their appointments. Requires job IDs; for the catalogue of available reasons use List Job Hold Reasons.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_ids` | array | Yes | IDs of the jobs to get hold reasons for. List of ids, max 50, sent comma-separated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Installed Equipment

**Slug:** `SERVICETITAN_GET_INSTALLED_EQUIPMENT`

Get one ServiceTitan installed equipment record by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `installed_equipment_id` | integer | Yes | Id of the installed equipment record to get. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Invoice Template

**Slug:** `SERVICETITAN_GET_INVOICE_TEMPLATE`

Get one membership invoice template in ServiceTitan by its id, with its line items and total.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_template_id` | integer | Yes | Id of the membership invoice template. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job

**Slug:** `SERVICETITAN_GET_JOB`

Get one ServiceTitan job by its ID, including customer, location, job type, status and first and last appointment IDs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job. |
| `external_data_application_guid` | string | No | If this GUID is provided, external data corresponding to this application GUID will be returned. GUID string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job Booked Log

**Slug:** `SERVICETITAN_GET_JOB_BOOKED_LOG`

Get the booked log of one ServiceTitan job: when it was booked, by whom, and the originally booked appointment start and arrival window.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job Equipment

**Slug:** `SERVICETITAN_GET_JOB_EQUIPMENT`

Get the IDs of the equipment items attached to one ServiceTitan job. Returns IDs only. The spec does not say which equipment ids these are; they are not the equipment system ids of the equipment-system tools, and whether installed-equipment ids (LIST_INSTALLED_EQUIPMENT) or pricebook equipment ids (LIST_PRICEBOOK_EQUIPMENT) are meant is unverified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job History

**Slug:** `SERVICETITAN_GET_JOB_HISTORY`

Get the history entries of one ServiceTitan job: each event with its type, date, employee and memo. Returns the whole history in one response.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Job Type

**Slug:** `SERVICETITAN_GET_JOB_TYPE`

Get one ServiceTitan job type by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_type_id` | integer | Yes | ID of the job type. |
| `external_data_application_guid` | string | No | If this guid is provided, external data corresponding to this application guid will be returned. GUID string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Journal Entry

**Slug:** `SERVICETITAN_GET_JOURNAL_ENTRY`

Get one journal entry in ServiceTitan by its id. It returns the entry header; use LIST_JOURNAL_ENTRY_DETAILS or LIST_JOURNAL_ENTRY_SUMMARY for its line amounts.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `journal_entry_id` | string | Yes | Id of the journal entry (a GUID string), from LIST_JOURNAL_ENTRIES. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Labor Type

**Slug:** `SERVICETITAN_GET_LABOR_TYPE`

Get one payroll labor type in ServiceTitan by its id. Use LIST_LABOR_TYPES to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `labor_type_id` | integer | Yes | Id of the payroll labor type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Lead

**Slug:** `SERVICETITAN_GET_LEAD`

Get one lead in ServiceTitan by id. A lead is an opportunity to book a job that has not converted yet.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lead_id` | integer | Yes | Id of the lead. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Location

**Slug:** `SERVICETITAN_GET_LOCATION`

Get one location in ServiceTitan by id. A location is the service address where work is done and belongs to exactly one customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location_id` | integer | Yes | Id of the location. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Location Preferred Technician

**Slug:** `SERVICETITAN_GET_LOCATION_PREFERRED_TECHNICIAN`

Get the id of the preferred technician of a location in ServiceTitan. Returns only the technician id, or null when none is set.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location_id` | integer | Yes | Id of the location. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Membership

**Slug:** `SERVICETITAN_GET_MEMBERSHIP`

Get one customer membership in ServiceTitan by its id, including status, dates, billing template and payment settings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `membership_id` | integer | Yes | Id of the customer membership. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Membership Type

**Slug:** `SERVICETITAN_GET_MEMBERSHIP_TYPE`

Get one membership type in ServiceTitan by its id. The spec gives this operation no include flags and does not say whether duration_billing, discounts, recurring_services and tag_type_ids are filled; null means not loaded. LIST_MEMBERSHIP_TYPES with ids and the include_ flags returns them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `membership_type_id` | integer | Yes | Id of the membership type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Non Job Appointment

**Slug:** `SERVICETITAN_GET_NON_JOB_APPOINTMENT`

Get one ServiceTitan non-job appointment by its ID. A non-job appointment blocks a technician's time for something that is not customer work, such as training or time off.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `non_job_appointment_id` | integer | Yes | ID of the non-job appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Payment Term

**Slug:** `SERVICETITAN_GET_PAYMENT_TERM`

Get one payment term (for example net 30) in ServiceTitan by its id. Payment terms are read-only through the API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `payment_term_id` | integer | Yes | Id of the payment term. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Payment Type

**Slug:** `SERVICETITAN_GET_PAYMENT_TYPE`

Get one payment type in ServiceTitan by its id. Use LIST_PAYMENT_TYPES to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `payment_type_id` | integer | Yes | Id of the payment type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Payroll Activity Code

**Slug:** `SERVICETITAN_GET_PAYROLL_ACTIVITY_CODE`

Get one payroll activity code (earning code) in ServiceTitan by its id. Use LIST_PAYROLL_ACTIVITY_CODES to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `activity_code_id` | integer | Yes | Id of the payroll activity code. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Payroll Adjustment

**Slug:** `SERVICETITAN_GET_PAYROLL_ADJUSTMENT`

Get one payroll adjustment in ServiceTitan by its id. employee_type is required and must match the adjustment's owner (Technician or Employee).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `employee_type` | string ("Technician" | "Employee") | Yes | Type of the person the adjustment belongs to: Technician or Employee. Required. |
| `payroll_adjustment_id` | integer | Yes | Id of the payroll adjustment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Pricebook Category

**Slug:** `SERVICETITAN_GET_PRICEBOOK_CATEGORY`

Get one ServiceTitan pricebook category by id, including its subcategories.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `category_id` | integer | Yes | Id of the pricebook category to get. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Pricebook Discount or Fee

**Slug:** `SERVICETITAN_GET_PRICEBOOK_DISCOUNT_OR_FEE`

Get one discount or fee from the ServiceTitan pricebook by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `discount_or_fee_id` | integer | Yes | Id of the discount or fee to get. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with the record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Pricebook Equipment

**Slug:** `SERVICETITAN_GET_PRICEBOOK_EQUIPMENT`

Get one equipment item from the ServiceTitan pricebook catalog by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `equipment_id` | integer | Yes | Id of the pricebook equipment item to get. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with the record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Pricebook Material

**Slug:** `SERVICETITAN_GET_PRICEBOOK_MATERIAL`

Get one material from the ServiceTitan pricebook by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `material_id` | integer | Yes | Id of the pricebook material to get. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with the record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Pricebook Material Markup

**Slug:** `SERVICETITAN_GET_PRICEBOOK_MATERIAL_MARKUP`

Get one material markup tier from the ServiceTitan pricebook by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `markup_id` | integer | Yes | Id of the material markup to get. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Pricebook Service

**Slug:** `SERVICETITAN_GET_PRICEBOOK_SERVICE`

Get one service from the ServiceTitan pricebook by id, including its linked materials and equipment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `service_id` | integer | Yes | Id of the pricebook service to get. |
| `calculate_prices` | boolean | No | Set true to return prices calculated with the current dynamic pricing rules. The spec documents false as the default. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Project

**Slug:** `SERVICETITAN_GET_PROJECT`

Get one ServiceTitan project by its ID, including status, customer, location, managers and key dates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | integer | Yes | ID of the project. |
| `external_data_application_guid` | string | No | If this guid is provided, external data corresponding to this application guid will be returned. GUID string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Project Daily Log

**Slug:** `SERVICETITAN_GET_PROJECT_DAILY_LOG`

Get one daily log of a ServiceTitan project by its ID, with health, section notes, summaries and the attachment list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | integer | Yes | The project ID. |
| `daily_log_id` | integer | Yes | ID of the daily log. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Project Status

**Slug:** `SERVICETITAN_GET_PROJECT_STATUS`

Get one ServiceTitan project status definition by its ID. This is the status catalogue entry, not the status of a project.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_status_id` | integer | Yes | ID of the project status. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Project Sub Status

**Slug:** `SERVICETITAN_GET_PROJECT_SUB_STATUS`

Get one ServiceTitan project sub status definition by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_sub_status_id` | integer | Yes | ID of the project sub status. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Project Type

**Slug:** `SERVICETITAN_GET_PROJECT_TYPE`

Get one ServiceTitan project type by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_type_id` | integer | Yes | ID of the project type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Proposal Template

**Slug:** `SERVICETITAN_GET_PROPOSAL_TEMPLATE`

Get one proposal template in ServiceTitan by its id, with its estimate assignments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `proposal_template_id` | integer | Yes | Id of the proposal template. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Provider Booking

**Slug:** `SERVICETITAN_GET_PROVIDER_BOOKING`

Get one booking in ServiceTitan that belongs to a given booking provider. Works only when the connection was granted the booking provider tag passed as booking_provider_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `booking_id` | integer | Yes | Id of the booking. |
| `booking_provider_id` | integer | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Purchase Order

**Slug:** `SERVICETITAN_GET_PURCHASE_ORDER`

Get one ServiceTitan purchase order by id, including its items and current status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `purchase_order_id` | integer | Yes | Id of the purchase order to get. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Purchase Order Markup

**Slug:** `SERVICETITAN_GET_PURCHASE_ORDER_MARKUP`

Get one ServiceTitan purchase order markup tier by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `markup_id` | integer | Yes | Id of the purchase order markup to get. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Recurring Service

**Slug:** `SERVICETITAN_GET_RECURRING_SERVICE`

Get one location recurring service in ServiceTitan by its id, including its recurrence schedule and invoice template ids.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `recurring_service_id` | integer | Yes | Id of the location recurring service. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Recurring Service Type

**Slug:** `SERVICETITAN_GET_RECURRING_SERVICE_TYPE`

Get one recurring service type in ServiceTitan by its id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `recurring_service_type_id` | integer | Yes | Id of the recurring service type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Remittance Vendor

**Slug:** `SERVICETITAN_GET_REMITTANCE_VENDOR`

Get one remittance vendor in ServiceTitan by its id. Use LIST_REMITTANCE_VENDORS to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `remittance_vendor_id` | integer | Yes | Id of the remittance vendor. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Report

**Slug:** `SERVICETITAN_GET_REPORT`

Get a report's definition in ServiceTitan: the input parameters it expects and the fields it returns. Read it before requesting data, because report owners can change the definition.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `report_id` | integer | Yes | Id of the report within the category, from the reports list. |
| `report_category` | string | Yes | Id of the report category, from the report categories list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Report Data

**Slug:** `SERVICETITAN_GET_REPORT_DATA`

Run a report in ServiceTitan and return one page of rows with the column headers. Rate limit: 1 call of the same report per minute per tenant, so ask for a large page_size (up to 25000) rather than many small pages; for slow reports use START_REPORT_DATA_QUERY and poll GET_REPORT_DATA_QUERY_RESULT.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of rows per page, 1 to 25000. Default 1000. |
| `report_id` | integer | Yes | Id of the report within the category, from the reports list. |
| `parameters` | array | Yes | Input parameters of the report as name/value pairs. Get the names, data types and required flags from the report definition. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `report_category` | string | Yes | Id of the report category, from the report categories list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Report Data Query Result

**Slug:** `SERVICETITAN_GET_REPORT_DATA_QUERY_RESULT`

Poll a long-running report data query in ServiceTitan by its query_token. Returns the rows when the query has finished, or a status of NotStarted or InProgress when it has not, in which case wait and call again.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query_token` | string | Yes | Token of the long-running query, returned when the query was started. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Router Performance

**Slug:** `SERVICETITAN_GET_ROUTER_PERFORMANCE`

Get performance counts for one Scheduling Pro router in ServiceTitan over a time window: sessions opened and interacted with, split by scheduler. Both window bounds are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `router_id` | string | Yes | Id of the Scheduling Pro router (a string). No ServiceTitan API lists routers, so the id has to come from the user. |
| `session_created_before` | string | Yes | End of the window: count sessions created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `session_created_on_or_after` | string | Yes | Start of the window: count sessions created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Scheduler Performance

**Slug:** `SERVICETITAN_GET_SCHEDULER_PERFORMANCE`

Get performance metrics for one Scheduling Pro scheduler in ServiceTitan over a time window, such as sessions, completion rates and jobs booked. Both window bounds are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `scheduler_id` | string | Yes | Id of the Scheduling Pro scheduler (a string), from the schedulers list. |
| `session_created_before` | string | Yes | End of the window: count sessions created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `session_created_on_or_after` | string | Yes | Start of the window: count sessions created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Service Agreement

**Slug:** `SERVICETITAN_GET_SERVICE_AGREEMENT`

Get one service agreement in ServiceTitan by id, with its price, dates, status and terms.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `service_agreement_id` | integer | Yes | Id of the service agreement. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Task

**Slug:** `SERVICETITAN_GET_TASK`

Get one task in ServiceTitan Task Management by id, with its comments and attachments. Set include_subtasks to true to also return its subtasks.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `task_id` | integer | Yes | Id of the task. |
| `include_subtasks` | boolean | No | Set true to include the task's subtasks in sub_tasks_data. The spec does not document the default. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Task Reference Data

**Slug:** `SERVICETITAN_GET_TASK_REFERENCE_DATA`

Get the reference data needed to create tasks in ServiceTitan: employees, business units, task types, sources, resolutions, priorities and statuses. Call it first to get the ids the create task tool requires.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Team

**Slug:** `SERVICETITAN_GET_TEAM`

Get one ServiceTitan dispatch team by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `team_id` | integer | Yes | ID of the team. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Technician

**Slug:** `SERVICETITAN_GET_TECHNICIAN`

Get one technician in ServiceTitan by id, including name, contact details, home address, zones and license type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_id` | integer | Yes | Id of the technician. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Technician Payroll Settings

**Slug:** `SERVICETITAN_GET_TECHNICIAN_PAYROLL_SETTINGS`

Get the payroll settings of one technician in ServiceTitan. Use GET_EMPLOYEE_PAYROLL_SETTINGS for an office employee.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_id` | integer | Yes | Id of the technician. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Technician Shift

**Slug:** `SERVICETITAN_GET_TECHNICIAN_SHIFT`

Get one ServiceTitan technician shift by its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_shift_id` | integer | Yes | ID of the technician shift. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Technician Skill

**Slug:** `SERVICETITAN_GET_TECHNICIAN_SKILL`

Get one ServiceTitan technician skill by its ID, which is a string of the form {technicianId}_{skillId}.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_skill_id` | string | Yes | ID of the technician skill, a string of the form {technicianId}_{skillId}. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Technician Tracking URL

**Slug:** `SERVICETITAN_GET_TECHNICIAN_TRACKING_URL`

Get the ServiceTitan tracking URL for one technician on one appointment, which shows the technician's progress toward the customer. Both the technician and appointment IDs are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_id` | integer | Yes | ID of the technician to track. |
| `appointment_id` | integer | Yes | ID of the appointment the tracking URL is for. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Timesheet Activity

**Slug:** `SERVICETITAN_GET_TIMESHEET_ACTIVITY`

Get one timesheet activity in ServiceTitan by its id. Use LIST_TIMESHEET_ACTIVITIES to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `activity_id` | integer | Yes | Id of the timesheet activity. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Timesheet Activity Category

**Slug:** `SERVICETITAN_GET_TIMESHEET_ACTIVITY_CATEGORY`

Get one timesheet activity category in ServiceTitan by its id. Use LIST_TIMESHEET_ACTIVITY_CATEGORIES to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `activity_category_id` | integer | Yes | Id of the timesheet activity category. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Timesheet Activity Type

**Slug:** `SERVICETITAN_GET_TIMESHEET_ACTIVITY_TYPE`

Get one timesheet activity type in ServiceTitan by its id. Use LIST_TIMESHEET_ACTIVITY_TYPES to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `activity_type_id` | integer | Yes | Id of the timesheet activity type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Timesheet Code

**Slug:** `SERVICETITAN_GET_TIMESHEET_CODE`

Get one timesheet code in ServiceTitan by its id. Use LIST_TIMESHEET_CODES to find the id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `timesheet_code_id` | integer | Yes | Id of the timesheet code. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Vendor

**Slug:** `SERVICETITAN_GET_VENDOR`

Get one ServiceTitan inventory vendor by id, including contact details, tax rate, and delivery option.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `vendor_id` | integer | Yes | Id of the vendor to get. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must also be given. The spec types this as one plain string and the format for several values is undocumented. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with the record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Well Known GL Accounts

**Slug:** `SERVICETITAN_GET_WELL_KNOWN_GL_ACCOUNTS`

Get the ids of the tenant's default general ledger accounts in ServiceTitan: credit card payable and uncategorized expense. Each id is null when that default account is not configured.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Zone

**Slug:** `SERVICETITAN_GET_ZONE`

Get one ServiceTitan dispatch zone by its ID, including its zip codes, cities, service days, business units and technicians.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `zone_id` | integer | Yes | ID of the zone. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Hold Appointment

**Slug:** `SERVICETITAN_HOLD_APPOINTMENT`

Put a ServiceTitan job appointment on hold with a hold reason and memo. Get the reason ID from List Job Hold Reasons.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | Yes | Memo of why the appointment is going on hold. |
| `reason_id` | integer | Yes | ID of the hold reason. |
| `appointment_id` | integer | Yes | ID of the job appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Import Sms Opt Ins

**Slug:** `SERVICETITAN_IMPORT_SMS_OPT_INS`

Record SMS marketing opt-ins in ServiceTitan for phone numbers whose consent was collected outside it. Send only numbers whose owners agreed to receive text messages.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `phone_numbers` | array | Yes | Phone numbers that opted in to SMS. At least one. The spec does not document the expected number format. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Ad Performance

**Slug:** `SERVICETITAN_LIST_AD_PERFORMANCE`

List ad performance rows from ServiceTitan Marketing Ads for a time window, segmented by campaign, ad group or keyword, one page per call. from_utc, to_utc and segmentation_type are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `to_utc` | string | Yes | End of the time window. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `from_utc` | string | Yes | Start of the time window. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `segmentation_type` | string ("Campaign" | "AdGroup" | "Keyword") | Yes | Level the performance rows are grouped by. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List AP Bill Custom Field Types

**Slug:** `SERVICETITAN_LIST_AP_BILL_CUSTOM_FIELD_TYPES`

List the custom field type definitions available for AP bills in ServiceTitan, one page per call. Use it to find valid custom field names before setting them with UPDATE_AP_BILL_CUSTOM_FIELDS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return records whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List AP Bills

**Slug:** `SERVICETITAN_LIST_AP_BILLS`

List accounts-payable (vendor) bills in ServiceTitan with their line items, one page per call. Filter by bill number, status, sync status, source, cost or dates; bill_type defaults to Procurement, so pass ApBill to see standalone AP bills.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the AP bills with these ids; sent comma-separated. The spec documents no maximum for this operation. |
| `page` | integer | No | Page number to return, starting at 1. |
| `date_to` | string | No | Filter bills created on or before this date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `sources` | array | No | Return only bills created from one of these sources: Undefined, Standalone, Purchasing, Recurring, OCR, API. |
| `batch_id` | integer | No | Filter by specific batch ID. |
| `max_cost` | number | No | Filter bills with cost less than or equal to this amount. |
| `min_cost` | number | No | Filter bills with cost greater than or equal to this amount. |
| `statuses` | array | No | Return only bills with one of these reconciliation statuses: Unreconciled, Discrepancy, Reconciled, Canceled. |
| `bill_type` | string ("NotSet" | "Procurement" | "ApBill") | No | Filter by bill type; Procurement is used when left out. |
| `date_from` | string | No | Filter bills created on or after this date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `page_size` | integer | No | Number of records per page. |
| `job_number` | string | No | Filter by job number (partial match supported). |
| `bill_number` | string | No | Filter by bill number (partial match supported). |
| `batch_number` | integer | No | Filter by batch number. |
| `custom_fields` | object | No | Custom field name-value filters, up to 50. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | array | No | Filter by sync status values: Pending, Posted, Exported, PostedAndExported. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `business_unit_ids` | array | No | List of business unit IDs to filter by, sent comma-separated. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `purchase_order_types` | array | No | List of purchase order types to filter by, sent comma-separated. The spec does not list the valid values. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. Default And. |
| `purchase_order_number` | string | No | Filter by purchase order number (partial match supported). |
| `date_reconciled_before` | string | No | Return bills reconciled on or before this date-time, as the spec words it; the parameter name says before, so whether the boundary is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `date_reconciled_on_or_after` | string | No | Return bills reconciled after this date-time, as the spec words it; the parameter name says on or after, so whether the boundary is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `three_way_match_discrepancy` | string ("NoDiscrepancy" | "Discrepancy") | No | Filter by three-way match discrepancy status. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List AP Credit Custom Field Types

**Slug:** `SERVICETITAN_LIST_AP_CREDIT_CUSTOM_FIELD_TYPES`

List the custom field type definitions available for AP credits in ServiceTitan, one page per call. Use it to find valid custom field names before setting them with UPDATE_AP_CREDIT_CUSTOM_FIELDS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return records whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List AP Credits

**Slug:** `SERVICETITAN_LIST_AP_CREDITS`

List accounts-payable credits (vendor credits) in ServiceTitan, one page per call. Filter by ids, sync status, or created or modified dates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of AP credit ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `custom_fields` | object | No | Custom field name-value filters, up to 50. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | array | No | Return only AP credits with one of these accounting sync statuses: Pending, Posted, Exported, PostedAndExported. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. Default And. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List AP Payment Custom Field Types

**Slug:** `SERVICETITAN_LIST_AP_PAYMENT_CUSTOM_FIELD_TYPES`

List the custom field type definitions available for AP payments in ServiceTitan, one page per call. Use it to find valid custom field names before setting them with UPDATE_AP_PAYMENT_CUSTOM_FIELDS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return records whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List AP Payments

**Slug:** `SERVICETITAN_LIST_AP_PAYMENTS`

List accounts-payable payments (payments made to vendors) in ServiceTitan, one page per call. These are outgoing vendor payments; use LIST_PAYMENTS for payments received from customers.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of AP payment ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `custom_fields` | object | No | Custom field name-value filters, up to 50. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | array | No | Return only AP payments with one of these accounting sync statuses: Pending, Posted, Exported or PostedAndExported. Sent as a repeated query parameter. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. Default And. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Appointment Assignments

**Slug:** `SERVICETITAN_LIST_APPOINTMENT_ASSIGNMENTS`

List technician-to-appointment assignments in ServiceTitan, one page per call, filtered by appointment, job, technician or appointment start range. Use it to see who is assigned to an appointment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these IDs. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `job_id` | integer | No | Return appointment assignments for a single job. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `technician_ids` | array | No | Return assignments for these technicians. List of ids, sent comma-separated; request URLs longer than 2048 characters are rejected. |
| `appointment_ids` | array | No | Return assignments for these appointments. List of ids, sent comma-separated. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `appointment_starts_before` | string | No | Return appointment assignments whose appointment starts before the specified date-time, interpreted as UTC. Exclusive boundary. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `appointment_starts_on_or_after` | string | No | Return appointment assignments whose appointment starts on or after the specified date-time, interpreted as UTC. Inclusive boundary. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Appointments

**Slug:** `SERVICETITAN_LIST_APPOINTMENTS`

List ServiceTitan job appointments, one page per call, filtered by job, project, technician, customer, status or start/modified date ranges. Use this to find all appointments of a job or project.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these IDs. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `job_id` | integer | No | Return all appointments for this job. |
| `status` | string ("Scheduled" | "Dispatched" | "Working" | "Hold" | "Done" | "Canceled") | No | Return items with specified status AppointmentStatus. |
| `unused` | boolean | No | Return appointments that are unused. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | No | Return all appointments for jobs that are part of this project. |
| `customer_id` | integer | No | Return appointments for the specified Customer. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `starts_before` | string | No | Return appointments that start before the specified date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `technician_id` | integer | No | Return appointments this technician is assigned to. |
| `created_before` | string | No | Return appointments created before a certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return appointments modified before a certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `appointment_number` | string | No | Return appointments with this appointment number. |
| `starts_on_or_after` | string | No | Return appointments that start on or after the specified date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return appointments created on or after a certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return appointments modified on or after a certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Arrival Windows

**Slug:** `SERVICETITAN_LIST_ARRIVAL_WINDOWS`

List the arrival windows configured in ServiceTitan, one page per call. An arrival window is a time range, per business unit, offered to customers when booking.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Attributed Leads

**Slug:** `SERVICETITAN_LIST_ATTRIBUTED_LEADS`

List leads with their marketing attribution in ServiceTitan for a time window, one page per call. from_utc and to_utc are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `to_utc` | string | Yes | End of the time window. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `from_utc` | string | Yes | Start of the time window. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `lead_type` | string ("Call" | "WebBooking" | "WebLeadForm" | "ManualJob") | No | Return only leads of this type. Omit to return all types. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Bank Deposits

**Slug:** `SERVICETITAN_LIST_BANK_DEPOSITS`

List bank deposits in ServiceTitan, one page per call. Filter by deposit date, review status, deposit status, sync status or gross amount.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of bank deposit ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `sync_status` | string ("Pending" | "Posted" | "Exported") | No | Return only bank deposits with this accounting sync status. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `review_status` | string ("NeedsReview" | "Reviewed") | No | Return only deposits with this review status. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `deposit_status` | string ("Undefined" | "Open" | "Deposited") | No | Return only deposits with this deposit status. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `reviewed_before` | string | No | Return deposits reviewed before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `gross_amount_less` | number | No | Return deposits with a gross amount less than this value. The spec does not say whether the bound is inclusive. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `deposit_date_before` | string | No | Return deposits with a deposit date before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `gross_amount_greater` | number | No | Return deposits with a gross amount greater than this value. The spec does not say whether the bound is inclusive. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `reviewed_on_or_after` | string | No | Return deposits reviewed on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `deposit_date_on_or_after` | string | No | Return deposits with a deposit date on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Bank Deposit Transactions

**Slug:** `SERVICETITAN_LIST_BANK_DEPOSIT_TRANSACTIONS`

List the transactions (payments and journal entries) that make up one bank deposit in ServiceTitan, one page per call. Use LIST_BANK_DEPOSITS to find the deposit id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `deposit_id` | integer | Yes | Id of the bank deposit. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Booking Contacts

**Slug:** `SERVICETITAN_LIST_BOOKING_CONTACTS`

List the contact entries (phone, email, fax) on one booking in ServiceTitan, one page per call. This is the tenant-wide path; it needs a connection with no booking provider restriction. Use LIST_PROVIDER_BOOKING_CONTACTS when the connection is restricted to a single booking provider tag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `booking_id` | integer | Yes | Id of the booking. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Booking Provider Tags

**Slug:** `SERVICETITAN_LIST_BOOKING_PROVIDER_TAGS`

List booking provider tags in ServiceTitan, one page per call. Use it to find the tag id that the provider-scoped booking tools take as booking_provider_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these ids. Maximum 50; sent comma-separated. |
| `name` | string | No | Name of the booking provider tag. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Bookings

**Slug:** `SERVICETITAN_LIST_BOOKINGS`

List bookings in ServiceTitan across all booking providers, one page per call. Use LIST_PROVIDER_BOOKINGS when the connection is restricted to a single booking provider tag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these ids. Maximum 50; sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `page_size` | integer | No | Number of records per page. |
| `external_id` | string | No | Filters by booking's external ID. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Budget Codes

**Slug:** `SERVICETITAN_LIST_BUDGET_CODES`

List company-level ServiceTitan budget codes, one page per call, optionally filtered by budget code, segment or segment item IDs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `segment_ids` | array | No | Return only budget codes that use these segments. List of ids, sent comma-separated. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `budget_code_ids` | array | No | Return only budget codes with these IDs. List of ids, sent comma-separated. |
| `segment_item_ids` | array | No | Return only budget codes that use these segment items. List of ids, sent comma-separated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Budget Code Segment Item Children

**Slug:** `SERVICETITAN_LIST_BUDGET_CODE_SEGMENT_ITEM_CHILDREN`

List the child items under one item of a company-level budget code segment in ServiceTitan, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `segment_id` | integer | Yes | ID of the budget code segment. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `segment_item_id` | integer | Yes | ID of the segment item. |
| `include_children` | boolean | No | Whether to include the child items nested under each segment item. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Budget Code Segment Items

**Slug:** `SERVICETITAN_LIST_BUDGET_CODE_SEGMENT_ITEMS`

List the items of one company-level budget code segment in ServiceTitan, one page per call. Set include_children to get nested child items.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `segment_id` | integer | Yes | ID of the budget code segment. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `include_children` | boolean | No | Whether to include the child items nested under each segment item. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Budget Code Segments

**Slug:** `SERVICETITAN_LIST_BUDGET_CODE_SEGMENTS`

List the company-level budget code segments of the ServiceTitan work breakdown structure. For the segments of one project use List Project Budget Code Segments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting from 1. Not sent unless set; the spec documents no default for this operation. |
| `page_size` | integer | No | Number of records per page. Not sent unless set; the spec documents no default and no maximum for this operation. The response has no has_more flag: the last page is the one with fewer records than page_size. |
| `include_total` | boolean | No | Documented query parameter of this operation. The documented response has no total count field, so its effect is not known. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Business Units

**Slug:** `SERVICETITAN_LIST_BUSINESS_UNITS`

List business units in ServiceTitan, the divisions of the company that revenue and work are tracked and reported under.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the business units with these ids. Maximum 50; sent comma-separated. |
| `name` | string | No | Filter by name; case-insensitive 'contains' match. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Application GUID. When given, the external data stored under this GUID is returned with each business unit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Call Reasons

**Slug:** `SERVICETITAN_LIST_CALL_REASONS`

List call reasons in ServiceTitan, one page per call. Use it to find the reason id needed to dismiss a lead or booking or to create a lead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Calls

**Slug:** `SERVICETITAN_LIST_CALLS`

List phone calls recorded in ServiceTitan, inbound and outbound, filtered by campaign, agent, phone number, minimum duration, tag or created/modified time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of ids to look up, max 50, sent comma-separated. |
| `sid` | string | No | Filter by the call's SID, the telephony provider's identifier for the call. |
| `tag` | string | No | Filter by call tag. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `agent_id` | integer | No | Filter by the id of the agent (employee) on the call. |
| `page_size` | integer | No | Number of records per page. |
| `agent_name` | string | No | Filter by agent name. |
| `campaign_id` | integer | No | Filter by marketing campaign id. |
| `min_duration` | integer | No | Minimum call duration in seconds. |
| `created_after` | string | No | Return items created after this time (exclusive). RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_after` | string | No | Return items modified after this time (exclusive). RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `agent_external_id` | integer | No | Filter by the agent's external id. |
| `agent_is_external` | boolean | No | Filter by whether the agent is external. |
| `caller_phone_number` | string | No | Filter by the caller's phone number. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `phone_number_called` | string | No | Filter by the phone number that was called. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Campaign Categories

**Slug:** `SERVICETITAN_LIST_CAMPAIGN_CATEGORIES`

List marketing campaign categories in ServiceTitan, one page per call. Categories group campaigns; they are not pricebook categories.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, Name. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Campaign Costs

**Slug:** `SERVICETITAN_LIST_CAMPAIGN_COSTS`

List monthly campaign cost records in ServiceTitan across all campaigns, one page per call, filtered by year, month or campaign. Each record holds a daily cost for one campaign and month.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Date (Year + Month). |
| `year` | integer | No | Return only cost records of this calendar year, e.g. 2025. |
| `month` | integer | No | Return only cost records of this month, 1 to 12. |
| `page_size` | integer | No | Number of records per page. |
| `campaign_id` | integer | No | Return only cost records of this campaign id. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Campaign Costs For Campaign

**Slug:** `SERVICETITAN_LIST_CAMPAIGN_COSTS_FOR_CAMPAIGN`

List the monthly cost records of one marketing campaign in ServiceTitan, one page per call. Use LIST_CAMPAIGN_COSTS to read costs across all campaigns.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Date (Year + Month). |
| `year` | integer | No | Return only cost records of this calendar year, e.g. 2025. |
| `month` | integer | No | Return only cost records of this month, 1 to 12. |
| `page_size` | integer | No | Number of records per page. |
| `campaign_id` | integer | Yes | Id of the marketing campaign. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Campaigns

**Slug:** `SERVICETITAN_LIST_CAMPAIGNS`

List marketing campaigns in ServiceTitan, one page per call, filtered by name, tracking phone number, ids or dates. Only active campaigns are returned unless active is set to False or Any.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these ids. Maximum 50; sent comma-separated. |
| `name` | string | No | Filters records by name (case-insensitive "contains" operation). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `campaign_phone_number` | string | No | Return campaigns that use this tracking phone number. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Capacity Warnings

**Slug:** `SERVICETITAN_LIST_CAPACITY_WARNINGS`

List all capacity awareness warnings of ServiceTitan Marketing Ads, which flag campaigns whose business units are near their capacity threshold. Returns everything in one call; it takes no filters.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Client Specific Pricing Rate Sheets

**Slug:** `SERVICETITAN_LIST_CLIENT_SPECIFIC_PRICING_RATE_SHEETS`

List client-specific pricing rate sheets in the ServiceTitan pricebook, each with its per-SKU price exceptions. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the rate sheets to return, sent comma-separated. The spec documents no maximum for this operation. |
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only), False (inactive only), Any (both). The spec does not document the default for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `search_text` | string | No | Text to search rate sheets by. The spec does not document which fields are searched. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contact Method Preferences

**Slug:** `SERVICETITAN_LIST_CONTACT_METHOD_PREFERENCES`

List the communication preferences set on one contact method in ServiceTitan. Returns the full list in one call; it is not paged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `contact_method_id` | string | Yes | GUID of the contact method, from LIST_CONTACT_METHODS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contact Methods

**Slug:** `SERVICETITAN_LIST_CONTACT_METHODS`

List contact methods across ServiceTitan contacts, one page per call. Pass contact_id for one contact, or filter across contacts by value, type, reference id, or date.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `type` | string ("Phone" | "MobilePhone" | "Email" | "Fax") | No | Filter by contact method type: Phone, MobilePhone, Email or Fax. |
| `value` | string | No | Filter by the phone number, email address or fax number. |
| `page_size` | integer | No | Number of records per page. |
| `contact_id` | string | No | Return only contact methods of the contact with this GUID. |
| `reference_id` | string | No | Filters by reference ID. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contact Preference Types

**Slug:** `SERVICETITAN_LIST_CONTACT_PREFERENCE_TYPES`

List the communication preference types that can be set on a contact method in ServiceTitan, with each one's name and data type. Returns the full list in one call; it is not paged.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contact Relationships

**Slug:** `SERVICETITAN_LIST_CONTACT_RELATIONSHIPS`

List the customers, locations and bookings a contact is linked to in ServiceTitan, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: ID, ModifiedOn, CreatedOn. |
| `page_size` | integer | No | Number of records per page. |
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `related_entity_id` | integer | No | Filters by related entity id. |
| `relationship_type` | string ("customer" | "location" | "booking") | No | Filter by relationship type slug: customer, location or booking. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `relationship_type_name` | string ("Customer" | "Location" | "Booking") | No | Filter by relationship type name: Customer, Location or Booking. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contacts

**Slug:** `SERVICETITAN_LIST_CONTACTS`

List contacts (person records with name and title) in ServiceTitan, one page per call. These are the GUID-keyed contacts; for the phone and email entries on a customer use LIST_CUSTOMER_CONTACTS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filters by contact name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `title` | string | No | Filters by contact title. |
| `page_size` | integer | No | Number of records per page. |
| `is_archived` | string | No | Filter by archived status. The spec types this as a string and lists no values; 'true' and 'false' are the expected ones. |
| `reference_id` | string | No | Filters by external reference ID. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contacts For Relationship

**Slug:** `SERVICETITAN_LIST_CONTACTS_FOR_RELATIONSHIP`

List the contacts in ServiceTitan attached to one relationship id, one page per call. Relationship ids come from LIST_CONTACT_RELATIONSHIPS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filters by contact name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `title` | string | No | Filters by contact title. |
| `page_size` | integer | No | Number of records per page. |
| `is_archived` | string | No | Filter by archived status. The spec types this as a string and lists no values; 'true' and 'false' are the expected ones. |
| `reference_id` | string | No | Filters by external reference ID. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `relationship_id` | integer | Yes | Id of the contact relationship, from LIST_CONTACT_RELATIONSHIPS. The spec types this as an integer, while LIST_CONTACT_RELATIONSHIPS returns GUID ids and integer related_entity_id values; which one is expected here is unverified. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Credit Memo Custom Field Types

**Slug:** `SERVICETITAN_LIST_CREDIT_MEMO_CUSTOM_FIELD_TYPES`

List the custom field type definitions available for credit memos in ServiceTitan, one page per call. Use it to find valid custom field names before setting them with UPDATE_CREDIT_MEMO_CUSTOM_FIELDS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return records whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Credit Memo Items

**Slug:** `SERVICETITAN_LIST_CREDIT_MEMO_ITEMS`

List credit memo line items across credit memos in ServiceTitan, one page per call. Pass credit_memo_ids with one ID for a single credit memo or a provider-formatted multi-ID string for several; without it, items of every credit memo are returned.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return credit memo items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `credit_memo_ids` | string | No | Credit memo ID or provider-formatted ID string whose items to return. For one credit memo, pass its decimal ID as a string. The provider spec does not document the separator for multiple IDs. |
| `business_unit_ids` | string | No | Business unit ids to filter by. The spec types this as one string and does not document its format for more than one id. |
| `created_on_or_after` | string | No | Return credit memo items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Credit Memos

**Slug:** `SERVICETITAN_LIST_CREDIT_MEMOS`

List customer credit memos in ServiceTitan, one page per call. Filter by the invoices they were applied to, dates, status, batch, business unit, total or balance; filtering by custom field is not supported.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of credit memo ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `batch_id` | integer | No | Return only credit memos in the accounting batch with this id. |
| `statuses` | array | No | Return only records with one of these transaction statuses; every status is included when left out. |
| `page_size` | integer | No | Number of records per page. |
| `date_before` | string | No | Return credit memos dated before this date. Date in YYYY-MM-DD form, e.g. 2025-01-31. |
| `batch_number` | string | No | Return only credit memos in the accounting batch with this number. |
| `custom_fields` | object | No | Custom field name-value filters, up to 50. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `applied_before` | string | No | Return credit memos applied to an invoice before this date. Date in YYYY-MM-DD form, e.g. 2025-01-31. |
| `created_before` | string | No | Return credit memos created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return credit memos modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `date_on_or_after` | string | No | Return credit memos dated on or after this date. Date in YYYY-MM-DD form, e.g. 2025-01-31. |
| `business_unit_ids` | string | No | Business unit ids to filter by. The spec types this as one string and does not document its format for more than one id. |
| `applied_on_or_after` | string | No | Return credit memos applied to an invoice on or after this date. Date in YYYY-MM-DD form, e.g. 2025-01-31. |
| `created_on_or_after` | string | No | Return credit memos created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `total_filter_amount` | number | No | Amount to compare each credit memo's total against; use together with total_filter_comparer. |
| `modified_on_or_after` | string | No | Return credit memos modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `balance_filter_amount` | number | No | Amount to compare each credit memo's remaining balance against; use together with balance_filter_comparer. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. Default And. |
| `total_filter_comparer` | string ("Equal" | "NotEqual" | "GreaterThan" | "GreaterThanOrEqual" | "LessThan" | "LessThanOrEqual") | No | How to compare the total with total_filter_amount. |
| `applied_to_invoice_ids` | string | No | Return only credit memos applied to these invoice ids. The spec types this as one string and does not document its format for more than one id. |
| `balance_filter_comparer` | string ("Equal" | "NotEqual" | "GreaterThan" | "GreaterThanOrEqual" | "LessThan" | "LessThanOrEqual") | No | How to compare the balance with balance_filter_amount. |
| `applied_to_reference_number` | string | No | Return only credit memos applied to the invoice with this reference number. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Customer Contacts

**Slug:** `SERVICETITAN_LIST_CUSTOMER_CONTACTS`

List contact entries for one or more ServiceTitan customers, or by modified-date range, one page per call. Pass one customer ID for the single-customer case. A location's contacts are separate records; use LIST_LOCATION_CONTACTS for them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `customer_ids` | array | No | Return contact entries for one or more customer IDs. Sent comma-separated. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return entries modified before this time. One of customer_ids, modified_before or modified_on_or_after must be sent. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return entries modified on or after this time. One of customer_ids, modified_before or modified_on_or_after must be sent. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Customer Custom Field Types

**Slug:** `SERVICETITAN_LIST_CUSTOMER_CUSTOM_FIELD_TYPES`

List the custom field types defined for customers in ServiceTitan, one page per call. Use it to find the type_id needed when setting custom_fields on a customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filters records by name (case-insensitive "contains" operation). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Customer Notes

**Slug:** `SERVICETITAN_LIST_CUSTOMER_NOTES`

List the notes on one customer in ServiceTitan, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `customer_id` | integer | Yes | Id of the customer. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. The spec text for this operation says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Customers

**Slug:** `SERVICETITAN_LIST_CUSTOMERS`

List customers in ServiceTitan, one page per call, filtered by name, address, phone, ids or dates. Only active customers are returned unless active is set to False or Any.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these ids. Maximum 50; sent comma-separated. |
| `zip` | string | No | Returns customer records by zip. |
| `city` | string | No | Returns customer records by city. |
| `name` | string | No | Return customers with this name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `unit` | string | No | Returns customer records by unit. |
| `phone` | string | No | Return customers that have a contact entry with this phone number. |
| `state` | string | No | Returns customer records by state. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `street` | string | No | Returns customer records by street. |
| `country` | string | No | Returns customer records by country. |
| `latitude` | number | No | Returns customer records by latitude. |
| `longitude` | number | No | Returns customer records by longitude. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | Look up records by this external data key. external_data_values must be sent with it. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must be sent with it. The spec types this as one string and does not document the separator. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. The spec text for this operation says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Return only records that carry external data written under this application GUID. |
| `exclude_accounting_changes_from_modified_date_range` | boolean | No | Set true so that accounting changes such as balance adjustments do not count as modifications for modified_before and modified_on_or_after. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Dynamic Value Set Values

**Slug:** `SERVICETITAN_LIST_DYNAMIC_VALUE_SET_VALUES`

List the allowed values of a report parameter's dynamic value set in ServiceTitan, as rows of key and display name. Use it when a report's parameter description gives a dynamic_set_id instead of a fixed list of values.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `dynamic_set_id` | string | Yes | Id of the dynamic value set, taken from a report parameter's definition. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Employee Payrolls

**Slug:** `SERVICETITAN_LIST_EMPLOYEE_PAYROLLS`

List the payrolls (pay period records) of one office employee in ServiceTitan, one page per call. Use LIST_TECHNICIAN_PAYROLLS for a technician.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The spec does not list the sortable fields for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `status` | string ("Pending" | "Expired" | "Approved" | "Paid" | "Locked") | No | Return only payrolls with this status. |
| `page_size` | integer | No | Number of records per page. |
| `employee_id` | integer | Yes | Id of the office employee. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `ended_on_or_before` | string | No | Return payrolls whose period ends on or before this time. The spec text says 'before', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `started_on_or_after` | string | No | Return payrolls whose period starts on or after this time. The spec text says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `approved_on_or_after` | string | No | Return payrolls approved on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Employees

**Slug:** `SERVICETITAN_LIST_EMPLOYEES`

List employees in ServiceTitan, the office staff such as CSRs, dispatchers and bookkeepers, filtered by name, email or user id. Field technicians are a separate resource.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the employees with these ids. Maximum 50; sent comma-separated. |
| `name` | string | No | Filter by name; case-insensitive 'contains' match. |
| `page` | integer | No | Page number to return, starting at 1. |
| `email` | string | No | Filters records by email (exact match). |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `user_ids` | string | No | Look up employees by several user ids, maximum 50. The spec types this as one string and does not document the separator. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Equipment Systems

**Slug:** `SERVICETITAN_LIST_EQUIPMENT_SYSTEMS`

List equipment systems in ServiceTitan, the named groups of installed equipment at a customer location (for example one HVAC system), filtered by location or date range. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the equipment systems to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: ID, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `location_ids` | string | No | Filter by location IDs. The spec types this as one string and does not document the format for several ids. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return equipment systems created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return equipment systems modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return equipment systems created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return equipment systems modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Equipment Types

**Slug:** `SERVICETITAN_LIST_EQUIPMENT_TYPES`

List the equipment types defined in ServiceTitan for classifying installed equipment, filtered by name or date range. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the equipment types to return. List of ids, max 50, sent comma-separated. |
| `name` | string | No | Return equipment types whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: ID, Name, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return equipment types created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return equipment types modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return equipment types created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return equipment types modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Estimate Items

**Slug:** `SERVICETITAN_LIST_ESTIMATE_ITEMS`

List estimate line items in ServiceTitan across estimates, or for one estimate when estimate_id is given.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the items with these ids. Maximum 50; sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `estimate_id` | integer | No | Return only the items of this estimate. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Estimates

**Slug:** `SERVICETITAN_LIST_ESTIMATES`

List estimates in ServiceTitan, filtered by job, project, location, seller, status, total amount, or sold/created/modified time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the estimates with these ids. Maximum 50; sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The spec does not list the sortable fields for sort; the deprecated order_by names Id, CreatedOn, ModifiedOn and SoldOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `job_id` | integer | No | Filter by job id. |
| `status` | string | No | Filter by estimate status, for example Open, Sold or Dismissed. The accepted values are not listed in the spec for this filter. |
| `order_by` | string ("Id" | "CreatedOn" | "ModifiedOn" | "SoldOn") | No | Deprecated, use sort. Field to sort by: Id, CreatedOn, ModifiedOn or SoldOn. |
| `page_size` | integer | No | Number of records per page. |
| `job_number` | string | No | Filter by job number (the human-readable number, not the job id). |
| `project_id` | integer | No | Filter by project id. |
| `sold_after` | string | No | Return estimates sold after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `sold_by_id` | integer | No | Filter by the id of the technician credited with the sale. |
| `total_less` | number | No | Return estimates whose total is less than this amount. |
| `location_id` | integer | No | Filter by service location id. |
| `sold_before` | string | No | Return estimates sold before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `total_greater` | number | No | Return estimates whose total is greater than this amount. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `order_by_direction` | string ("asc" | "desc") | No | Deprecated, use sort. Sort direction: asc or desc. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `sold_by_employee_id` | integer | No | Filter by the id of the employee credited with the sale. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Estimate Status Changes

**Slug:** `SERVICETITAN_LIST_ESTIMATE_STATUS_CHANGES`

Return the status change history of one estimate in ServiceTitan, each with its UTC timestamp. Not paged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `estimate_id` | integer | Yes | Id of the estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Estimate Templates

**Slug:** `SERVICETITAN_LIST_ESTIMATE_TEMPLATES`

List estimate templates in ServiceTitan, the reusable sets of pricebook items that estimates and proposal templates are built from.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Expense Transaction Custom Field Types

**Slug:** `SERVICETITAN_LIST_EXPENSE_TRANSACTION_CUSTOM_FIELD_TYPES`

List the custom field type definitions available for expense transactions in ServiceTitan, one page per call. Use it to find valid custom field names before setting them with UPDATE_EXPENSE_TRANSACTION_CUSTOM_FIELDS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return records whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Expense Transactions

**Slug:** `SERVICETITAN_LIST_EXPENSE_TRANSACTIONS`

List expense transactions (for example card expenses) in ServiceTitan, one page per call. Filter by number, vendor name, employee, status, source system, cost or transaction date; the NotSet expense status is rejected with 400.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of expense transaction ids to return, sent comma-separated. The spec documents no maximum for this operation. |
| `page` | integer | No | Page number to return, starting at 1. |
| `number` | string | No | Filter by expense transaction number (partial match). |
| `date_to` | string | No | Filter expenses with transaction date before this date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `batch_id` | integer | No | Filter by specific batch ID. |
| `max_cost` | number | No | Filter expenses with total cost less than or equal to this value. |
| `min_cost` | number | No | Filter expenses with total cost greater than or equal to this value. |
| `date_from` | string | No | Filter expenses with transaction date on or after this date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `page_size` | integer | No | Number of records per page. |
| `job_number` | string | No | Filter by job number (partial match). |
| `employee_id` | integer | No | Filter by the employee associated with the expense. |
| `vendor_name` | string | No | Filter by vendor name (partial match). |
| `batch_number` | integer | No | Filter by batch number. |
| `custom_fields` | object | No | Custom field name-value filters, up to 50. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | array | No | Filter by sync status values. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `expense_statuses` | array | No | Return only expenses with one of these statuses. Do not pass NotSet: it is rejected with 400. |
| `external_sources` | array | No | List of originating systems to filter by (e.g. Ramp, Manual), sent comma-separated. |
| `business_unit_ids` | array | No | List of business unit IDs to filter by, sent comma-separated. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. Default And. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Finding Attachments

**Slug:** `SERVICETITAN_LIST_FINDING_ATTACHMENTS`

List the attachments of one ServiceTitan finding, by finding id. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the finding attachments to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: ID. |
| `page_size` | integer | No | Number of records per page. |
| `finding_id` | integer | Yes | Id of the finding that owns the attachment. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return finding attachments created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return finding attachments created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Findings

**Slug:** `SERVICETITAN_LIST_FINDINGS`

List findings in ServiceTitan, the issues or observations recorded at customer locations, filtered by location, installed equipment, source job, or date range. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the findings to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: ID, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `location_id` | integer | No | Id of the customer location to filter by. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `source_job_id` | integer | No | Id of the job where the finding was discovered. |
| `created_before` | string | No | Return findings created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return findings modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return findings created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return findings modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `installed_equipment_id` | integer | No | Id of the installed equipment to filter by. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Forms

**Slug:** `SERVICETITAN_LIST_FORMS`

List form definitions in ServiceTitan, filtered by name, published status, or whether they have conditional logic or triggers. Returns the forms themselves, not what people filled in.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of form ids to look up, sent comma-separated. |
| `name` | string | No | Filter by form name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `status` | string ("Any" | "Published" | "Unpublished") | No | Filter by publication status: Any, Published or Unpublished. |
| `page_size` | integer | No | Number of records per page. |
| `has_triggers` | boolean | No | Filter by whether the form has triggers. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `has_conditional_logic` | boolean | No | Filter by whether the form has conditional logic. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Form Submissions

**Slug:** `SERVICETITAN_LIST_FORM_SUBMISSIONS`

List filled-in form submissions in ServiceTitan with their answers, filtered by form, status, submitter, submission time, or the record the form is attached to (job, customer, location and so on).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, SubmittedOn, CreatedBy. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `owners` | array | No | Filter by the specific records the form is attached to, as a list of {type, id}. Sent in the documented indexed form: owners[0].type=Location&owners[0].id=2689281. |
| `status` | string ("Started" | "Completed" | "Any") | No | Filter by submission status: Started, Completed or Any. |
| `form_ids` | array | No | List of form ids to filter by, sent comma-separated. |
| `page_size` | integer | No | Number of records per page. |
| `owner_type` | string ("Job" | "Call" | "Customer" | "Location" | "Equipment" | "Technician" | "JobAppointment" | "Membership" | "Truck") | No | Filter by the kind of record the form is attached to: Job, Call, Customer, Location, Equipment, Technician, JobAppointment, Membership or Truck. |
| `created_by_id` | integer | No | Filter by the id of the user who created the submission. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `submitted_before` | string | No | Return submissions before this time. The spec describes this filter as the submission modified date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `submitted_on_or_after` | string | No | Return submissions on or after this time. The spec describes this filter as the submission modified date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List GL Accounts

**Slug:** `SERVICETITAN_LIST_GL_ACCOUNTS`

List general ledger (GL) accounts in ServiceTitan, one page per call. Filter by ids, names, numbers, types, subtypes, description text, source or active status; only active accounts are returned unless active is set.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of general ledger account ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `names` | array | No | List of account names, max 50, sent comma-separated. |
| `types` | array | No | List of account types, max 50, sent comma-separated. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `source` | string ("Undefined" | "AccountingSystem" | "ManuallyCreated" | "PublicApi") | No | Return only accounts created from this source. |
| `numbers` | array | No | List of account numbers, max 50, sent comma-separated. |
| `subtypes` | array | No | List of account subtypes, max 50, sent comma-separated. |
| `page_size` | integer | No | Number of records per page. |
| `description` | string | No | A substring that must be contained in the account description. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `is_intacct_group` | boolean | No | Set true to return only Sage Intacct group accounts. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `is_intacct_bank_account` | boolean | No | Set true to return only Sage Intacct bank accounts. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List GL Account Types

**Slug:** `SERVICETITAN_LIST_GL_ACCOUNT_TYPES`

List general ledger account types in ServiceTitan, one page per call. Use it to find the type names accepted when creating or filtering GL accounts.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of general ledger account type ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `names` | array | No | List of account type names, max 50, sent comma-separated. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Gross Pay Items

**Slug:** `SERVICETITAN_LIST_GROSS_PAY_ITEMS`

List gross pay items (earnings such as timesheet time, bonuses, salary and reimbursements) in ServiceTitan, one page per call. Filter by employee, payroll or date to get the earnings of a pay period. These are computed earnings, not the raw clock times in LIST_PAYROLL_JOB_TIMESHEETS or LIST_NON_JOB_TIMESHEETS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order, sent unchanged. The spec says only that it applies sorting by the specified fields: it documents neither the syntax nor the sortable fields for this operation. Other ServiceTitan lists use +Field ascending, -Field descending. |
| `page_size` | integer | No | Number of records per page. |
| `employee_id` | integer | No | Return only gross pay items of the employee or technician with this id; use with employee_type. |
| `payroll_ids` | string | No | Payroll id or ids whose gross pay items to return, as one string sent unchanged. The spec types this parameter as a string and does not document the separator for several ids. |
| `employee_type` | string ("Technician" | "Employee") | No | Whether employee_id refers to a Technician or an Employee. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `date_on_or_after` | string | No | Return gross pay items dated on or after this time. The spec text says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `date_on_or_before` | string | No | Return gross pay items dated on or before this time. The spec text says 'before', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_before` | string | No | Return items modified on or before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Installed Equipment

**Slug:** `SERVICETITAN_LIST_INSTALLED_EQUIPMENT`

List equipment installed at ServiceTitan customer locations, filtered by location, equipment system, parent, or date range. For catalog equipment in the pricebook use LIST_PRICEBOOK_EQUIPMENT. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the installed equipment records to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `parents` | array | No | Return equipment whose direct parent is any of these entries. Each entry needs both id and type (Equipment or System); types may be mixed. Sent as parents[0].id, parents[0].type, and so on. |
| `page_size` | integer | No | Number of records per page. |
| `has_parent` | boolean | No | True returns equipment that has a parent; false returns top-level equipment. |
| `has_system` | boolean | No | True returns equipment that belongs to a system; false returns unassigned equipment. |
| `system_ids` | array | No | Ids of equipment systems. Returns equipment at any level attached to these systems. Sent comma-separated. |
| `location_ids` | string | No | Ids of the locations to filter by. The spec types this as one string and does not document its format. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return installed equipment records created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return installed equipment records modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return installed equipment records created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return installed equipment records modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Installed Equipment Custom Field Types

**Slug:** `SERVICETITAN_LIST_INSTALLED_EQUIPMENT_CUSTOM_FIELD_TYPES`

List the custom field types defined for ServiceTitan installed equipment, with each type's data type and options. The descending flag is required. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting from 1. Always sent. |
| `sort_by` | string | No | Name of the field to sort by. The spec does not list the sortable fields. |
| `page_size` | integer | No | Number of records per page. Defaults to 50. Always sent. |
| `descending` | boolean | Yes | Set true to sort descending, false for ascending. |
| `created_before` | string | No | Return installed equipment custom field types created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return installed equipment custom field types modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return installed equipment custom field types created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return installed equipment custom field types modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Intacct Business Unit Mappings

**Slug:** `SERVICETITAN_LIST_INTACCT_BUSINESS_UNIT_MAPPINGS`

List how ServiceTitan business units map to Sage Intacct locations, departments and classes. Only useful for tenants with the Intacct accounting integration; page, page_size and include_total are all required here.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Business unit ids to look up. Sent as a repeated query parameter (ids=1&ids=2); the spec types it as an array and does not document a maximum. |
| `page` | integer | Yes | Page number to return. Required for this operation. The spec allows 0 as the lowest value and does not say whether the first page is 0 or 1. |
| `page_size` | integer | Yes | Number of records per page, 1 to 500. Required for this operation. |
| `include_total` | boolean | Yes | Set true to also return total_count. Required for this operation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Inventory Adjustments

**Slug:** `SERVICETITAN_LIST_INVENTORY_ADJUSTMENTS`

List inventory adjustments in ServiceTitan, filtered by type, inventory location, business unit, invoice, batch, sync status, or date range. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the inventory adjustments to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `number` | string | No | Return inventory adjustments with this number. |
| `batch_id` | integer | No | Id of the batch to filter by. |
| `page_size` | integer | No | Number of records per page. |
| `date_before` | string | No | Return adjustments with date before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `invoice_ids` | string | No | Ids of the invoices to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `custom_fields` | object | No | Custom field name-value filters. Each entry is sent as customFields.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | string | No | Sync statuses to filter by: Pending, Posted or Exported (the spec's Inventory.V2.SyncStatus values). The spec types this as one plain string and the format for several values is undocumented. |
| `created_before` | string | No | Return inventory adjustments created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return inventory adjustments modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `adjustment_types` | string | No | Adjustment types to filter by: Adjustment, BeginningBalance, InventoryReturn, InventoryCount, AutoConsume, ReturnToWarehouse, Consignment, ConsignmentInventoryCount, ReturnToVendor, IntracompanyTransferIncoming, IntracompanyTransferOutgoing. The spec types this as one plain string and the format for several values is undocumented. |
| `date_on_or_after` | string | No | Return adjustments with date on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `reference_number` | string | No | Return inventory adjustments with this reference number. |
| `business_unit_ids` | string | No | Ids of the business units to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `created_on_or_after` | string | No | Return inventory adjustments created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must also be given. The spec types this as one plain string and the format for several values is undocumented. |
| `modified_on_or_after` | string | No | Return inventory adjustments modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. |
| `inventory_location_ids` | string | No | Ids of the inventory locations to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Inventory Bill Custom Field Types

**Slug:** `SERVICETITAN_LIST_INVENTORY_BILL_CUSTOM_FIELD_TYPES`

List the custom field type definitions available for inventory bills in ServiceTitan, one page per call. Use it to find valid custom field names before setting them with UPDATE_INVENTORY_BILL_CUSTOM_FIELDS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return records whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Inventory Bills

**Slug:** `SERVICETITAN_LIST_INVENTORY_BILLS`

List inventory bills (vendor bills created from purchase orders and receipts) in ServiceTitan, one page per call. Filter by bill number, purchase order, job number, sync status, cost or dates; bills are read-only apart from custom fields and the exported mark.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of inventory bill ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `date_to` | string | No | End of the bill date range to return. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `batch_id` | integer | No | Return only inventory bills in the accounting batch with this id. |
| `max_cost` | number | No | Highest cost of the bills to return. |
| `min_cost` | number | No | Lowest cost of the bills to return. |
| `bill_type` | string ("NotSet" | "Procurement" | "ApBill" | "RecurringBill") | No | Filter by bill type: NotSet, Procurement, ApBill or RecurringBill. |
| `date_from` | string | No | Start of the bill date range to return. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `page_size` | integer | No | Number of records per page. |
| `job_number` | string | No | Filter by job number. The spec does not say how the value is matched. |
| `bill_number` | string | No | Filter by bill number. The spec does not say how the value is matched. |
| `batch_number` | integer | No | Return only inventory bills in the accounting batch with this number. |
| `custom_fields` | object | No | Custom field name-value filters, up to 50. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | array | No | Return only inventory bills with one of these accounting sync statuses: Pending, Posted, Exported, PostedAndExported. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `business_unit_ids` | string | No | Business unit ids to filter by, as one string. The spec types this as a plain string and the format for several ids is undocumented. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `purchase_order_types` | string | No | Purchase order types to filter by, as one string. The spec types this as a plain string; the format for several types and the accepted values are undocumented. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. Default And. |
| `purchase_order_number` | string | No | Filter by purchase order number. The spec does not say how the value is matched. |
| `date_reconciled_before` | string | No | Return bills reconciled before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `date_reconciled_on_or_after` | string | No | Return bills reconciled on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `three_way_match_discrepancy` | string ("NoDiscrepancy" | "Discrepancy") | No | Filter by three-way match discrepancy: NoDiscrepancy or Discrepancy. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Inventory Receipts

**Slug:** `SERVICETITAN_LIST_INVENTORY_RECEIPTS`

List inventory receipts in ServiceTitan, the records of items received against purchase orders, filtered by purchase order, vendor, bill, inventory location, or received date. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the inventory receipts to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `number` | string | No | Return the inventory receipt with this number. |
| `bill_id` | integer | No | Id of the bill to filter by. |
| `batch_id` | integer | No | Id of the accounting export batch to filter by. |
| `page_size` | integer | No | Number of records per page. |
| `vendor_ids` | string | No | Ids of the vendors to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `custom_fields` | object | No | Custom field name-value filters. Each entry is sent as customFields.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | string | No | Sync statuses to filter by: Pending, Posted or Exported (the spec's Inventory.V2.SyncStatus values). The spec types this as one plain string and the format for several values is undocumented. |
| `created_before` | string | No | Return inventory receipts created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return inventory receipts modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `received_before` | string | No | Return receipts with received date before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `business_unit_ids` | string | No | Ids of the business units to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `purchase_order_ids` | string | No | Ids of the purchase orders to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `created_on_or_after` | string | No | Return inventory receipts created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return inventory receipts modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `received_on_or_after` | string | No | Return receipts with received date on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. |
| `vendor_invoice_number` | string | No | Vendor invoice number to filter by. |
| `inventory_location_ids` | string | No | Ids of the inventory locations to filter by. The spec types this as one plain string and the format for several values is undocumented. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Inventory Returns

**Slug:** `SERVICETITAN_LIST_INVENTORY_RETURNS`

List vendor returns in ServiceTitan inventory, filtered by vendor, purchase order, job, inventory location, business unit, or return date. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the vendor returns to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `job_id` | integer | No | Id of the job to filter by. |
| `number` | string | No | Return the vendor return with this number. |
| `batch_id` | integer | No | Id of the accounting export batch to filter by. |
| `page_size` | integer | No | Number of records per page. |
| `vendor_ids` | string | No | Ids of the vendors to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `custom_fields` | object | No | Custom field name-value filters. Each entry is sent as customFields.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | string | No | Sync statuses to filter by: Pending, Posted or Exported (the spec's Inventory.V2.SyncStatus values). The spec types this as one plain string and the format for several values is undocumented. |
| `created_before` | string | No | Return vendor returns created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return vendor returns modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `reference_number` | string | No | Return vendor returns with this reference number. |
| `business_unit_ids` | string | No | Ids of the business units to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `purchase_order_id` | integer | No | Id of the purchase order to filter by. |
| `return_date_before` | string | No | Return vendor returns with return date before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return vendor returns created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must also be given. The spec types this as one plain string and the format for several values is undocumented. |
| `modified_on_or_after` | string | No | Return vendor returns modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. |
| `inventory_location_ids` | string | No | Ids of the inventory locations to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `return_date_on_or_after` | string | No | Return vendor returns with return date on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Inventory Return Types

**Slug:** `SERVICETITAN_LIST_INVENTORY_RETURN_TYPES`

List vendor return types in ServiceTitan inventory; a return type id is required to create a return. The active_only flag is required. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filter by return type name. The spec does not say whether the match is exact or partial. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The spec does not list the sortable fields. |
| `page_size` | integer | No | Number of records per page. |
| `active_only` | boolean | Yes | Required. Set true to return only active return types, false to include inactive ones. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return return types created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return return types modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return return types created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return return types modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Inventory Templates

**Slug:** `SERVICETITAN_LIST_INVENTORY_TEMPLATES`

List ServiceTitan inventory templates with their items, each item carrying a minimum and maximum quantity. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the inventory templates to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order. The spec says only that it sorts by the specified fields; the format and the sortable fields are undocumented for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return inventory templates created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return inventory templates modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return inventory templates created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return inventory templates modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Inventory Transfers

**Slug:** `SERVICETITAN_LIST_INVENTORY_TRANSFERS`

List inventory transfers in ServiceTitan, the movements of stock between inventory locations, filtered by status, source or destination location, transfer type, job, or date. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the inventory transfers to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn, Date. |
| `number` | string | No | Return the inventory transfer with this number. |
| `job_ids` | string | No | Ids of the jobs associated with the transfer. The spec types this as one plain string and the format for several values is undocumented. |
| `batch_id` | integer | No | Id of the batch to filter by. |
| `statuses` | string | No | Transfer statuses to filter by. The spec does not list the accepted values for this filter. The spec types this as one plain string and the format for several values is undocumented. |
| `page_size` | integer | No | Number of records per page. |
| `date_before` | string | No | Return transfers with date before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_fields` | object | No | Custom field name-value filters. Each entry is sent as customFields.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `sync_statuses` | string | No | Sync statuses to filter by: Pending, Posted or Exported (the spec's Inventory.V2.SyncStatus values). The spec types this as one plain string and the format for several values is undocumented. |
| `created_before` | string | No | Return inventory transfers created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return inventory transfers modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `to_location_ids` | string | No | Ids of the destination (to) inventory locations to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `date_on_or_after` | string | No | Return transfers with date on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `reference_number` | string | No | Return inventory transfers with this reference number. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `from_location_ids` | string | No | Ids of the source (from) inventory locations to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `transfer_type_ids` | string | No | Ids of the transfer types to filter by. The spec types this as one plain string and the format for several values is undocumented. |
| `created_on_or_after` | string | No | Return inventory transfers created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must also be given. The spec types this as one plain string and the format for several values is undocumented. |
| `modified_on_or_after` | string | No | Return inventory transfers modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Invoice Custom Field Types

**Slug:** `SERVICETITAN_LIST_INVOICE_CUSTOM_FIELD_TYPES`

List the custom field type definitions available for invoices in ServiceTitan, one page per call. Use it to find valid custom field names before setting them with UPDATE_INVOICE_CUSTOM_FIELDS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return records whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Invoices

**Slug:** `SERVICETITAN_LIST_INVOICES`

List customer invoices in ServiceTitan, one page per call; every invoice type (job, membership, project, point of sale, adjustment) comes from this one tool. Invoices of every status are returned unless statuses is set; the spec does not document which active state applies when active_state is left out.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the invoices with these ids; sent comma-separated. The spec documents no maximum for this operation. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `job_id` | integer | No | Return only invoices linked to the job with this id. |
| `number` | string | No | Return only invoices with this reference number. |
| `batch_id` | integer | No | Return only invoices in the accounting batch with this id. |
| `order_by` | string | No | Invoice field to order the list by. The spec does not list the accepted field names. |
| `statuses` | array | No | Return only records with one of these transaction statuses; every status is included when left out. |
| `page_size` | integer | No | Number of records per page. |
| `job_number` | string | No | Return only invoices linked to the job with this number. |
| `total_less` | number | No | Return invoices with a total less than or equal to this value. |
| `customer_id` | integer | No | Return only invoices for the customer with this id. |
| `active_state` | string ("ActiveOnly" | "InactiveOnly" | "All") | No | Filter by active state: ActiveOnly, InactiveOnly, or All. The spec does not document which one applies when this is left out. |
| `batch_number` | integer | No | Return only invoices in the accounting batch with this number. |
| `custom_fields` | object | No | Custom field name-value filters, up to 50. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `total_greater` | number | No | Return invoices with a total greater than or equal to this value. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `assigned_to_ids` | array | No | Return only invoices assigned to one of these user ids. |
| `due_date_before` | string | No | Return invoices with a due date before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `review_statuses` | array | No | Return only invoices with one of these review statuses. |
| `adjustment_to_id` | integer | No | Return only adjustment invoices that adjust the invoice with this id. |
| `business_unit_id` | integer | No | Return only invoices of the business unit with this id. |
| `invoiced_on_before` | string | No | Return invoices with an invoice date before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `order_by_direction` | string | No | Sort direction for order_by: desc or descending sorts descending, anything else ascending. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `due_date_on_or_after` | string | No | Return invoices with a due date on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `invoiced_on_or_after` | string | No | Return invoices with an invoice date on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `balance_filter_amount` | number | No | Amount to compare each invoice's balance against; use together with balance_filter_comparer. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. Default And. |
| `invoice_configurations` | array | No | Return only invoices of one of these configurations (invoice kinds). |
| `balance_filter_comparer` | string ("Equals" | "NotEquals" | "Greater" | "Less") | No | How to compare the balance with balance_filter_amount. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Invoice Tasks

**Slug:** `SERVICETITAN_LIST_INVOICE_TASKS`

List the workflow tasks attached to one invoice in ServiceTitan, one page per call. These are invoice tasks created from templates, not Task Management tasks.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. This tool sends 50 when it is left out; the spec documents no default for this operation. |
| `invoice_id` | integer | Yes | Id of the invoice. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Invoice Templates

**Slug:** `SERVICETITAN_LIST_INVOICE_TEMPLATES`

Look up membership invoice templates in ServiceTitan by id (ids is required, max 50). It cannot enumerate all templates: to browse every template use EXPORT_INVOICE_TEMPLATES; otherwise take ids from a customer membership's billing template or a recurring service's invoice template.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | Yes | Ids of the invoice templates to look up. List of ids, max 50, sent comma-separated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Attachments

**Slug:** `SERVICETITAN_LIST_JOB_ATTACHMENTS`

List the files attached to one job in ServiceTitan. The spec documents no response schema, so the body is returned unchanged under data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. Not sent unless set; the spec documents no default for this operation. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `job_id` | integer | Yes | Id of the job whose attachments to list. |
| `page_size` | integer | No | Number of records per page. Not sent unless set; the spec documents no default and no maximum for this operation, and no has_more flag in the response. |
| `include_total` | boolean | No | Documented query parameter of this operation. The response has no documented schema, so where a total count appears is not known. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Canceled Logs

**Slug:** `SERVICETITAN_LIST_JOB_CANCELED_LOGS`

List the canceled-log entries of one ServiceTitan job, one page per call; each entry records a cancellation of that job.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `job_id` | integer | Yes | ID of the job. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Cancel Reasons

**Slug:** `SERVICETITAN_LIST_JOB_CANCEL_REASONS`

List the cancel reasons configured in ServiceTitan, one page per call. Use it to pick the reason_id for Cancel Job; it does not say why a given job was canceled.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only), False (inactive only), Any (both). When omitted, this operation returns both active and inactive items. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Custom Field Types

**Slug:** `SERVICETITAN_LIST_JOB_CUSTOM_FIELD_TYPES`

List the custom field types available for ServiceTitan jobs, one page per call. Use the returned IDs as type_id in the custom_fields of Create Job or Update Job.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filters records by name (case-insensitive "contains" operation) |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Hold Reasons

**Slug:** `SERVICETITAN_LIST_JOB_HOLD_REASONS`

List the hold reasons configured in ServiceTitan, one page per call. Use it to pick the reason_id for Hold Appointment; it does not say why a given job is on hold.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only), False (inactive only), Any (both). When omitted, this operation returns both active and inactive items. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Notes

**Slug:** `SERVICETITAN_LIST_JOB_NOTES`

List the notes on one ServiceTitan job, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `job_id` | integer | Yes | ID of the job. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Jobs

**Slug:** `SERVICETITAN_LIST_JOBS`

List ServiceTitan jobs, one page per call, filtered by status, customer, location, project, technician, job type or date ranges for creation, modification, completion and appointments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these IDs. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn, Priority. |
| `priority` | string ("Low" | "Normal" | "High" | "Urgent") | No | Filter by job priority. |
| `page_size` | integer | No | Number of records per page. |
| `booking_id` | integer | No | Filters by booking ID that resulted in this job. |
| `invoice_id` | integer | No | Filters by job's invoice ID. |
| `job_number` | string | No | Filter by job number. |
| `job_status` | string ("Scheduled" | "Dispatched" | "InProgress" | "Hold" | "Completed" | "Canceled") | No | Filters by job status. |
| `project_id` | integer | No | Filters by project ID. |
| `sold_by_id` | integer | No | Filters by the technician who sold the job. |
| `campaign_id` | integer | No | Filters by job's campaign ID. |
| `customer_id` | integer | No | Filters by job's customer ID. |
| `job_type_id` | integer | No | Filters by job type ID. |
| `location_id` | integer | No | Filters by job's location ID. |
| `estimate_ids` | array | No | Filters by estimate IDs that are related to the job. List of ids, sent comma-separated. |
| `tag_type_ids` | array | No | Return jobs that have at least one of provided Tag Type assigned. List of ids, sent comma-separated. |
| `equipment_ids` | array | No | Return jobs that have at least one of provided equipment items attached. List of ids, sent comma-separated. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | No | Return jobs if technician is assigned to any appointment. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `business_unit_id` | integer | No | Filters by job's business unit ID. |
| `completed_before` | string | No | Return jobs that are completed before a certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | Performs lookup by external data key, external_data_values must also be provided. |
| `appointment_status` | string ("Scheduled" | "Dispatched" | "Working" | "Hold" | "Done" | "Canceled") | No | Filters by appointment status. Return a job if it has any appointment with the specified status. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | Performs lookup by external data values (maximum 50), external_data_key must also be provided. The spec types this as one string and does not document the separator. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `completed_on_or_after` | string | No | Return jobs completed on or after this date-time. The spec text says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `has_unused_appointments` | boolean | No | If set to true, return jobs that have unused appointments. |
| `created_from_estimate_id` | integer | No | Filters by the sold estimate ID from which the job was created. |
| `appointment_starts_before` | string | No | Return jobs that have any appointment starting before this date-time; the spec text says 'after', the parameter name is followed. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `appointment_starts_on_or_after` | string | No | Return jobs that have any appointment starting on or after this date-time. The spec text says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | If this GUID is provided, external data corresponding to this application GUID will be returned. GUID string. |
| `first_appointment_starts_before` | string | No | Return jobs whose first appointment starts before date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `first_appointment_starts_on_or_after` | string | No | Return jobs whose first appointment starts on or after date-time. Use with first_appointment_starts_before to find jobs whose first appointment is within the specified date range. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Job Types

**Slug:** `SERVICETITAN_LIST_JOB_TYPES`

List ServiceTitan job types, one page per call, filtered by name, priority, duration or dates. Use it to find the job_type_id for Create Job.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these IDs. List of ids, max 50, sent comma-separated. |
| `name` | string | No | Filters by job type name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `order_by` | string ("id" | "modifiedOn" | "createdOn") | No | Field to order results by. Supported: id, modifiedOn, createdOn. This operation uses order_by and order_by_direction instead of sort. |
| `priority` | string | No | Filter by the job type's priority (level of urgency). |
| `page_size` | integer | No | Number of records per page. |
| `max_duration` | integer | No | Maximum job type duration, in seconds. |
| `min_duration` | integer | No | Minimum job type duration, in seconds. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `order_by_direction` | string ("asc" | "ascending" | "desc" | "descending") | No | Order direction. Supported: asc or ascending, desc or descending. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | If this guid is provided, external data corresponding to this application guid will be returned. GUID string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Journal Entries

**Slug:** `SERVICETITAN_LIST_JOURNAL_ENTRIES`

List journal entries in ServiceTitan, one page per call (page_size max 500). Filter by posting, transaction or export dates, number range, status, sync status, transaction type, names, business units or reference numbers or custom fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of journal entry ids (GUID strings) to return, max 50, sent comma-separated. |
| `name` | string | No | Return journal entries whose name contains this text. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Number, Name, Status, CreatedOn, ExportedOn, ExportedBy, PostDate. |
| `statuses` | array | No | Return only journal entries with one of these posting statuses: Open, Closed. |
| `number_to` | integer | No | Return journal entries with a number less than or equal to this value. |
| `page_size` | integer | No | Number of records per page (50 by default, maximum 500). |
| `posted_to` | string | No | Return journal entries posted on or before this date; the time part is ignored. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `ref_number` | array | No | List of transaction reference numbers to match, max 50, sent comma-separated. |
| `exported_by` | array | No | List of user ids; return journal entries exported by any of them, max 50, sent comma-separated. |
| `exported_to` | string | No | Return journal entries exported on or before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `number_from` | integer | No | Return journal entries with a number greater than or equal to this value. |
| `posted_from` | string | No | Return journal entries posted on or after this date; the time part is ignored. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `vendor_name` | string | No | Return journal entries containing a transaction for a vendor whose name contains this text. |
| `custom_fields` | object | No | Custom field name-value filters, up to 5. Each entry is sent as customField.name=value. Null values are not supported by this action. |
| `customer_name` | string | No | Return journal entries containing a transaction for a customer whose name contains this text. |
| `empty_entries` | string ("IncludeExceptNotSynced" | "Include" | "Exclude") | No | Whether journal entries with no lines are returned: IncludeExceptNotSynced, Include or Exclude. Ignored when ids is given. |
| `exported_from` | string | No | Return journal entries exported on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `location_name` | string | No | Return journal entries containing a transaction for a customer location whose name contains this text. |
| `sync_statuses` | array | No | Return only journal entries with one of these sync statuses: NotSynced, InProgress, Synced, OutOfSync, Error, Excluded. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `business_unit_ids` | array | No | List of business unit IDs, max 50, sent comma-separated. |
| `transaction_types` | array | No | Return journal entries that contain at least one transaction of one of these types. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `service_agreement_ids` | array | No | List of service agreement IDs, max 50, sent comma-separated. |
| `transaction_posted_to` | string | No | Return journal entries containing a transaction posted on or before this date; the time part is ignored. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `inventory_location_name` | string | No | Return journal entries containing a transaction for an inventory location whose name contains this text. |
| `transaction_posted_from` | string | No | Return journal entries containing a transaction posted on or after this date; the time part is ignored. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Journal Entry Details

**Slug:** `SERVICETITAN_LIST_JOURNAL_ENTRY_DETAILS`

List one journal entry's amounts in ServiceTitan aggregated by GL account, business unit, transaction and pricebook item, one page per call (page_size max 500). Use LIST_JOURNAL_ENTRY_SUMMARY for totals per account only.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page (50 by default, maximum 500). |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `journal_entry_id` | string | Yes | Id of the journal entry (a GUID string), from LIST_JOURNAL_ENTRIES. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Journal Entry Summary

**Slug:** `SERVICETITAN_LIST_JOURNAL_ENTRY_SUMMARY`

List one journal entry's amounts in ServiceTitan aggregated by GL account and business unit, one page per call (page_size max 500). Use LIST_JOURNAL_ENTRY_DETAILS for the finer breakdown by transaction and pricebook item.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page (50 by default, maximum 500). |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `journal_entry_id` | string | Yes | Id of the journal entry (a GUID string), from LIST_JOURNAL_ENTRIES. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Labor Types

**Slug:** `SERVICETITAN_LIST_LABOR_TYPES`

List payroll labor types in ServiceTitan, one page per call. A labor type classifies paid time and can map to a labor service in the pricebook.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The spec does not list the sortable fields for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Lead Notes

**Slug:** `SERVICETITAN_LIST_LEAD_NOTES`

List the notes on one lead in ServiceTitan, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `lead_id` | integer | Yes | Id of the lead. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. The spec text for this operation says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Leads

**Slug:** `SERVICETITAN_LIST_LEADS`

List leads in ServiceTitan, one page per call, filtered by status, customer, dates or the name and phone given on the lead. Use status Open to find leads that still need follow-up.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these ids. Maximum 50; sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `status` | string ("Open" | "Dismissed" | "Converted") | No | Filter by lead status. |
| `page_size` | integer | No | Number of records per page. |
| `lead_phone` | string | No | Filter by the phone number given on the lead. |
| `customer_id` | integer | No | Return only leads linked to this customer id. |
| `is_prospect` | boolean | No | True returns leads with no customer or whose customer has no job; false returns leads whose customer has a job. Omit to return all leads. |
| `customer_zip` | string | No | Filters by customer zip. |
| `customer_city` | string | No | Filters by customer city. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `customer_state` | string | No | Filters by customer state. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `without_customer` | boolean | No | True returns only leads with no customer or location record; false returns only leads that have them. Omit to return all leads. |
| `lead_customer_name` | string | No | Filter by the customer name given on the lead. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `generate_permanent_url` | boolean | No | Set true to have a permanent URL generated for each lead returned. |
| `is_capture_source_form` | boolean | No | Set true to return only leads captured from a lead form; false to return only the others. |
| `customer_created_before` | string | No | Return leads whose customer was created before this time. The spec text for this filter contradicts its name; the name is followed here. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `customer_created_on_or_after` | string | No | Return leads whose customer was created on or after this time. The spec text for this filter contradicts its name; the name is followed here. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `customer_modified_on_or_after` | string | No | Return leads whose customer was modified on or after this time. The spec text for this filter contradicts its name; the name is followed here. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Location Contacts

**Slug:** `SERVICETITAN_LIST_LOCATION_CONTACTS`

List contact entries for one or more ServiceTitan locations, or by created or modified date range, one page per call. Pass one location ID for the single-location case. A customer's contacts are separate records; use LIST_CUSTOMER_CONTACTS for them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `location_ids` | array | No | Return contact entries for one or more location IDs. Sent comma-separated. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return entries modified before this time. One of location_ids or the date filters must be sent. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return entries modified on or after this time. One of location_ids or the date filters must be sent. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Location Custom Field Types

**Slug:** `SERVICETITAN_LIST_LOCATION_CUSTOM_FIELD_TYPES`

List the custom field types defined for locations in ServiceTitan, one page per call. Use it to find the type_id needed when setting custom_fields on a location.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filters records by name (case-insensitive "contains" operation). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Location Labor Rates

**Slug:** `SERVICETITAN_LIST_LOCATION_LABOR_RATES`

List the hourly labor rates set per customer location and labor type in ServiceTitan, one page per call. Pass location_ids to limit the result to specific locations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Location (sorts by the location id), CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `location_ids` | string | No | Return location rates for the specified location ids. The spec types this as one string and does not document the format or the separator for more than one id. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Location Notes

**Slug:** `SERVICETITAN_LIST_LOCATION_NOTES`

List the notes on one location in ServiceTitan, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `location_id` | integer | Yes | Id of the location. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. The spec text for this operation says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Locations

**Slug:** `SERVICETITAN_LIST_LOCATIONS`

List locations in ServiceTitan, one page per call, filtered by customer, name, address, ids or dates. Only active locations are returned unless active is set to False or Any.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these ids. Maximum 50; sent comma-separated. |
| `zip` | string | No | Filter by the zip code of the location address. |
| `city` | string | No | Filter by the city of the location address. |
| `name` | string | No | Filter by location name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `unit` | string | No | Filter by the unit of the location address. |
| `state` | string | No | Filter by the state of the location address. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `street` | string | No | Filter by the street of the location address. |
| `country` | string | No | Filter by the country of the location address. |
| `latitude` | number | No | Filter by the latitude of the location address. |
| `longitude` | number | No | Filter by the longitude of the location address. |
| `page_size` | integer | No | Number of records per page. |
| `customer_id` | integer | No | Return only locations that belong to this customer id. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | Look up records by this external data key. external_data_values must be sent with it. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must be sent with it. The spec types this as one string and does not document the separator. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Return only records that carry external data written under this application GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Membership Custom Field Types

**Slug:** `SERVICETITAN_LIST_MEMBERSHIP_CUSTOM_FIELD_TYPES`

List the custom field types defined for customer memberships in ServiceTitan. Returns field definitions (id, name, data type), not the values stored on a membership.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filter by name; case-insensitive 'contains' match. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Memberships

**Slug:** `SERVICETITAN_LIST_MEMBERSHIPS`

List customer memberships in ServiceTitan, filtered by customer, status, duration, billing frequency or created/modified time. A customer membership is one customer's instance of a membership type; use the membership types tools for the templates themselves.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of ids to look up, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `status` | string ("Active" | "Suspended" | "Expired" | "Canceled" | "Deleted") | No | Filters by membership status. |
| `duration` | integer | No | Filter by membership duration in months. The spec says null selects ongoing memberships; this tool cannot send null, so that filter is not available here. |
| `page_size` | integer | No | Number of records per page. |
| `customer_ids` | string | No | Filter by customer ids. The spec types this as one string and does not document the separator. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `billing_frequency` | string ("OneTime" | "Monthly" | "EveryOtherMonth" | "Quarterly" | "BiAnnual" | "Annual") | No | Filters by membership billing frequency. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Membership Status Changes

**Slug:** `SERVICETITAN_LIST_MEMBERSHIP_STATUS_CHANGES`

Return the status change history of one customer membership in ServiceTitan. Not paged: every change for that membership comes back in one call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `membership_id` | integer | Yes | Id of the customer membership. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Membership Type Discounts

**Slug:** `SERVICETITAN_LIST_MEMBERSHIP_TYPE_DISCOUNTS`

List the discounts granted by one membership type in ServiceTitan. Not paged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `membership_type_id` | integer | Yes | Id of the membership type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Membership Type Duration Billing Items

**Slug:** `SERVICETITAN_LIST_MEMBERSHIP_TYPE_DURATION_BILLING_ITEMS`

List the duration and billing options of one membership type in ServiceTitan, with their prices. Each option's id is the duration_billing_id needed to sell a membership. Not paged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `membership_type_id` | integer | Yes | Id of the membership type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Membership Type Recurring Service Items

**Slug:** `SERVICETITAN_LIST_MEMBERSHIP_TYPE_RECURRING_SERVICE_ITEMS`

List the recurring services included in one membership type in ServiceTitan. Not paged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `membership_type_id` | integer | Yes | Id of the membership type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Membership Types

**Slug:** `SERVICETITAN_LIST_MEMBERSHIP_TYPES`

List membership types in ServiceTitan, the templates that memberships are sold from. Discounts, duration/billing options, recurring services and tags are left out unless the matching include_ flag is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of ids to look up, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `duration` | integer | No | Filter by membership duration in months. The spec says null selects ongoing memberships, but this tool cannot send null; leave it out to send no duration filter. |
| `page_size` | integer | No | Number of records per page. |
| `include_tags` | boolean | No | Whether tag type IDs associated with the membership type should be included in the result. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `billing_frequency` | string ("OneTime" | "Monthly" | "EveryOtherMonth" | "Quarterly" | "BiAnnual" | "Annual") | No | Filters by membership billing frequency. |
| `include_discounts` | boolean | No | Whether discounts should be included in the result. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_duration_billing` | boolean | No | Whether duration/billing should be included in the result. |
| `include_recurring_services` | boolean | No | Whether recurring service types associated with the membership type should be included in the result. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Non Job Appointments

**Slug:** `SERVICETITAN_LIST_NON_JOB_APPOINTMENTS`

List ServiceTitan non-job appointments (technician time blocked for non-customer activities), one page per call, filtered by technician, start range or timesheet code. For customer job visits use List Appointments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these IDs. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, ModifiedOn. |
| `page_size` | integer | No | Number of records per page. |
| `active_only` | boolean | No | Whether to return only active non-job appointments. This operation uses active_only instead of the active filter. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | No | Return non-job appointments for this technician. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `timesheet_code_id` | integer | No | Return non-job appointments with this timesheet code. |
| `starts_on_or_after` | string | No | Return non-job appointments that start on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `starts_on_or_before` | string | No | Return non-job appointments that start on or before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `show_on_technician_schedule` | boolean | No | Whether the non-job appointment shows on the technicians schedule even if there is no timesheet. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Non Job Timesheets

**Slug:** `SERVICETITAN_LIST_NON_JOB_TIMESHEETS`

List non-job timesheets (time recorded against timesheet codes) in ServiceTitan, one page per call. Filter by employee_id, employee_type, dates or active status. Covers time not on a job; for dispatch-to-done time on job appointments use LIST_PAYROLL_JOB_TIMESHEETS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `employee_id` | integer | No | Return only timesheets of the employee or technician with this id. |
| `employee_type` | string ("Technician" | "Employee") | No | Return only timesheets of this kind of staff: Technician or Employee. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Opt Outs

**Slug:** `SERVICETITAN_LIST_OPT_OUTS`

Return every phone number that has opted out of contact in ServiceTitan, with its opt-out type. Not paged; numbers come back in E.164 format.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payment Custom Field Types

**Slug:** `SERVICETITAN_LIST_PAYMENT_CUSTOM_FIELD_TYPES`

List the custom field type definitions available for payments in ServiceTitan, one page per call. Use it to find valid custom field names before setting them with UPDATE_PAYMENT_CUSTOM_FIELDS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return records whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order. The spec gives this parameter no description and no sortable fields on this operation; other lists of this API use +Field ascending, -Field descending. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payments

**Slug:** `SERVICETITAN_LIST_PAYMENTS`

List payments received from customers in ServiceTitan, one page per call. Filter by the invoices they were applied to, customer, deposit, paid date, status or total; use LIST_AP_PAYMENTS for payments made to vendors.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of payment ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending, e.g. -CreatedOn. The spec does not list the sortable fields for this operation. |
| `batch_id` | integer | No | Return only payments in the accounting batch with this id. |
| `statuses` | string | No | Return only payments with these statuses. The payment statuses the spec documents are Pending, Posted and Exported. The spec types this as one string and does not document its format or separator, so the value is sent as given. |
| `page_size` | integer | No | Number of records per page. |
| `total_less` | number | No | Return payments with a total less than this value; whether the boundary itself is included is undocumented. |
| `customer_id` | integer | No | Return only payments for the customer with this id. |
| `deposit_ids` | string | No | Return only payments included in these bank deposit ids. The spec types this as one string and does not document its format or separator, so the value is sent as given. |
| `active_state` | string ("ActiveOnly" | "InactiveOnly" | "All") | No | Filter by active state: ActiveOnly (default), InactiveOnly, or All. |
| `batch_number` | integer | No | Return only payments in the accounting batch with this number. |
| `custom_fields` | object | No | Custom field name-value filters, up to 50. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `paid_on_after` | string | No | Return payments paid after this date-time; whether the boundary itself is included is undocumented. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `total_greater` | number | No | Return payments with a total greater than this value; whether the boundary itself is included is undocumented. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `paid_on_before` | string | No | Return payments paid before this date-time; whether the boundary itself is included is undocumented. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `transaction_type` | string ("Undefined" | "JournalEntry" | "ReceivePayment") | No | Return only payments of this transaction type: Undefined, JournalEntry or ReceivePayment. |
| `business_unit_ids` | string | No | Return only payments of these business unit ids. The spec types this as one string and does not document its format or separator, so the value is sent as given. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. Default And. |
| `applied_to_invoice_ids` | string | No | Return only payments applied to these invoice ids. The spec types this as one string and does not document its format or separator, so the value is sent as given. |
| `applied_to_reference_number` | string | No | Return only payments applied to the invoice with this reference number. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payment Terms

**Slug:** `SERVICETITAN_LIST_PAYMENT_TERMS`

List payment terms (the due-date rules attached to invoices and bills) in ServiceTitan, one page per call. Payment terms are read-only through the API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of payment term ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, CreatedOn. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return payment terms modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return payment terms modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payment Types

**Slug:** `SERVICETITAN_LIST_PAYMENT_TYPES`

List payment types (for example cash, check, credit card) in ServiceTitan, one page per call. Use it to find the type_id needed by UPDATE_PAYMENT.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of payment type ids to return, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payroll Activity Codes

**Slug:** `SERVICETITAN_LIST_PAYROLL_ACTIVITY_CODES`

List payroll activity codes (earning codes that map earnings to a payroll processor's codes) in ServiceTitan, one page per call. These are not timesheet activities; use LIST_TIMESHEET_ACTIVITIES for recorded time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The spec does not list the sortable fields for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payroll Adjustments

**Slug:** `SERVICETITAN_LIST_PAYROLL_ADJUSTMENTS`

List payroll adjustments (manually entered earnings or deductions) in ServiceTitan, one page per call. Filter by employee ids or posted date.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The spec does not list the sortable fields for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `employee_ids` | array | No | Return only adjustments of these employee ids. Sent comma-separated; the spec documents no maximum. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `posted_on_or_after` | string | No | Return payroll adjustments posted on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `posted_on_or_before` | string | No | Return payroll adjustments posted on or before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payroll Job Splits

**Slug:** `SERVICETITAN_LIST_PAYROLL_JOB_SPLITS`

List payroll job splits across jobs in ServiceTitan, one page per call: one record per technician and job with that technician's split. Pass job_ids with one ID for a single job or a provider-formatted multi-ID string for several jobs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only), False (inactive only), Any (both). The spec documents no default for this operation. |
| `job_ids` | string | No | Job ID or provider-formatted ID string whose job splits to return, sent unchanged. For one job, pass its decimal ID as a string. The provider spec does not document the separator for multiple IDs. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return job splits created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return job splits modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return job splits created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return job splits modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payroll Job Timesheets

**Slug:** `SERVICETITAN_LIST_PAYROLL_JOB_TIMESHEETS`

List technician job timesheets across jobs in ServiceTitan (dispatch, arrive, cancel and done times), one page per call. job_ids limits the result to given jobs, but its format is not documented; use LIST_PAYROLL_JOB_TIMESHEETS_FOR_JOB for one job. Covers time on job appointments only; time on non-job codes (meetings, training) is in LIST_NON_JOB_TIMESHEETS, and paid earnings are in LIST_GROSS_PAY_ITEMS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `job_ids` | string | No | Ids of the jobs whose timesheets to return, as one string. The spec types this parameter as a string and documents neither its format nor its separator. |
| `ended_on` | string | No | Return timesheets with a dispatch, arrive, cancel or done time before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `page_size` | integer | No | Number of records per page. |
| `started_on` | string | No | Return timesheets with a dispatch, arrive, cancel or done time after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | No | Return only timesheets of the technician with this id. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payroll Job Timesheets for Job

**Slug:** `SERVICETITAN_LIST_PAYROLL_JOB_TIMESHEETS_FOR_JOB`

List the technician timesheets recorded on one job in ServiceTitan (dispatch, arrive, cancel and done times), one page per call. Use LIST_PAYROLL_JOB_TIMESHEETS to read across jobs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `job_id` | integer | Yes | Id of the job. |
| `ended_on` | string | No | Return timesheets with a dispatch, arrive, cancel or done time before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `page_size` | integer | No | Number of records per page. |
| `started_on` | string | No | Return timesheets with a dispatch, arrive, cancel or done time after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | No | Return only timesheets of the technician with this id. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payrolls

**Slug:** `SERVICETITAN_LIST_PAYROLLS`

List payrolls (one employee's or technician's pay period record) across all staff in ServiceTitan, one page per call. Filter by employee type, period dates, approval date or status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The spec does not list the sortable fields for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `status` | string ("Pending" | "Expired" | "Approved" | "Paid" | "Locked") | No | Return only payrolls with this status. |
| `page_size` | integer | No | Number of records per page. |
| `employee_type` | string ("Technician" | "Employee") | No | Return only payrolls of this kind of staff: Technician or Employee. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `ended_on_or_before` | string | No | Return payrolls whose period ends on or before this time. The spec text says 'before', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `started_on_or_after` | string | No | Return payrolls whose period starts on or after this time. The spec text says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `approved_on_or_after` | string | No | Return payrolls approved on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Payroll Settings

**Slug:** `SERVICETITAN_LIST_PAYROLL_SETTINGS`

List the payroll settings (hourly rate, hire date, manager, external payroll id) of employees and technicians in ServiceTitan, one page per call. Filter by employee type or active status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `employee_type` | string ("Technician" | "Employee") | No | Return only settings of this kind of staff: Technician or Employee. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Pricebook Categories

**Slug:** `SERVICETITAN_LIST_PRICEBOOK_CATEGORIES`

List pricebook categories in ServiceTitan, optionally only Services or Materials categories. Each category carries its nested subcategories. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `category_type` | string ("Services" | "Materials") | No | Return only categories of this type: Services or Materials. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return pricebook categories created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return pricebook categories modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return pricebook categories created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return pricebook categories modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Pricebook Discounts and Fees

**Slug:** `SERVICETITAN_LIST_PRICEBOOK_DISCOUNTS_AND_FEES`

List discounts and fees in the ServiceTitan pricebook, with optional search text and category filters. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the discounts and fees to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Code, DisplayName, CreatedOn, ModifiedOn, Price, MemberPrice, AddOnPrice, AddOnMemberPrice, MaterialsCost, PrimaryVendor, Cost, Manufacturer, Priority. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `search_text` | string | No | Text to search for, 2 to 200 characters. Case-insensitive partial match on display name, code, and description. |
| `category_ids` | string | No | Pricebook category ids to filter by. Returns items in these categories and all their subcategories; omit for all categories. The spec types this as one string and its example is 123,456. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return discounts and fees created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return discounts and fees modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `created_on_or_after` | string | No | Return discounts and fees created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up. external_data_key must also be given. The spec types this as one string and does not document the separator. |
| `modified_on_or_after` | string | No | Return discounts and fees modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Pricebook Equipment

**Slug:** `SERVICETITAN_LIST_PRICEBOOK_EQUIPMENT`

List equipment items in the ServiceTitan pricebook (sellable catalog entries such as furnaces), with optional search text and category filters. For equipment installed at a customer location use LIST_INSTALLED_EQUIPMENT. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the pricebook equipment items to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Code, DisplayName, CreatedOn, ModifiedOn, Price, MemberPrice, AddOnPrice, AddOnMemberPrice, MaterialsCost, PrimaryVendor, Cost, Manufacturer, Priority. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `search_text` | string | No | Text to search for, 2 to 200 characters. Case-insensitive partial match on display name, code, and description. |
| `category_ids` | string | No | Pricebook category ids to filter by. Returns items in these categories and all their subcategories; omit for all categories. The spec types this as one string and its example is 123,456. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return pricebook equipment items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return pricebook equipment items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `created_on_or_after` | string | No | Return pricebook equipment items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up. external_data_key must also be given. The spec types this as one string and does not document the separator. |
| `modified_on_or_after` | string | No | Return pricebook equipment items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Pricebook Material Cost Types

**Slug:** `SERVICETITAN_LIST_PRICEBOOK_MATERIAL_COST_TYPES`

List the cost types that can be assigned to materials in the ServiceTitan pricebook. Takes no inputs and returns a single page.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Pricebook Material Markups

**Slug:** `SERVICETITAN_LIST_PRICEBOOK_MATERIAL_MARKUPS`

List the material markup tiers in the ServiceTitan pricebook, each a from/to range with the markup percent applied to it. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting from 1. |
| `page_size` | integer | No | Number of records per page. The tool sends 50 when unset; the spec documents no default for this operation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Pricebook Materials

**Slug:** `SERVICETITAN_LIST_PRICEBOOK_MATERIALS`

List materials in the ServiceTitan pricebook, with optional search text, category, and cost type filters. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the pricebook materials to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Code, DisplayName, CreatedOn, ModifiedOn, Price, MemberPrice, AddOnPrice, AddOnMemberPrice, MaterialsCost, PrimaryVendor, Cost, Manufacturer, Priority. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `search_text` | string | No | Text to search for, 2 to 200 characters. Case-insensitive partial match on display name, code, and description. |
| `category_ids` | array | No | Ids of pricebook categories. Returns items in these categories and all their subcategories. Sent comma-separated, as the spec example shows. Omit to return items from all categories. |
| `cost_type_ids` | string | No | Ids of the cost types to filter by, as one string. The spec types this as a string and does not document the separator. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return pricebook materials created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return pricebook materials modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | External data key to filter by. |
| `created_on_or_after` | string | No | Return pricebook materials created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to filter by, as one string. The spec types this as a string and does not document the separator. |
| `is_other_direct_cost` | boolean | No | True returns only materials marked as other direct cost; false excludes them. |
| `modified_on_or_after` | string | No | Return pricebook materials modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Pricebook Services

**Slug:** `SERVICETITAN_LIST_PRICEBOOK_SERVICES`

List services in the ServiceTitan pricebook, with optional search text and category filters. Set calculate_prices to apply current dynamic pricing rules. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the pricebook services to return. Maximum 50; sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Code, DisplayName, CreatedOn, ModifiedOn, Price, MemberPrice, AddOnPrice, AddOnMemberPrice, MaterialsCost, PrimaryVendor, Cost, Manufacturer, Priority. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `search_text` | string | No | Text to search for. Case-insensitive partial match on display name, code, and description. |
| `category_ids` | string | No | Pricebook category ids. Returns items in these categories and all their subcategories. The spec types this as one string and does not document the separator. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return pricebook services created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return pricebook services modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `calculate_prices` | boolean | No | Set true to return prices calculated with the current dynamic pricing rules. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `created_on_or_after` | string | No | Return pricebook services created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up. external_data_key must also be given. The spec types this as one string and does not document the separator or a maximum. |
| `modified_on_or_after` | string | No | Return pricebook services modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Budget Codes

**Slug:** `SERVICETITAN_LIST_PROJECT_BUDGET_CODES`

List the budget codes of one ServiceTitan project, one page per call, optionally filtered by budget code, segment or segment item IDs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | Yes | ID of the project. |
| `segment_ids` | array | No | Return only budget codes that use these segments. List of ids, sent comma-separated. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `budget_code_ids` | array | No | Return only budget codes with these IDs. List of ids, sent comma-separated. |
| `segment_item_ids` | array | No | Return only budget codes that use these segment items. List of ids, sent comma-separated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Budget Code Segment Item Children

**Slug:** `SERVICETITAN_LIST_PROJECT_BUDGET_CODE_SEGMENT_ITEM_CHILDREN`

List the child items under one item of a budget code segment within a ServiceTitan project, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | Yes | ID of the project. |
| `segment_id` | integer | Yes | ID of the budget code segment. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `segment_item_id` | integer | Yes | ID of the segment item. |
| `include_children` | boolean | No | Whether to include the child items nested under each segment item. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Budget Code Segment Items

**Slug:** `SERVICETITAN_LIST_PROJECT_BUDGET_CODE_SEGMENT_ITEMS`

List the items of one budget code segment within a ServiceTitan project, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | Yes | ID of the project. |
| `segment_id` | integer | Yes | ID of the budget code segment. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `include_children` | boolean | No | Whether to include the child items nested under each segment item. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Budget Code Segments

**Slug:** `SERVICETITAN_LIST_PROJECT_BUDGET_CODE_SEGMENTS`

List the budget code segments of one ServiceTitan project's work breakdown structure.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting from 1. Not sent unless set; the spec documents no default for this operation. |
| `page_size` | integer | No | Number of records per page. Not sent unless set; the spec documents no default and no maximum for this operation. The response has no has_more flag: the last page is the one with fewer records than page_size. |
| `project_id` | integer | Yes | ID of the project. |
| `include_total` | boolean | No | Documented query parameter of this operation. The documented response has no total count field, so its effect is not known. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Custom Field Types

**Slug:** `SERVICETITAN_LIST_PROJECT_CUSTOM_FIELD_TYPES`

List the custom field types available for ServiceTitan projects, one page per call. Use the returned IDs as type_id in the custom_fields of Create Project or Update Project.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filters records by name (case-insensitive "contains" operation). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Field to sort by. Sortable fields: Id, Name. The spec of this operation does not state the +Field / -Field direction prefix that other ServiceTitan lists document. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Daily Logs

**Slug:** `SERVICETITAN_LIST_PROJECT_DAILY_LOGS`

List the daily logs of one ServiceTitan project, one page per call, optionally limited to a date range. Returns summaries; use Get Project Daily Log for the full log.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `date_to` | string | No | Only return daily logs on or before this date, in yyyy-MM-dd format. |
| `date_from` | string | No | Only return daily logs on or after this date, in yyyy-MM-dd format. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | Yes | The project ID. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Notes

**Slug:** `SERVICETITAN_LIST_PROJECT_NOTES`

List the notes on one ServiceTitan project, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | Yes | ID of the project. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Projects

**Slug:** `SERVICETITAN_LIST_PROJECTS`

List ServiceTitan projects, one page per call, filtered by customer, location, status, job, technician, manager or date ranges. Use job_id to find the project a job belongs to.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these IDs. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn, Name, TargetCompletionDate. |
| `job_id` | integer | No | Return project if it contains the specified job. |
| `status` | string | No | Return projects that have one of the given statuses. Pass None as one of the values to include projects without a status. The separator for several values is not documented. |
| `page_size` | integer | No | Number of records per page. |
| `invoice_id` | integer | No | Return projects if it contains the specified invoice. |
| `customer_id` | integer | No | Filters by customer ID. |
| `location_id` | integer | No | Filters by location ID. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `starts_before` | string | No | Return projects that start before date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `technician_id` | integer | No | Return project if technician is assigned to any appointments on any job in the project. |
| `appointment_id` | integer | No | Return project if it contains the specified appointment in the project's jobs. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `project_number` | string | No | Filter by project number. |
| `modified_before` | string | No | Return projects whose last modification date is before date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `project_type_id` | integer | No | Return projects if it contains the specified project type. |
| `completed_before` | string | No | Return projects that are completed before date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `business_unit_ids` | array | No | Returns projects which have at least one of the provided business units assigned. List of ids, sent comma-separated; the spec types this as one string and does not document the separator. |
| `external_data_key` | string | No | Performs lookup by external data key, external_data_values must also be provided. |
| `starts_on_or_after` | string | No | Return projects that start on or after date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `project_manager_ids` | array | No | Filters by id of managers for matching project. List of ids, sent comma-separated; the spec types this as one string and does not document the separator. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must be sent with it. The spec types this as one string and does not document the separator. |
| `modified_on_or_after` | string | No | Return projects whose last modification date is on or after date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `completed_on_or_after` | string | No | Return projects that are completed on or after date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `contract_start_date_before` | string | No | Return projects whose contract start date is before date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `target_completion_date_before` | string | No | Return projects whose target completion date is before date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | If this guid is provided, external data corresponding to this application guid will be returned. GUID string. |
| `contract_start_date_on_or_after` | string | No | Return projects whose contract start date is on or after date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `target_completion_date_on_or_after` | string | No | Return projects whose target completion date is on or after date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Statuses

**Slug:** `SERVICETITAN_LIST_PROJECT_STATUSES`

List the project statuses configured in ServiceTitan, one page per call. Use the IDs as status_id on a project.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these IDs. List of ids, max 50, sent comma-separated. |
| `name` | string | No | Filters by project status name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, Order, ModifiedOn, CreatedOn. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Sub Statuses

**Slug:** `SERVICETITAN_LIST_PROJECT_SUB_STATUSES`

List the project sub statuses configured in ServiceTitan, one page per call, optionally for one parent status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these IDs. List of ids, max 50, sent comma-separated. |
| `name` | string | No | Filters by project sub status name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, Order, StatusId, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `status_id` | integer | No | Filters by parent project status id. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Project Types

**Slug:** `SERVICETITAN_LIST_PROJECT_TYPES`

List the project types configured in ServiceTitan, one page per call. Use the IDs as project_type_id on a project.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Proposal Templates

**Slug:** `SERVICETITAN_LIST_PROPOSAL_TEMPLATES`

List proposal templates in ServiceTitan, which map the options of a proposal type to estimate templates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `proposal_type_id` | integer | No | Filter by proposal type id, from the proposal types list. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Proposal Types

**Slug:** `SERVICETITAN_LIST_PROPOSAL_TYPES`

List proposal types in ServiceTitan with their options. Use it to get the proposal_type_id and proposal_type_option_id values that proposal templates need. Not paged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Provider Booking Contacts

**Slug:** `SERVICETITAN_LIST_PROVIDER_BOOKING_CONTACTS`

List the contact entries on one booking in ServiceTitan that belongs to a given booking provider, one page per call. Works only when the connection was granted the booking provider tag passed as booking_provider_id. Use LIST_BOOKING_CONTACTS when the connection has no booking provider restriction.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `booking_id` | integer | Yes | Id of the booking. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `booking_provider_id` | integer | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Provider Bookings

**Slug:** `SERVICETITAN_LIST_PROVIDER_BOOKINGS`

List the bookings in ServiceTitan that belong to one booking provider, one page per call. Works only when the connection was granted the booking provider tag passed as booking_provider_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the records with these ids. Maximum 50; sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `page_size` | integer | No | Number of records per page. |
| `external_id` | string | No | Filters by booking's external ID. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `booking_provider_id` | integer | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Purchase Order Markups

**Slug:** `SERVICETITAN_LIST_PURCHASE_ORDER_MARKUPS`

List the purchase order markup tiers in ServiceTitan, each a from/to range with the markup percent applied to it. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the purchase order markups to return, sent comma-separated. The spec documents no maximum for this operation. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, From, To, Percent. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return purchase order markups created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return purchase order markups modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return purchase order markups created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return purchase order markups modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Purchase Order Requests

**Slug:** `SERVICETITAN_LIST_PURCHASE_ORDER_REQUESTS`

List purchase order requests in ServiceTitan, filtered by request status, number, job, project, technician, or date range. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the purchase order requests to return, sent comma-separated. The spec documents no maximum for this operation. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `job_id` | integer | No | Id of the job to filter by. |
| `job_ids` | string | No | Ids of the jobs to filter by. The spec types this as one string and does not document the separator. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | No | Id of the project to filter by. |
| `date_before` | string | No | Return purchase order requests with date before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | No | Id of the technician to filter by. |
| `created_before` | string | No | Return purchase order requests created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `request_number` | string | No | Purchase order request number to filter by. |
| `request_status` | string ("PendingApproval" | "Approved" | "Rejected") | No | Purchase order request status to filter by. The spec enum has PendingApproval, Approved and Rejected; its text names only PendingApproval and Rejected as available. |
| `modified_before` | string | No | Return purchase order requests modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `date_on_or_after` | string | No | Return purchase order requests with date on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return purchase order requests created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return purchase order requests modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Purchase Orders

**Slug:** `SERVICETITAN_LIST_PURCHASE_ORDERS`

List purchase orders in ServiceTitan, filtered by status, number, job, project, technician, inventory location, or date range. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the purchase orders to return. Maximum 50; sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn, Date, RequiredOn. |
| `job_id` | integer | No | Id of the job to filter by. |
| `number` | string | No | Return the purchase orders with this number. |
| `status` | string ("Pending" | "Sent" | "PartiallyReceived" | "Received" | "Exported" | "Canceled") | No | Purchase order status to filter by: Pending, Sent, PartiallyReceived, Received, Exported or Canceled. |
| `job_ids` | string | No | Ids of the jobs to filter by. The spec types this as one string and does not document the separator. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | No | Id of the project to filter by. |
| `date_before` | string | No | Return purchase orders with date before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `sent_before` | string | No | Return purchase orders sent before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | No | Id of the technician to filter by. |
| `created_before` | string | No | Return purchase orders created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return purchase orders modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `required_before` | string | No | Return purchase orders with required on date before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `date_on_or_after` | string | No | Return purchase orders with date on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `sent_on_or_after` | string | No | Return purchase orders sent on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return purchase orders created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return purchase orders modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `required_on_or_after` | string | No | Return purchase orders with required on date on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `inventory_location_ids` | string | No | Ids of the inventory locations to filter by. The spec types this as one string and does not document the separator. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Purchase Order Types

**Slug:** `SERVICETITAN_LIST_PURCHASE_ORDER_TYPES`

List purchase order types in ServiceTitan; a type id is required to create a purchase order. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return purchase order types created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return purchase order types modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return purchase order types created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return purchase order types modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Recurring Service Events

**Slug:** `SERVICETITAN_LIST_RECURRING_SERVICE_EVENTS`

List recurring service events in ServiceTitan, the visits generated from a location's recurring services, filtered by location, job, follow-up status or created/modified time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the events to look up. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `job_id` | integer | No | Filter by job id. |
| `status` | string ("NotAttempted" | "Unreachable" | "Contacted" | "Won" | "Dismissed") | No | Filter by follow-up status of the event: NotAttempted, Unreachable, Contacted, Won or Dismissed. |
| `page_size` | integer | No | Number of records per page. |
| `location_id` | integer | No | Filter by location id. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Recurring Services

**Slug:** `SERVICETITAN_LIST_RECURRING_SERVICES`

List location recurring services in ServiceTitan (a recurring service type applied to one location), filtered by membership, location or created/modified time. Technician ids are left out unless include_technicians is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the recurring services to look up. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `location_ids` | string | No | Location ids to filter by, as one string. The spec types this as a string and does not document the separator. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `membership_ids` | string | No | Customer membership ids to filter by, as one string. The spec types this as a string and does not document the separator. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_technicians` | boolean | No | Set true to include preferred technician ids in the result; otherwise preferred_technician_ids is null. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Recurring Service Types

**Slug:** `SERVICETITAN_LIST_RECURRING_SERVICE_TYPES`

List recurring service types in ServiceTitan, the templates that location recurring services are created from, filtered by membership type, recurrence type or duration type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of ids to look up, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `duration_type` | string ("Continuous" | "NumberOfVisits") | No | Filters by duration type. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `recurrence_type` | string ("Weekly" | "Monthly" | "Seasonal" | "Daily" | "NthWeekdayOfMonth") | No | Filters by recurrence type. |
| `membership_type_id` | integer | No | Filters by membership type ID. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Remittance Vendors

**Slug:** `SERVICETITAN_LIST_REMITTANCE_VENDORS`

List remittance vendors (the pay-to parties for vendor payments) in ServiceTitan, one page per call. These are not the inventory vendors that purchase orders are placed with.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the remittance vendors with these ids. The spec types this parameter as an array, so each id is sent as its own ids value; it documents no maximum. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Report Categories

**Slug:** `SERVICETITAN_LIST_REPORT_CATEGORIES`

List the report categories in ServiceTitan. Start here: every other report tool needs a category id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Reports

**Slug:** `SERVICETITAN_LIST_REPORTS`

List the reports in one report category in ServiceTitan, with id, name and description.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `report_category` | string | Yes | Id of the report category, from the report categories list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Reviews

**Slug:** `SERVICETITAN_LIST_REVIEWS`

List customer reviews collected by ServiceTitan Marketing Reputation, one page per call, filtered by date, rating, source, technician, campaign or location. Several filters take numeric codes whose meanings the spec does not document.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `sources` | array | No | Return only reviews from these sources (review platforms). The accepted names are not documented. |
| `to_date` | string | No | End of the review date range. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `from_date` | string | No | Start of the review date range. The spec does not say which review date this filters. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `page_size` | integer | No | Number of records per page. |
| `to_rating` | number | No | Highest rating to include. |
| `external_id` | string | No | Return the review with this external id, the id given by the review platform. |
| `from_rating` | number | No | Lowest rating to include. |
| `internal_id` | integer | No | Return the review with this internal id. |
| `report_type` | integer ("0" | "1" | "2") | No | Report type code: 0, 1 or 2. The spec does not document what each code means. |
| `search_text` | string | No | Free-text search term. The spec does not say which review fields are searched. |
| `campaign_ids` | array | No | Return only reviews matched to these campaign ids. |
| `location_ids` | array | No | Return only reviews matched to these location ids. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `response_types` | array | No | Response type codes to include, each 0, 1 or 2. The spec does not document what each code means. |
| `technician_ids` | array | No | Return only reviews matched to these technician ids. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `review_statuses` | array | No | Review match status codes to include, each 0 to 6. The spec does not document what each code means. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_reviews_without_campaign` | boolean | No | Set true to also return reviews not matched to any campaign. |
| `include_reviews_without_location` | boolean | No | Set true to also return reviews not matched to any location. |
| `include_reviews_without_technician` | boolean | No | Set true to also return reviews not matched to any technician. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Router Sessions

**Slug:** `SERVICETITAN_LIST_ROUTER_SESSIONS`

List the customer booking sessions that went through one Scheduling Pro router in ServiceTitan, with outcome, customer details and any job or booking created.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `router_id` | string | Yes | Id of the Scheduling Pro router (a string). No ServiceTitan API lists routers, so the id has to come from the user. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Schedulers

**Slug:** `SERVICETITAN_LIST_SCHEDULERS`

List the online booking schedulers set up in ServiceTitan Scheduling Pro, with their status and default flag. Each record also carries data_api_key, the scheduler's web-install key; it is sensitive, so do not repeat it to the user unless asked.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Scheduler Sessions

**Slug:** `SERVICETITAN_LIST_SCHEDULER_SESSIONS`

List the customer booking sessions of one Scheduling Pro scheduler in ServiceTitan, with customer details, outcome and any job or booking created.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of records per page. |
| `scheduler_id` | string | Yes | Id of the Scheduling Pro scheduler (a string), from the schedulers list. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Service Agreement Custom Field Types

**Slug:** `SERVICETITAN_LIST_SERVICE_AGREEMENT_CUSTOM_FIELD_TYPES`

List the custom field types defined for service agreements in ServiceTitan. Returns field definitions, not the values stored on an agreement.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Filter by name; case-insensitive 'contains' match. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Service Agreements

**Slug:** `SERVICETITAN_LIST_SERVICE_AGREEMENTS`

List service agreements in ServiceTitan, the maintenance contracts for commercial customers, filtered by customer, business unit, status or created/modified time. Read-only: the API has no way to create or change an agreement.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the agreements with these ids. Maximum 50; sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, CreatedOn, ModifiedOn, StartDate, EndDate. |
| `status` | string ("Draft" | "Sent" | "Rejected" | "Accepted" | "Activated" | "Canceled" | "Expired" | "AutoRenew") | No | Filter by service agreement status. |
| `page_size` | integer | No | Number of records per page. |
| `customer_ids` | string | No | Filter by customer ids. The spec types this as one string and does not document how several ids are separated. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `business_unit_ids` | string | No | Filter by business unit ids. The spec types this as one string and does not document how several ids are separated. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Tag Types

**Slug:** `SERVICETITAN_LIST_TAG_TYPES`

List tag types in ServiceTitan, the labels that can be put on customers, jobs, locations and other records. The tag type ids are what other tools take as tag_type_ids.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Tasks

**Slug:** `SERVICETITAN_LIST_TASKS`

List office tasks in ServiceTitan Task Management, one page per call, filtered by status, priority, assignee, customer, job, project or dates. Set include_subtasks to true to also return each task's subtasks. These are Task Management tasks, not the invoice workflow tasks of CREATE_INVOICE_TASK / LIST_INVOICE_TASKS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of task ids to look up, sent comma-separated. |
| `name` | string | No | Filter by task name. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, DescriptionModifiedOn, CompletedBy, Priority. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only), False (inactive only), Any (both). The spec does not document the default for this operation. |
| `job_id` | integer | No | Filter by job id. |
| `statuses` | string | No | Task status to filter by. Documented status values: ToDo, InProgress, OnHold, Canceled, Completed. The spec types this as one string and does not document the format for several statuses. |
| `is_closed` | boolean | No | Deprecated, use statuses. Filter by whether the task is closed. |
| `page_size` | integer | No | Number of records per page. |
| `job_number` | string | No | Filter by job number (the human-readable number, not the job id). |
| `priorities` | array | No | Task priorities to include, sent comma-separated. Values: Low, Normal, High, Urgent. |
| `project_id` | integer | No | Filter by project id. |
| `customer_id` | integer | No | Filter by customer id. |
| `task_number` | integer | No | Filter by task number (the human-readable number, not the task id). |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `assigned_to_id` | integer | No | Filter by the id of the employee the task is assigned to. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `reported_by_id` | integer | No | Filter by the id of the employee who reported the task. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `reported_before` | string | No | Return tasks reported before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `completed_before` | string | No | Return tasks completed before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_subtasks` | boolean | No | Set true to include each task's subtasks in sub_tasks_data. The spec does not document the default. |
| `business_unit_ids` | array | No | List of business unit ids to filter by, sent comma-separated. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `reported_on_or_after` | string | No | Return tasks reported on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `completed_on_or_after` | string | No | Return tasks completed on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `involved_employee_ids` | array | No | List of employee ids involved in the task, sent comma-separated. |
| `employee_task_type_ids` | array | No | List of task type ids to filter by, sent comma-separated. |
| `employee_task_source_ids` | array | No | List of task source ids to filter by, sent comma-separated. |
| `description_modified_before` | string | No | Return tasks whose description was modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `employee_task_resolution_ids` | array | No | List of task resolution ids to filter by, sent comma-separated. |
| `description_modified_on_or_after` | string | No | Return tasks whose description was modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Tax Zones

**Slug:** `SERVICETITAN_LIST_TAX_ZONES`

List tax zones and their tax rates in ServiceTitan, one page per call; with no filter every active tax zone is returned. Tax zones are read-only through the API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the tax zones with these ids; sent comma-separated. The spec types this parameter as one string and documents neither the separator nor a maximum. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, Name, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return tax zones created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return tax zones modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return tax zones created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return tax zones modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Teams

**Slug:** `SERVICETITAN_LIST_TEAMS`

List ServiceTitan dispatch teams, one page per call. Inactive teams are left out unless include_inactive is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, ModifiedOn. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `include_inactive` | boolean | No | Whether to include inactive teams. This operation uses include_inactive instead of the active filter. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Technician Payrolls

**Slug:** `SERVICETITAN_LIST_TECHNICIAN_PAYROLLS`

List the payrolls (pay period records) of one technician in ServiceTitan, one page per call. Use LIST_EMPLOYEE_PAYROLLS for an office employee.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The spec does not list the sortable fields for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `status` | string ("Pending" | "Expired" | "Approved" | "Paid" | "Locked") | No | Return only payrolls with this status. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | Yes | Id of the technician. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `ended_on_or_before` | string | No | Return payrolls whose period ends on or before this time. The spec text says 'before', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `started_on_or_after` | string | No | Return payrolls whose period starts on or after this time. The spec text says 'after', so whether the boundary itself is included is unverified. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `approved_on_or_after` | string | No | Return payrolls approved on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Technician Ratings

**Slug:** `SERVICETITAN_LIST_TECHNICIAN_RATINGS`

List technician ratings in ServiceTitan, one page per call, filtered by technician, job or dates. Each rating is tied to one technician and one job.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. The sortable fields are not documented for this operation. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `job_id` | integer | No | Return only ratings tied to this job id. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | No | Return only ratings of this technician id. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Technicians

**Slug:** `SERVICETITAN_LIST_TECHNICIANS`

List technicians in ServiceTitan, the field staff who work jobs, filtered by name or user id. Office employees are a separate resource.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the technicians with these ids. Maximum 50; sent comma-separated. |
| `name` | string | No | Filter by name; case-insensitive 'contains' match. |
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `user_ids` | string | No | Return only the technicians with these user ids, maximum 50. The spec types this as one string and does not document the separator. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Technician Shifts

**Slug:** `SERVICETITAN_LIST_TECHNICIAN_SHIFTS`

List ServiceTitan technician shifts, one page per call, filtered by technician, shift type (Normal, OnCall, TimeOff), time range, or text in the title or note.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `shift_type` | string ("Normal" | "OnCall" | "TimeOff") | No | Return shifts of this type. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `note_contains` | string | No | Return shifts whose note contains this text. |
| `technician_id` | integer | No | Return shifts of this technician. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `title_contains` | string | No | Return shifts whose title contains this text. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `ends_on_or_before` | string | No | Return shifts that end on or before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `starts_on_or_after` | string | No | Return shifts that start on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Technician Skills

**Slug:** `SERVICETITAN_LIST_TECHNICIAN_SKILLS`

List ServiceTitan technician skills, one page per call, optionally for one technician. Each entry is one skill held by one technician.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `technician_id` | integer | No | Return only the skills of this technician. |
| `created_before` | string | No | Return items created before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after certain date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Timesheet Activities

**Slug:** `SERVICETITAN_LIST_TIMESHEET_ACTIVITIES`

List timesheet activities (blocks of time recorded against an activity type, from the Timesheets API) in ServiceTitan, one page per call. It filters only by job, project, active status and created or modified dates, not by employee or work date; for job dispatch/arrive/done times use LIST_PAYROLL_JOB_TIMESHEETS, for time booked to payroll timesheet codes use LIST_NON_JOB_TIMESHEETS, and for paid earnings use LIST_GROSS_PAY_ITEMS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order. The spec says only that this applies sorting by the specified fields; it lists no sortable fields and no format for this operation. Other ServiceTitan lists use +Field ascending and -Field descending. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `job_id` | integer | No | Return only activities associated with the job with this id. |
| `page_size` | integer | No | Number of records per page. |
| `project_id` | integer | No | Return only activities associated with the project with this id. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Timesheet Activity Categories

**Slug:** `SERVICETITAN_LIST_TIMESHEET_ACTIVITY_CATEGORIES`

List timesheet activity categories, the groups that activity types belong to, in ServiceTitan, one page per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Timesheet Activity Types

**Slug:** `SERVICETITAN_LIST_TIMESHEET_ACTIVITY_TYPES`

List timesheet activity types in ServiceTitan, one page per call. Use it to find the activity_type_id needed to create a timesheet activity.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this date-time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Timesheet Codes

**Slug:** `SERVICETITAN_LIST_TIMESHEET_CODES`

List timesheet codes in ServiceTitan, one page per call. Each code says which employee type it applies to and whether it is unpaid, paid, clock in/out or paid time off. Codes are the categories used by LIST_NON_JOB_TIMESHEETS; they are not payroll activity codes (LIST_PAYROLL_ACTIVITY_CODES).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Trucks

**Slug:** `SERVICETITAN_LIST_TRUCKS`

List trucks in ServiceTitan inventory, the vehicle inventory locations assigned to technicians. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the trucks to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return trucks created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return trucks modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `created_on_or_after` | string | No | Return trucks created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must also be given. The spec types this as one plain string and the format for several values is undocumented. |
| `modified_on_or_after` | string | No | Return trucks modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List User Roles

**Slug:** `SERVICETITAN_LIST_USER_ROLES`

List user roles in ServiceTitan, the permission sets assigned to employees and technicians. Use it to get the role_id needed to create an employee or technician.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the user roles with these ids. Maximum 50; sent comma-separated. |
| `name` | string | No | Filter by name; case-insensitive 'contains' match. |
| `page` | integer | No | Page number to return, starting at 1. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `employee_type` | string ("None" | "Employee" | "Technician" | "All") | No | Filter roles by employee type: None, Employee, Technician or All. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vehicle Events

**Slug:** `SERVICETITAN_LIST_VEHICLE_EVENTS`

List historical driving events for FleetPro vehicles in ServiceTitan, by VIN and time window. Only data older than 7 days is available, the window may span at most 24 hours, at most 50 VINs per call, and results are capped at 10,000 records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `vins` | array | Yes | Vehicle Identification Numbers to return data for, 1 to 50. Get them from the vehicles list. |
| `end_time` | string | Yes | End of the time window, at most 24 hours after start_time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `pagination` | object | Yes | Paging settings, sent in the request body. Required: set pageNumber (starting at 1) and pageSize; to read the next page, call again with pageNumber plus 1. |
| `start_time` | string | Yes | Start of the time window. Must be more than 7 days in the past. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vehicle GPS Records

**Slug:** `SERVICETITAN_LIST_VEHICLE_GPS_RECORDS`

List historical GPS positions for FleetPro vehicles in ServiceTitan, by VIN and time window. Only data older than 7 days is available, the window may span at most 24 hours, at most 50 VINs per call, and results are capped at 10,000 records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `vins` | array | Yes | Vehicle Identification Numbers to return data for, 1 to 50. Get them from the vehicles list. |
| `end_time` | string | Yes | End of the time window, at most 24 hours after start_time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `pagination` | object | Yes | Paging settings, sent in the request body. Required: set pageNumber (starting at 1) and pageSize; to read the next page, call again with pageNumber plus 1. |
| `start_time` | string | Yes | Start of the time window. Must be more than 7 days in the past. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vehicles

**Slug:** `SERVICETITAN_LIST_VEHICLES`

List every FleetPro vehicle in ServiceTitan with its VIN, name and driver. Use it to get the VINs that the vehicle GPS and event tools filter by. Not paged.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vendor Custom Field Types

**Slug:** `SERVICETITAN_LIST_VENDOR_CUSTOM_FIELD_TYPES`

List the custom field types defined for ServiceTitan vendors, with each type's data type and options. Use it to find valid custom field names before writing vendor custom fields. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Return vendor custom field types whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | Sort order: +Field ascending, -Field descending. The spec does not list the sortable fields for this operation. |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return vendor custom field types created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return vendor custom field types modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return vendor custom field types created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return vendor custom field types modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vendors

**Slug:** `SERVICETITAN_LIST_VENDORS`

List inventory vendors (suppliers) in ServiceTitan, filtered by name, ids, active status, external data, or date range. Returns one page per call; request the next page while has_more is true. For the pay-to parties of vendor payments use LIST_REMITTANCE_VENDORS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only the vendors with these ids. The spec types this parameter as an array, so each id is sent as its own ids value; it documents no maximum. |
| `name` | string | No | Return vendors whose name contains this text (case-insensitive). |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `custom_fields` | object | No | Custom field name-value filters. Each entry is sent as customField.name=value. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return vendors created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return vendors modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `created_on_or_after` | string | No | Return vendors created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must also be given. The spec types this as one plain string and the format for several values is undocumented. |
| `modified_on_or_after` | string | No | Return vendors modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_field_operator` | string ("And" | "Or") | No | Operator between custom field filters: And or Or. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Warehouses

**Slug:** `SERVICETITAN_LIST_WAREHOUSES`

List warehouses in ServiceTitan inventory; warehouse ids are used as inventory locations on purchase orders, returns, and trucks. Returns one page per call; request the next page while has_more is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Ids of the warehouses to return. List of ids, max 50, sent comma-separated. |
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, ModifiedOn, CreatedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return warehouses created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return warehouses modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_key` | string | No | External data key to look up. external_data_values must also be given. |
| `created_on_or_after` | string | No | Return warehouses created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_values` | string | No | External data values to look up, maximum 50. external_data_key must also be given. The spec types this as one plain string and the format for several values is undocumented. |
| `modified_on_or_after` | string | No | Return warehouses modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data_application_guid` | string | No | Application GUID whose external data should be returned with each record. External data written under one GUID is only visible with that same GUID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Zones

**Slug:** `SERVICETITAN_LIST_ZONES`

List ServiceTitan dispatch zones, one page per call. A zone groups zip codes, cities or territories and the business units and technicians that serve them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `sort` | string | No | +Field ascending, -Field descending. Sortable fields: Id, CreatedOn, ModifiedOn. |
| `active` | string ("True" | "Any" | "False") | No | Filter by active status: True (active only, default), False (inactive only), Any (both). |
| `page_size` | integer | No | Number of records per page. |
| `include_total` | boolean | No | Set true to have total_count filled in the response; otherwise it is null. |
| `created_before` | string | No | Return items created before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_before` | string | No | Return items modified before this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_on_or_after` | string | No | Return items created on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `modified_on_or_after` | string | No | Return items modified on or after this time. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Lookup Opt Outs

**Slug:** `SERVICETITAN_LOOKUP_OPT_OUTS`

Check the opt-out status of specific phone numbers in ServiceTitan. Numbers with no opt-out are left out of the result, and the whole request fails if any number cannot be parsed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_numbers` | array | Yes | Phone numbers to act on; at least one. Each must be a valid phone number, E.164 format such as +15551234567 recommended. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark AP Bills as Exported

**Slug:** `SERVICETITAN_MARK_AP_BILLS_AS_EXPORTED`

Mark one or more AP bills as exported to an external accounting system in ServiceTitan. Returns one result row per id with a success flag and error message, so check each row: a failed id does not fail the call. No operation to undo the mark is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_ids` | array | Yes | List of AP bill IDs to mark as exported. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark AP Credits as Exported

**Slug:** `SERVICETITAN_MARK_AP_CREDITS_AS_EXPORTED`

Mark one or more AP credits as exported to an external accounting system in ServiceTitan. Returns one result row per id with a success flag and error message, so check each row: a failed id does not fail the call. No operation to undo the mark is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ap_credits` | array | Yes | The AP credits to mark as exported, one entry per AP credit, each with its id. At least one AP credit is required. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark AP Payments as Exported

**Slug:** `SERVICETITAN_MARK_AP_PAYMENTS_AS_EXPORTED`

Mark one or more AP payments as exported to an external accounting system in ServiceTitan. Returns one result row per id with a success flag and error message, so check each row: a failed id does not fail the call. No operation to undo the mark is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ap_payments` | array | Yes | The AP payments to mark as exported, one entry per AP payment, each with its id and optional external id and message. At least one AP payment is required. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark Bank Deposits as Exported

**Slug:** `SERVICETITAN_MARK_BANK_DEPOSITS_AS_EXPORTED`

Mark one or more bank deposits as exported to an external accounting system in ServiceTitan. Unlike the other mark-as-exported tools, the documented response has no body, so there is no per-id result to check. ServiceTitan documents no operation to undo the exported mark.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `deposit_ids` | array | Yes | List of bank deposit ids to mark as exported. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark Credit Memos as Exported

**Slug:** `SERVICETITAN_MARK_CREDIT_MEMOS_AS_EXPORTED`

Mark one or more credit memos as exported to an external accounting system in ServiceTitan. Returns one result row per id with a success flag and error message, so check each row: a failed id does not fail the call. No operation to undo the mark is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `credit_memos` | array | Yes | The credit memos to mark as exported, one entry per credit memo, each with its id and optional external id and message. At least one credit memo is required. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark Expense Transactions as Exported

**Slug:** `SERVICETITAN_MARK_EXPENSE_TRANSACTIONS_AS_EXPORTED`

Mark one or more expense transactions as exported in ServiceTitan. Only an expense in the Posted state moves to Exported; an id that is missing or not Posted comes back as a failure row while the call itself still succeeds. ServiceTitan documents no operation to undo a successful exported mark.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `expense_ids` | array | Yes | List of expense transaction IDs to mark as exported. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark Inventory Bills as Exported

**Slug:** `SERVICETITAN_MARK_INVENTORY_BILLS_AS_EXPORTED`

Mark one or more inventory bills as exported to an external accounting system in ServiceTitan. Returns one result row per id with a success flag and error message, so check each row: a failed id does not fail the call. ServiceTitan documents no operation to undo a successful exported mark.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `inventory_bill_ids` | array | Yes | List of inventory bill ids to mark as exported. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark Invoices as Exported

**Slug:** `SERVICETITAN_MARK_INVOICES_AS_EXPORTED`

Mark one or more invoices as exported to an external accounting system in ServiceTitan. Returns one result row per id with a success flag and error message, so check each row: a failed id does not fail the call. No operation to undo the mark is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoices` | array | Yes | The invoices to mark as exported, one entry per invoice, each with its id and optional external id and message. At least one invoice is required. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark Recurring Service Event Complete

**Slug:** `SERVICETITAN_MARK_RECURRING_SERVICE_EVENT_COMPLETE`

Mark a recurring service event complete in ServiceTitan by linking it to a job. It also copies the recurring service's invoice template items onto that job's invoice.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Id of the job the event is completed on; the event is linked to this job. |
| `event_id` | integer | Yes | Id of the recurring service event. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Mark Recurring Service Event Incomplete

**Slug:** `SERVICETITAN_MARK_RECURRING_SERVICE_EVENT_INCOMPLETE`

Mark a recurring service event incomplete in ServiceTitan by unlinking it from a job. It also deletes the invoice items that were copied onto the job's invoice when the event was completed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Id of the job the event was completed on; the event is unlinked from this job. |
| `event_id` | integer | Yes | Id of the recurring service event. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Match Budget Codes

**Slug:** `SERVICETITAN_MATCH_BUDGET_CODES`

Check budget code strings against the company-level ServiceTitan budget codes; each input code comes back with a validity flag and the budget codes it matches. Read-only.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `codes` | array | Yes | Budget code strings to check. Sent as a repeated query parameter. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Match Project Budget Codes

**Slug:** `SERVICETITAN_MATCH_PROJECT_BUDGET_CODES`

Check budget code strings against the budget codes of one ServiceTitan project; each input code comes back with a validity flag and the budget codes it matches. Read-only.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `codes` | array | Yes | Budget code strings to check. Sent as a repeated query parameter. |
| `project_id` | integer | Yes | ID of the project. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Reject Purchase Order Request

**Slug:** `SERVICETITAN_REJECT_PURCHASE_ORDER_REQUEST`

Reject a ServiceTitan purchase order request by its request id, with a required rejection reason. Takes the request id from LIST_PURCHASE_ORDER_REQUESTS, not a purchase order id. No way to withdraw a rejection is documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `rejection_reason` | string ("CostTooHigh" | "WrongVendor" | "Other") | Yes | Reason the purchase order request is rejected. |
| `purchase_order_request_id` | integer | Yes | Id of the purchase order request to reject; this is not a purchase order id. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Appointment Confirmation

**Slug:** `SERVICETITAN_REMOVE_APPOINTMENT_CONFIRMATION`

Remove the confirmation from a ServiceTitan job appointment, returning it to unconfirmed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | ID of the job appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Appointment Hold

**Slug:** `SERVICETITAN_REMOVE_APPOINTMENT_HOLD`

Remove the hold from a ServiceTitan job appointment that was put on hold.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | ID of the job appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Customer Tag

**Slug:** `SERVICETITAN_REMOVE_CUSTOMER_TAG`

Remove one tag type from one customer in ServiceTitan. The tag type itself is kept. Use REMOVE_TAGS_FROM_CUSTOMERS for several customers or tags at once.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | integer | Yes | Id of the customer. |
| `tag_type_id` | integer | Yes | Id of the tag type, as defined in the Settings tag types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Equipment from Equipment System

**Slug:** `SERVICETITAN_REMOVE_EQUIPMENT_FROM_EQUIPMENT_SYSTEM`

Detach installed equipment from a ServiceTitan equipment system, by system id and a list of installed equipment ids. The equipment records themselves are not deleted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `equipment_ids` | array | Yes | Installed equipment IDs to remove from the system. Only direct children (direct_child_equipment_ids) can be removed this way. |
| `equipment_system_id` | integer | Yes | Id of the equipment system. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Job Cancellation

**Slug:** `SERVICETITAN_REMOVE_JOB_CANCELLATION`

Undo the cancellation of a ServiceTitan job that was canceled.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Location Tag

**Slug:** `SERVICETITAN_REMOVE_LOCATION_TAG`

Remove one tag type from one location in ServiceTitan. The tag type itself is kept.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location_id` | integer | Yes | Id of the location. |
| `tag_type_id` | integer | Yes | Id of the tag type, as defined in the Settings tag types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Tags From Customers

**Slug:** `SERVICETITAN_REMOVE_TAGS_FROM_CUSTOMERS`

Remove one or more tag types from several customers in ServiceTitan in one call. Every tag type listed is removed from every customer listed. Use REMOVE_CUSTOMER_TAG for a single customer and tag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_ids` | array | Yes | Ids of the customers to remove tags from. |
| `tag_type_ids` | array | Yes | Ids of the tag types to remove from every customer listed. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Contact

**Slug:** `SERVICETITAN_REPLACE_CONTACT`

Replace a contact in ServiceTitan with the values sent. is_archived is required, and name, title or reference_id left out are cleared; use UPDATE_CONTACT to change only some fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the contact. |
| `title` | string | No | Title of the contact. |
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `is_archived` | boolean | Yes | Whether the contact is archived. |
| `reference_id` | string | No | External reference ID of the contact. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Contact Method

**Slug:** `SERVICETITAN_REPLACE_CONTACT_METHOD`

Replace a contact method of a contact in ServiceTitan with the values sent. type and value are required, and optional fields left out are cleared; use UPDATE_CONTACT_METHOD to change only some fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short note about this contact method, for example 'work number'. |
| `type` | string ("Phone" | "Email" | "Fax" | "MobilePhone") | Yes | Type of the contact method. |
| `value` | string | Yes | The phone number, email address or fax number. |
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `reference_id` | string | No | Reference ID of the contact method. |
| `contact_method_id` | string | Yes | GUID of the contact method, from LIST_CONTACT_METHODS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Journal Entry

**Slug:** `SERVICETITAN_REPLACE_JOURNAL_ENTRY`

Replace an external journal entry in ServiceTitan, including all of its lines. Only entries created through the API (external) can be replaced, and lines are overwritten: send every line to keep, because any line left out is deleted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the journal entry. |
| `lines` | array | No | The complete set of lines to keep; each needs debit and credit. Lines left out are deleted. |
| `status` | string ("Open" | "Closed") | Yes | Posting status of the journal entry: Open or Closed. |
| `message` | string | No | Message stored with the journal entry. |
| `post_date` | string | No | Posting date. Date in YYYY-MM-DD form, e.g. 2025-01-31. |
| `version_id` | integer | Yes | Version number of the journal entry being replaced. |
| `custom_fields` | object | No | Custom fields as name-value pairs of strings. |
| `journal_entry_id` | string | Yes | Id of the journal entry (a GUID string), from LIST_JOURNAL_ENTRIES. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Reschedule Appointment

**Slug:** `SERVICETITAN_RESCHEDULE_APPOINTMENT`

Move a ServiceTitan job appointment to a new start and end time, and optionally a new arrival window. It changes only the schedule, not the assigned technicians.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | No | New end date-time for appointment. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `start` | string | No | New start date-time for appointment. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `appointment_id` | integer | Yes | ID of the job appointment. |
| `arrival_window_end` | string | No | New arrival window end date-time for appointment, if configured. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `arrival_window_start` | string | No | New arrival window start date-time for appointment, if configured. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Sell Estimate

**Slug:** `SERVICETITAN_SELL_ESTIMATE`

Mark an estimate as sold in ServiceTitan and credit the sale to a technician. sold_by_id must be a managed technician, and an estimate sold this way is set to 'perform work later', so the job still has to be booked.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sold_by_id` | integer | Yes | Id of the technician credited with the sale. Must be a managed technician. |
| `estimate_id` | integer | Yes | Id of the estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Employee Account Invite

**Slug:** `SERVICETITAN_SEND_EMPLOYEE_ACCOUNT_INVITE`

Send an account invitation to a ServiceTitan employee. The sent invitation cannot be recalled.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `employee_id` | integer | Yes | Id of the employee who should receive an account invitation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Employee Password Reset Link

**Slug:** `SERVICETITAN_SEND_EMPLOYEE_PASSWORD_RESET_LINK`

Send a password reset link to a ServiceTitan employee. The sent link cannot be recalled.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `employee_id` | integer | Yes | Id of the employee who should receive a password reset link. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Technician Account Invite

**Slug:** `SERVICETITAN_SEND_TECHNICIAN_ACCOUNT_INVITE`

Send an account invitation to a ServiceTitan technician. The sent invitation cannot be recalled.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_id` | integer | Yes | Id of the technician who should receive an account invitation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Technician Password Reset Link

**Slug:** `SERVICETITAN_SEND_TECHNICIAN_PASSWORD_RESET_LINK`

Send a password reset link to a ServiceTitan technician. The sent link cannot be recalled.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `technician_id` | integer | Yes | Id of the technician who should receive a password reset link. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Appointment Summary

**Slug:** `SERVICETITAN_SET_APPOINTMENT_SUMMARY`

Set the work-performed summary for one technician on a ServiceTitan job appointment. Private preview: available to specific accounts only, so expect an error on tenants without it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `notes` | string | Yes | Work performed notes. |
| `technician_id` | integer | Yes | ID of the technician. |
| `appointment_id` | integer | Yes | ID of the job appointment. |
| `last_seen_modified_on` | string | No | The modifiedOn value you last read for this summary. If the record changed after it, the update is skipped so a newer value is not overwritten. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Arrival Window Active

**Slug:** `SERVICETITAN_SET_ARRIVAL_WINDOW_ACTIVE`

Activate or deactivate a ServiceTitan arrival window by setting its active flag.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `is_active` | boolean | Yes | True activates the arrival window; False deactivates it. |
| `arrival_window_id` | integer | Yes | ID of the arrival window. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Business Unit External Data

**Slug:** `SERVICETITAN_SET_BUSINESS_UNIT_EXTERNAL_DATA`

Attach external data (key/value pairs owned by an application GUID) to a business unit in ServiceTitan. It cannot change the unit's name, address or other settings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `external_data` | object | No | External data to attach to the business unit. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `business_unit_id` | integer | Yes | Id of the business unit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Start Report Data Query

**Slug:** `SERVICETITAN_START_REPORT_DATA_QUERY`

Start a long-running report data query in ServiceTitan. If it finishes within about 10 seconds the rows come back directly; otherwise it returns a status and a query_token to poll for the result. Rate limit: 1 call of the same report per minute per tenant. Use GET_REPORT_DATA for fast reports that return within one call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to return, starting at 1. |
| `page_size` | integer | No | Number of rows per page, 1 to 25000. Default 1000. |
| `report_id` | integer | Yes | Id of the report within the category, from the reports list. |
| `parameters` | array | Yes | Input parameters of the report as name/value pairs. Get the names, data types and required flags from the report definition. |
| `report_category` | string | Yes | Id of the report category, from the report categories list. |
| `notify_when_ready` | boolean | No | Set true to fire a tn.rpr.report-data-ready webhook when a query that did not finish inline later completes or errors. Default false. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Submit Lead Form

**Slug:** `SERVICETITAN_SUBMIT_LEAD_FORM`

Submit a lead form to ServiceTitan with a person's name and optional email, phone, address and summary, creating a lead and returning its id. Use CREATE_LEAD when you already have a campaign id and want to set lead fields directly.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the customer. |
| `email` | string | No | The email of the customer. |
| `address` | object | No | The address of the customer. When sent, street, city, state, zip and country are required. |
| `summary` | string | No | Summary submitted in the form. |
| `phone_number` | string | No | The phone number of the customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Unassign Technicians from Appointment

**Slug:** `SERVICETITAN_UNASSIGN_TECHNICIANS_FROM_APPOINTMENT`

Remove one or more technicians from a ServiceTitan job appointment. Returns the appointment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | ID of the job appointment to unassign technicians from. |
| `technician_ids` | array | Yes | IDs of the technicians to unassign. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Unsell Estimate

**Slug:** `SERVICETITAN_UNSELL_ESTIMATE`

Revert a sold estimate to unsold in ServiceTitan. It only works when no signature has been collected and the estimate has not been booked out into a job.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `estimate_id` | integer | Yes | Id of the estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update AP Bill Custom Fields

**Slug:** `SERVICETITAN_UPDATE_AP_BILL_CUSTOM_FIELDS`

Set custom field values on one or more AP bills in ServiceTitan. Each operation names one AP bill id and the fields to set; a field name must already exist as a custom field type, and the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field updates to apply, one entry per AP bill. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update AP Credit Custom Fields

**Slug:** `SERVICETITAN_UPDATE_AP_CREDIT_CUSTOM_FIELDS`

Set custom field values on one or more AP credits in ServiceTitan. Each operation names one AP credit id and the fields to set; a field name must already exist as a custom field type, and the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field updates to apply, one entry per AP credit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update AP Payment Custom Fields

**Slug:** `SERVICETITAN_UPDATE_AP_PAYMENT_CUSTOM_FIELDS`

Set custom field values on one or more AP payments in ServiceTitan. Each operation names one AP payment id and the fields to set; a field name must already exist as a custom field type, and the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field updates to apply, one entry per AP payment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Appointment Special Instructions

**Slug:** `SERVICETITAN_UPDATE_APPOINTMENT_SPECIAL_INSTRUCTIONS`

Replace the special instructions text on a ServiceTitan job appointment. The new text overwrites the existing instructions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | ID of the job appointment. |
| `special_instructions` | string | Yes | New special instructions associated to the appointment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Arrival Window

**Slug:** `SERVICETITAN_UPDATE_ARRIVAL_WINDOW`

Replace the start time, duration and business units of a ServiceTitan arrival window. All three fields are required. To turn a window on or off use Set Arrival Window Active.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `start` | string | Yes | Start time of the arrival window as a TimeSpan string, e.g. 09:00. |
| `duration` | string | Yes | Documented as the end time for the arrival window defined as TimeSpan, e.g. 11:00, although the field is named duration. Which of the two the API expects is unverified. |
| `arrival_window_id` | integer | Yes | ID of the arrival window. |
| `business_unit_ids` | array | Yes | IDs of the business units this arrival window applies to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Arrival Window Configuration

**Slug:** `SERVICETITAN_UPDATE_ARRIVAL_WINDOW_CONFIGURATION`

Change the tenant-wide ServiceTitan arrival window setting that decides whether a job's default start time is the start or the end of the chosen arrival window. Affects all future bookings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `configuration` | string ("StartTimeOfArrivalWindow" | "EndTimeOfArrivalWindow") | Yes | Which end of the arrival window becomes the job's default start time when booking or rescheduling. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Booking

**Slug:** `SERVICETITAN_UPDATE_BOOKING`

Update fields of an existing booking in ServiceTitan for a given booking provider. Only the fields sent are changed; if address is sent, all six of its fields are required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the booking's customer. |
| `start` | string | No | Requested start time of the booking. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `source` | string | No | Source of the booking. |
| `address` | object | No | New address of the booking. When sent, street, unit, city, state, zip and country are all required. |
| `summary` | string | No | Booking summary. |
| `priority` | string ("Low" | "Normal" | "High" | "Urgent") | No | Booking priority. |
| `booking_id` | integer | Yes | Id of the booking. |
| `campaign_id` | integer | No | ID of the booking's campaign. |
| `external_id` | string | No | External ID of booking. |
| `job_type_id` | integer | No | ID of the booking's job type. |
| `customer_type` | string ("Residential" | "Commercial") | No | Type of customer. |
| `uploaded_images` | array | No | Images attached to the booking, as a list of strings. The spec does not say whether these are URLs or file names. |
| `business_unit_id` | integer | No | ID of the booking's business unit. |
| `booking_provider_id` | integer | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |
| `is_first_time_client` | boolean | No | Whether this is a first-time client. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Booking Contact

**Slug:** `SERVICETITAN_UPDATE_BOOKING_CONTACT`

Update one contact entry on a booking in ServiceTitan for a given booking provider. Only the fields sent are changed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short note about this contact entry. |
| `type` | string ("Phone" | "Email" | "Fax" | "MobilePhone") | No | Type of contact entry. |
| `value` | string | No | The phone number, email address or fax number. |
| `booking_id` | integer | Yes | Id of the booking. |
| `contact_id` | integer | Yes | Id of the contact entry, from the matching contacts list tool. This is a numeric id, not a contact GUID. |
| `booking_provider_id` | integer | Yes | Id of the booking provider tag this connection was granted, from LIST_BOOKING_PROVIDER_TAGS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Booking Provider Tag

**Slug:** `SERVICETITAN_UPDATE_BOOKING_PROVIDER_TAG`

Update the name or description of a booking provider tag in ServiceTitan. Only the fields sent are changed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tag_name` | string | No | Name of the booking provider tag. |
| `description` | string | No | Description of the booking provider tag. |
| `booking_provider_tag_id` | integer | Yes | Id of the booking provider tag. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Call

**Slug:** `SERVICETITAN_UPDATE_CALL`

Update a call record in ServiceTitan: its call type, reason, excuse memo, tag and linked customer, location, job, campaign or agent. This is a PUT and excuse_memo, reason, customer, location and tag are required on every call; GET_CALL does not return the current location, excuse memo or tag, so have those values ready before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tag` | string | Yes | Tag on the call. Required; send an empty string when there is none. |
| `job_id` | integer | No | Id of the job booked from the call. |
| `reason` | object | Yes | Reason recorded for the call outcome: name and lead are required. |
| `call_id` | integer | Yes | Id of the call. |
| `agent_id` | integer | No | Id of the agent (employee) who handled the call. |
| `customer` | object | Yes | The customer linked to the call: id, name, address and contacts are required. |
| `location` | object | Yes | The service location linked to the call: id, name, address and contacts are required. |
| `call_type` | string ("Abandoned" | "Unbooked" | "Excused" | "Booked" | "NotLead") | No | Call classification: Abandoned, Unbooked, Excused, Booked or NotLead. |
| `campaign_id` | integer | No | Id of the marketing campaign the call is attributed to. |
| `excuse_memo` | string | Yes | Memo explaining why the call was excused or not booked. Required; send an empty string when there is none. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Campaign

**Slug:** `SERVICETITAN_UPDATE_CAMPAIGN`

Update a marketing campaign in ServiceTitan. The spec requires name, business_unit_id, category_id and active on every call, so read the campaign first and send its current values for fields you are not changing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `dnis` | string | No | Tracking phone number (DNIS) of the campaign. Calls to this number are attributed to the campaign. |
| `name` | string | Yes | Name of the campaign. |
| `active` | boolean | Yes | Whether the campaign is active. |
| `medium` | string | No | Marketing medium of the campaign. Accepted values are not documented. |
| `source` | string | No | Traffic source of the campaign. Accepted values are not documented. |
| `campaign_id` | integer | Yes | Id of the marketing campaign. |
| `category_id` | integer | Yes | Id of the campaign category, from LIST_CAMPAIGN_CATEGORIES. |
| `other_medium` | string | No | Free-text medium label. How it relates to medium is not documented. |
| `other_source` | string | No | Free-text source label. How it relates to source is not documented. |
| `business_unit_id` | integer | Yes | Id of the business unit the campaign belongs to. |
| `is_default_campaign` | boolean | No | Set true to make this the default campaign. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Campaign Category

**Slug:** `SERVICETITAN_UPDATE_CAMPAIGN_CATEGORY`

Rename a marketing campaign category in ServiceTitan or change its active flag. name is required on every call, even when only active changes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the campaign category. Required even when only active changes. |
| `active` | boolean | No | Whether the category is active. |
| `campaign_category_id` | integer | Yes | Id of the campaign category. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Campaign Cost

**Slug:** `SERVICETITAN_UPDATE_CAMPAIGN_COST`

Change the daily cost of an existing campaign cost record in ServiceTitan. The campaign, year and month of the record cannot be changed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `daily_cost` | number | Yes | New cost per day for the record's month, as a decimal amount. |
| `campaign_cost_id` | integer | Yes | Id of the campaign cost record, from LIST_CAMPAIGN_COSTS. This is not the campaign id. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Client Specific Pricing Rate Sheet

**Slug:** `SERVICETITAN_UPDATE_CLIENT_SPECIFIC_PRICING_RATE_SHEET`

Update the per-SKU price exceptions of a client-specific pricing rate sheet in the ServiceTitan pricebook, by rate sheet id. The spec does not say whether the exceptions sent replace the sheet's current list or are merged into it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `exceptions` | array | No | Per-SKU price exceptions for the rate sheet, each with skuId, value and valueType. |
| `rate_sheet_id` | integer | Yes | Id of the rate sheet to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Contact

**Slug:** `SERVICETITAN_UPDATE_CONTACT`

Update a contact's name, title, reference id or archived flag in ServiceTitan. The spec lists is_archived as required even though this is a partial update. Use REPLACE_CONTACT to overwrite every field.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the contact. |
| `title` | string | No | Title of the contact. |
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `is_archived` | boolean | Yes | Whether the contact is archived. |
| `reference_id` | string | No | External reference ID of the contact. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Contact Method

**Slug:** `SERVICETITAN_UPDATE_CONTACT_METHOD`

Update the value or memo of a contact method in ServiceTitan. Only the fields sent are changed; the type cannot be changed here. Use REPLACE_CONTACT_METHOD to overwrite every field, including type. contact_id is the GUID of a person contact from CREATE_CONTACT or LIST_CONTACTS; to add a phone or email directly to a customer, location or booking use CREATE_CUSTOMER_CONTACT, CREATE_LOCATION_CONTACT or CREATE_BOOKING_CONTACT.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short note about this contact method, for example 'work number'. |
| `value` | string | No | The phone number, email address or fax number. |
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `contact_method_id` | string | Yes | GUID of the contact method, from LIST_CONTACT_METHODS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Contact Method Preference

**Slug:** `SERVICETITAN_UPDATE_CONTACT_METHOD_PREFERENCE`

Set the value of one communication preference on a contact method in ServiceTitan. The value is sent as a string whatever the preference's data type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `value` | string | Yes | New value of the preference, sent as a string (for a boolean preference, 'true' or 'false'). |
| `contact_id` | string | Yes | GUID of the contact, from LIST_CONTACTS. |
| `preference_name` | string | Yes | Name of the preference, from LIST_CONTACT_PREFERENCE_TYPES. |
| `contact_method_id` | string | Yes | GUID of the contact method, from LIST_CONTACT_METHODS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Credit Memo

**Slug:** `SERVICETITAN_UPDATE_CREDIT_MEMO`

Update a credit memo's summary, date, business unit or active flag in ServiceTitan; only the fields sent are changed. It cannot change amounts or applications: use ADD_CREDIT_MEMO_SPLITS to apply the memo to invoices.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | No | Date of the credit memo. Date in YYYY-MM-DD form, e.g. 2025-01-31. |
| `active` | boolean | No | Whether the credit memo is active; false deactivates it. |
| `summary` | string | No | Summary text of the credit memo. |
| `credit_memo_id` | integer | Yes | Id of the credit memo. |
| `business_unit_id` | integer | No | Id of the business unit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Credit Memo Custom Fields

**Slug:** `SERVICETITAN_UPDATE_CREDIT_MEMO_CUSTOM_FIELDS`

Set custom field values on one or more credit memos in ServiceTitan. Each operation names one credit memo id and the fields to set; a field name must already exist as a custom field type, and the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field updates to apply, one entry per credit memo. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Customer

**Slug:** `SERVICETITAN_UPDATE_CUSTOMER`

Update fields of a customer in ServiceTitan. Only the fields sent are changed, but custom_fields and tag_type_ids are treated as full lists: send every value you want to keep. To add or remove one tag, use ADD_CUSTOMER_TAG or REMOVE_CUSTOMER_TAG.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the customer. |
| `type` | string ("Residential" | "Commercial") | No | Type of customer. |
| `active` | boolean | No | Whether the customer is active. The provider guide says customers cannot be deactivated or reactivated through the API, so this field may be ignored. |
| `address` | object | No | Bill-To address of the customer record. When sent, every address field is required. |
| `tax_exempt` | boolean | No | Customer has been flagged as Tax Exempt. |
| `customer_id` | integer | Yes | Id of the customer. |
| `do_not_mail` | boolean | No | Customer has been flagged as "do not mail". |
| `credit_limit` | number | No | Credit Limit for the customer. |
| `tag_type_ids` | array | No | Ids of the tag types on the customer, sent as the full list. |
| `custom_fields` | array | No | Custom field values of the customer, each with typeId and value. |
| `external_data` | object | No | External data items to write on the customer. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `do_not_service` | boolean | No | Customer has been flagged as "do not service". |
| `payment_term_id` | integer | No | Id of the customer's payment term. |
| `national_account` | boolean | No | Customer has been flagged as National Account. |
| `credit_limit_balance` | number | No | Credit Limit Balance for the customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Customer Contact

**Slug:** `SERVICETITAN_UPDATE_CUSTOMER_CONTACT`

Update one contact entry on a customer in ServiceTitan. Only the fields sent are changed; if preferences is sent, all five of its flags are required. This is the customer's own contact list, separate from the GUID person contacts managed with CREATE_CONTACT and CREATE_CONTACT_METHOD.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short description about this contact, for example, "work #" or "Owner's daughter - Kelly". |
| `type` | string ("Phone" | "Email" | "Fax" | "MobilePhone") | No | Type of contact entry: Phone (landline), MobilePhone, Email or Fax. |
| `value` | string | No | The email, phone number, or fax number for the contact. |
| `contact_id` | integer | Yes | Id of the contact entry, from the matching contacts list tool. This is a numeric id, not a contact GUID. |
| `customer_id` | integer | Yes | Id of the customer. |
| `preferences` | object | No | Contact preference setting for Job Reminders and Marketing Updates. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Employee

**Slug:** `SERVICETITAN_UPDATE_EMPLOYEE`

Update an office employee in ServiceTitan; only the fields sent are changed. business_unit_access_ids is a full replacement, and account_locked sets whether the account is locked.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Employee name. |
| `email` | string | No | Email. |
| `login` | string | No | Login (Username). |
| `role_id` | integer | No | User role Id. |
| `positions` | array | No | List of company positions. Whether it replaces or merges with the current positions is not documented. |
| `aad_user_id` | string | No | Azure Active Directory User Id. |
| `employee_id` | integer | Yes | Id of the employee. |
| `phone_number` | string | No | Office phone. |
| `custom_fields` | array | No | List of employee's custom fields, each with typeId and value. |
| `account_locked` | boolean | No | Account Locked Status. |
| `business_unit_id` | integer | No | Business unit Id. The spec allows null here, but leaving this out sends nothing, so it cannot be cleared through this tool. |
| `mobile_phone_number` | string | No | Mobile phone. |
| `business_unit_access_ids` | array | No | Business Unit Access IDs. Full replacement. Requires 'Business units filtering for employees' feature flag, otherwise HTTP 400. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Employee Payroll Settings

**Slug:** `SERVICETITAN_UPDATE_EMPLOYEE_PAYROLL_SETTINGS`

Update the payroll settings of one office employee in ServiceTitan. hourly_rate is required on every call; the spec does not say whether other omitted fields are kept or cleared.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `hire_date` | string | No | The hire date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `manager_id` | integer | No | Id of the manager. |
| `employee_id` | integer | Yes | Id of the office employee. |
| `hourly_rate` | number | Yes | The hourly rate. Required on every call. |
| `external_payroll_id` | string | No | The external payroll id. |
| `is_included_in_payroll` | boolean | No | Whether the employee should be included in payroll processing. |
| `payroll_business_unit_id` | integer | No | Id of the payroll business unit (employee only). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Equipment System

**Slug:** `SERVICETITAN_UPDATE_EQUIPMENT_SYSTEM`

Update a ServiceTitan equipment system by id. Omitted fields are left unchanged; equipment_ids, when sent, replaces the system's whole equipment list (use ADD_EQUIPMENT_TO_EQUIPMENT_SYSTEM or REMOVE_EQUIPMENT_FROM_EQUIPMENT_SYSTEM to change one item), and an empty list for tags or custom fields clears them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Optional free-text memo. |
| `name` | string | No | The display name of the equipment system. Must be unique within the location. |
| `tag_type_ids` | array | No | Tag type IDs to associate with the system. Omit to leave the tags unchanged; send [] to remove all tags. |
| `custom_fields` | array | No | Equipment system custom field values, each with id, typeId and value. Omit to leave them unchanged; send [] to clear all custom fields. |
| `equipment_ids` | array | No | Existing installed equipment IDs that should be in the system. This is a full replacement, not a delta. Omit to leave the equipment unchanged; send [] to remove all equipment from the system. |
| `equipment_system_id` | integer | Yes | Id of the equipment system to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Equipment Type

**Slug:** `SERVICETITAN_UPDATE_EQUIPMENT_TYPE`

Rename a ServiceTitan equipment type or change its active status, by id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Equipment type name. |
| `active` | boolean | No | Whether the equipment type is active. |
| `equipment_type_id` | integer | Yes | Id of the equipment type to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Estimate

**Slug:** `SERVICETITAN_UPDATE_ESTIMATE`

Update an estimate in ServiceTitan. This is a PUT with every field optional; whether omitted fields and items are kept or cleared is not documented, so read the estimate first and send the full intended values.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | No | Tax amount on the estimate. |
| `name` | string | No | Name of the estimate. |
| `items` | array | No | Line items of the estimate, each a pricebook service, material or equipment. Nested keys use the documented spelling (skuId, unitPrice). |
| `status` | string ("Open" | "Sold" | "Dismissed") | No | Estimate status: Open, Sold or Dismissed. |
| `summary` | string | No | Summary text shown on the estimate. |
| `sold_by_id` | integer | No | Id of the technician credited with the sale. |
| `estimate_id` | integer | Yes | Id of the estimate. |
| `review_status` | string ("None" | "NeedsApproval" | "Approved" | "NotApproved") | No | Review status: None, NeedsApproval, Approved or NotApproved. |
| `budget_code_id` | integer | No | Id of the budget code the estimate is booked against. |
| `deposit_amount` | number | No | Deposit requested, as a fixed amount. |
| `external_links` | array | No | Links to external documents shown with the estimate. |
| `is_recommended` | boolean | No | Whether this estimate is the recommended option for the customer. |
| `deposit_percent` | number | No | Deposit requested, as a percentage of the estimate total. |
| `use_default_project_labels` | boolean | No | Whether to apply the project's default labels to the estimate. |
| `require_deposit_on_signature` | boolean | No | Whether the deposit must be paid when the customer signs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Estimate Template

**Slug:** `SERVICETITAN_UPDATE_ESTIMATE_TEMPLATE`

Update an estimate template in ServiceTitan; only the fields sent are changed. Sending items replaces every item on the template, and summary and business_unit_id cannot be cleared once set.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("Dynamic" | "Static") | No | Pricing mode: Static (prices fixed on the template, unitPrice needed on every item) or Dynamic (prices computed from the pricebook). |
| `name` | string | No | Customer-facing name of the estimate template. |
| `items` | array | No | Items of the template. When given, replaces every item on the template; leave out to keep the items. skuId, skuType, quantity and isAddOn are required on each item. |
| `active` | boolean | No | Whether the template is active. |
| `summary` | string | No | Summary text of the template. Leave out to keep it unchanged. Once set, it cannot be cleared back to empty. |
| `internal_name` | string | No | Internal name of the estimate template, shown to staff. |
| `business_unit_id` | integer | No | Id of the business unit the template belongs to. Leave out to keep it unchanged. Once set, it cannot be cleared. |
| `estimate_template_id` | integer | Yes | Id of the estimate template. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Expense Transaction Custom Fields

**Slug:** `SERVICETITAN_UPDATE_EXPENSE_TRANSACTION_CUSTOM_FIELDS`

Set custom field values on one or more expense transactions in ServiceTitan. The request is all-or-nothing: an unknown custom field name or expense id returns 422 and no update is saved.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field updates to apply, one entry per expense transaction, each with objectId and customFields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Finding

**Slug:** `SERVICETITAN_UPDATE_FINDING`

Update a ServiceTitan finding by id: its text fields, urgency level, or archived and active status. The location, equipment, and source job cannot be changed through this tool. Send only the fields to change; the spec marks none of them required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Title summarizing the issue or observation (e.g., "Leaking pipe", "Worn brake pads"). |
| `active` | boolean | No | Whether the finding is active. |
| `archived` | boolean | No | Whether the finding has been archived and is no longer active. |
| `finding_id` | integer | Yes | Id of the finding to update. |
| `description` | string | No | Detailed description of the issue, condition, or observation. |
| `urgency_level` | string ("NotSpecified" | "Low" | "Medium" | "High" | "Critical") | No | Priority level indicating how urgently the finding should be addressed. |
| `internal_notes` | string | No | Private notes for internal use, not visible to customers. |
| `recommended_solution` | string | No | Suggested action or repair to address the finding. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Finding Attachment

**Slug:** `SERVICETITAN_UPDATE_FINDING_ATTACHMENT`

Update the file name, URL, or media type of an attachment on a ServiceTitan finding. Send only the fields to change; the spec marks none of them required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | No | URL of the uploaded file obtained from ServiceTitan's findings upload endpoint, which is not available as a tool; whether other URLs are accepted is undocumented. |
| `type` | string ("Other" | "Image" | "VideoFile" | "VideoLink" | "Document") | No | Media type of the attachment. |
| `file_name` | string | No | Original file name (e.g., "motor-inspection.jpg"). |
| `finding_id` | integer | Yes | Id of the finding that owns the attachment. |
| `attachment_id` | integer | Yes | Id of the finding attachment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update GL Account

**Slug:** `SERVICETITAN_UPDATE_GL_ACCOUNT`

Update a general ledger (GL) account in ServiceTitan; only the fields sent are changed. Set active to false to deactivate the account, which is the only form of deletion: an account cannot be removed permanently.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Account name. |
| `type` | string | No | Account type name; see LIST_GL_ACCOUNT_TYPES. |
| `active` | boolean | No | Whether the account is active; false deactivates it (soft delete). |
| `number` | string | No | Account number. |
| `subtype` | string | No | Account subtype. |
| `account_id` | integer | Yes | Id of the general ledger account. |
| `description` | string | No | Account description. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Gross Pay Item

**Slug:** `SERVICETITAN_UPDATE_GROSS_PAY_ITEM`

Update a gross pay item in ServiceTitan and return its id. This is a PUT: payroll_id, amount, activity_code_id and date are required on every call, and the spec does not say whether optional fields left out are kept or cleared.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Date of the gross pay item. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `memo` | string | No | Memo of the gross pay item. |
| `amount` | number | Yes | Amount of the gross pay item. |
| `invoice_id` | integer | No | Id of the invoice. |
| `payroll_id` | integer | Yes | Id of the payroll the item belongs to; see LIST_PAYROLLS. |
| `budget_code_id` | integer | No | Id of the budget code. |
| `activity_code_id` | integer | Yes | Id of the payroll activity code; see LIST_PAYROLL_ACTIVITY_CODES. |
| `business_unit_id` | integer | No | Id of the business unit to use as the payout business unit. If not provided, the default applies: the employee or technician business unit when no invoice is set, the invoice business unit when one is. |
| `gross_pay_item_id` | integer | Yes | Id of the gross pay item. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Installed Equipment

**Slug:** `SERVICETITAN_UPDATE_INSTALLED_EQUIPMENT`

Update fields of a ServiceTitan installed equipment record by id. Send only the fields to change; the spec marks none of them required. List fields such as custom_fields and tag_type_ids are sent as the lists you give.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cost` | number | No | Cost of the equipment. |
| `memo` | string | No | Free-text memo. |
| `name` | string | No | Name of the installed equipment. |
| `model` | string | No | Model name or number. |
| `active` | boolean | No | Whether the installed equipment record is active. |
| `parent` | object | No | Parent of this equipment: another installed equipment record or an equipment system, given by id and type. |
| `status` | string ("Installed" | "Replaced") | No | Whether the equipment is currently installed or has been replaced. |
| `barcode_id` | string | No | Barcode identifier of the equipment. |
| `attachments` | array | No | Files to link to the equipment, each by URL with its type. |
| `installed_on` | string | No | When the equipment was installed. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `manufacturer` | string | No | Manufacturer name. |
| `tag_type_ids` | array | No | Ids of the tag types to apply. |
| `custom_fields` | array | No | Custom field values to set, each with typeId and value. |
| `serial_number` | string | No | Serial number of the equipment. |
| `manufactured_on` | string | No | Date the equipment was manufactured. Date, e.g. 2025-01-31. |
| `equipment_type_id` | integer | No | Id of the equipment type; see LIST_EQUIPMENT_TYPES. |
| `installed_equipment_id` | integer | Yes | Id of the installed equipment record to update. |
| `actual_replacement_date` | string | No | Date the equipment was actually replaced. Date, e.g. 2025-01-31. |
| `manufacturer_warranty_end` | string | No | End of the manufacturer warranty. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `manufacturer_warranty_start` | string | No | Start of the manufacturer warranty. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `service_provider_warranty_end` | string | No | End of the service provider warranty. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `service_provider_warranty_start` | string | No | Start of the service provider warranty. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Adjustment

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_ADJUSTMENT`

Update fields of an existing ServiceTitan inventory adjustment by id. Only the fields you send are changed, but items is sent as the full list: lines left out of it are removed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | No | Adjustment date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `memo` | string | No | Memo of the inventory adjustment. |
| `type` | string ("Adjustment" | "BeginningBalance" | "InventoryReturn" | "InventoryCount" | "AutoConsume" | "ReturnToWarehouse" | "Consignment" | "ConsignmentInventoryCount" | "ReturnToVendor" | "IntracompanyTransferIncoming" | "IntracompanyTransferOutgoing") | No | Adjustment type. Only manually-creatable types are accepted (Adjustment, BeginningBalance, Consignment). |
| `items` | array | No | Full replacement of the adjustment line items when provided. Lines with an id are updated, lines without an id are added, and existing lines absent from the list are removed. |
| `location_id` | integer | No | Inventory location Id the adjustment posts against. |
| `adjustment_id` | integer | Yes | Id of the inventory adjustment to update. |
| `external_data` | object | No | External data items to attach to this adjustment. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `business_unit_id` | integer | No | Business unit Id. |
| `reference_number` | string | No | Reference number of the inventory adjustment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Adjustment Custom Fields

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_ADJUSTMENT_CUSTOM_FIELDS`

Set custom field values on one or more ServiceTitan inventory adjustments in a single request. Each operation names the adjustment by objectId and the custom fields to write; the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field update operations, one entry per inventory adjustment. Each has objectId and customFields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Bill Custom Fields

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_BILL_CUSTOM_FIELDS`

Set custom field values on one or more inventory bills in ServiceTitan. Each operation names one inventory bill id and the fields to set; a field name must already exist as a custom field type, and the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field updates to apply, one entry per inventory bill. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Receipt Custom Fields

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_RECEIPT_CUSTOM_FIELDS`

Set custom field values on one or more ServiceTitan inventory receipts in a single request. Each operation names the receipt by objectId and the custom fields to write; the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field update operations, one entry per inventory receipt. Each has objectId and customFields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Return

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_RETURN`

Update fields of an existing ServiceTitan vendor return by id. Only the fields you send are changed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | No | Tax of the vendor return. |
| `memo` | string | No | Memo of the vendor return. |
| `items` | array | No | Return items. Each needs id, skuId, quantity and cost. The spec does not say whether lines left out of the list are removed. |
| `shipping` | number | No | Shipping cost of the vendor return. |
| `return_id` | integer | Yes | Id of the vendor return to update. |
| `return_date` | string | No | Return date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data` | object | No | External data items to attach to this return. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `budget_code_id` | integer | No | Id of the budget code for the return. |
| `restocking_fee` | number | No | Restocking fee of the vendor return. |
| `return_type_id` | integer | No | Id of the return type. |
| `business_unit_id` | integer | No | Id of the business unit. |
| `reference_number` | string | No | Reference number of the vendor return. |
| `inventory_location_id` | integer | No | Id of the inventory location. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Return Custom Fields

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_RETURN_CUSTOM_FIELDS`

Set custom field values on one or more ServiceTitan inventory returns in a single request. Each operation names the return by objectId and the custom fields to write; the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field update operations, one entry per inventory return. Each has objectId and customFields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Return Type

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_RETURN_TYPE`

Update a ServiceTitan vendor return type by id. Only the fields you send are changed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the return type. |
| `active` | boolean | No | Whether the return type is active. |
| `is_default` | boolean | No | Whether this is the default return type. The spec gives no description for this field. |
| `return_type_id` | integer | Yes | Id of the return type to update; also sent in the request body, where the spec documents the same id. |
| `include_in_sales_tax` | boolean | No | Whether returns of this type are included in sales tax. The spec gives no description for this field. |
| `is_default_for_consignment` | boolean | No | Whether this is the default return type for consignment. The spec gives no description for this field. |
| `automatically_receive_vendor_credit` | boolean | No | Whether the return type allows receiving vendor credits automatically. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Transfer

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_TRANSFER`

Update an existing ServiceTitan inventory transfer by id. The source location, transfer type, and date can only be changed while the transfer is Pending.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | No | Transfer date (editable only while Pending). RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `memo` | string | No | Memo of the inventory transfer. |
| `items` | array | No | Full replacement of the transfer line items when provided. Lines with an id are updated, lines without an id are added, and active lines absent from the list are removed. |
| `job_id` | integer | No | Id of the job associated with the transfer. |
| `type_id` | integer | No | Transfer type Id (editable only while Pending). |
| `transfer_id` | integer | Yes | Id of the inventory transfer to update. |
| `date_required` | string | No | Required-by date of the inventory transfer. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `external_data` | object | No | External data items to attach to this transfer. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `transfer_to_id` | integer | No | Destination inventory location Id (editable while Pending, or pre-received for job transfers). |
| `reference_number` | string | No | Reference number of the inventory transfer. |
| `transfer_from_id` | integer | No | Source inventory location Id (editable only while Pending). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Inventory Transfer Custom Fields

**Slug:** `SERVICETITAN_UPDATE_INVENTORY_TRANSFER_CUSTOM_FIELDS`

Set custom field values on one or more ServiceTitan inventory transfers in a single request. Each operation names the transfer by objectId and the custom fields to write.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field update operations, one entry per inventory transfer. Each has objectId and customFields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Invoice

**Slug:** `SERVICETITAN_UPDATE_INVOICE`

Update an invoice's header fields, line items or payment settlement status in ServiceTitan; only the fields sent are changed. Each entry in items needs description and quantity, and the documented response has no body, so read the invoice back with LIST_INVOICES to confirm.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | No | Tax amount. |
| `items` | array | No | Invoice line items. Each entry needs description and quantity. |
| `number` | string | No | Invoice number. |
| `summary` | string | No | Invoice summary (HTML allowed). |
| `type_id` | integer | No | Id of the invoice type. |
| `due_date` | string | No | Invoice due date. Date in YYYY-MM-DD form, e.g. 2025-01-31. |
| `payments` | array | No | Settlement updates for payments applied to this invoice. |
| `subtotal` | number | No | Subtotal before tax. |
| `export_id` | string | No | Identifier assigned when the record was exported. |
| `invoice_id` | integer | Yes | Id of the invoice. |
| `invoiced_on` | string | No | Invoice date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `tax_zone_id` | integer | No | Id of the tax zone; see LIST_TAX_ZONES. |
| `royalty_date` | string | No | Royalty date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `royalty_memo` | string | No | Royalty memo. |
| `rate_sheet_id` | integer | No | Rate sheet ID to assign to the invoice. Send null to clear the rate sheet; leave it out to keep the current rate sheet. |
| `review_status` | string ("NeedsReview" | "OnHold" | "Reviewed" | "PendingApproval" | "Rejected" | "ReadyForBilling" | "Invoiced") | No | Review status of the invoice. |
| `assigned_to_id` | integer | No | Id of the user the invoice is assigned to. |
| `budget_code_id` | integer | No | Id of the budget code. |
| `royalty_status` | string ("Pending" | "Sent" | "Failed") | No | Indicates royalty status of invoice. |
| `royalty_sent_on` | string | No | When the royalty was sent. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Invoice Custom Fields

**Slug:** `SERVICETITAN_UPDATE_INVOICE_CUSTOM_FIELDS`

Set custom field values on one or more invoices in ServiceTitan. Each operation names one invoice id and the fields to set; a field name must already exist as a custom field type, and the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field updates to apply, one entry per invoice. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Invoice Item

**Slug:** `SERVICETITAN_UPDATE_INVOICE_ITEM`

Update one line item on an invoice in ServiceTitan; item_id names the item to change, and description and quantity are required on every call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cost` | number | No | Cost per unit. |
| `sku_id` | integer | No | Id of the pricebook SKU. |
| `item_id` | integer | Yes | Id of the existing invoice item to update. |
| `quantity` | number | Yes | Quantity. |
| `sku_name` | string | No | Name of the pricebook SKU. |
| `is_add_on` | boolean | No | Whether the item is an add-on. |
| `signature` | string | No | Customer signature. |
| `invoice_id` | integer | Yes | Id of the invoice. |
| `unit_price` | number | No | Price per unit. |
| `description` | string | Yes | Item description (HTML allowed). |
| `installed_on` | string | No | When the item was installed. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `service_date` | string | No | Service Date (Item Consumption date, stored as InvoiceItem.DateCreated). Optional; when omitted the item's Service Date is left as-is. Must not fall in a closed accounting period. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `technician_id` | integer | No | Id of the technician. |
| `budget_code_id` | integer | No | Id of the budget code. |
| `item_group_name` | string | No | Name of the item group. |
| `item_group_root_id` | integer | No | Id of the item group's root item. |
| `duration_billing_id` | integer | No | Id of the membership duration billing. |
| `inventory_location_id` | integer | No | Id of the inventory location. |
| `inventory_warehouse_name` | string | No | Name of the inventory warehouse. |
| `skip_updating_membership_prices` | boolean | No | Set true to leave membership prices unchanged. |
| `technician_acknowledgement_signature` | string | No | Technician acknowledgement signature. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Invoice Task

**Slug:** `SERVICETITAN_UPDATE_INVOICE_TASK`

Update the name, status, assignee, due date or description of a task on an invoice in ServiceTitan; only the fields sent are changed. task_id is a string id from LIST_INVOICE_TASKS. This is an invoice workflow task, not a Task Management task (CREATE_TASK).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Task name. |
| `status` | string | No | Task status. The spec gives no list of values; reuse a status seen in LIST_INVOICE_TASKS. |
| `task_id` | string | Yes | Id of the invoice task (a GUID string), from LIST_INVOICE_TASKS. |
| `due_date` | string | No | When the task is due. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `invoice_id` | integer | Yes | Id of the invoice. |
| `assignee_id` | string | No | GUID of the user the task is assigned to. |
| `description` | string | No | Task description. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Invoice Template

**Slug:** `SERVICETITAN_UPDATE_INVOICE_TEMPLATE`

Update a membership invoice template in ServiceTitan; only the top-level fields sent are changed. Whether items replaces or merges with the existing items is not documented, so read the template first and send the full intended item list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Invoice template name (used only for shared invoice templates). |
| `items` | array | No | Line items of the invoice template. Each item needs skuId, quantity, unitPrice and isAddOn; send id to change an existing item. |
| `active` | boolean | No | Whether the invoice template is active. |
| `created_on` | string | No | Creation date recorded on the template. Documented as writable; leave out on a normal update. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `created_by_id` | integer | No | Id of the user recorded as the template's creator. Documented as writable; leave out on a normal update. |
| `invoice_template_id` | integer | Yes | Id of the membership invoice template. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Job

**Slug:** `SERVICETITAN_UPDATE_JOB`

Update fields of a ServiceTitan job; only the fields sent are changed, and job status cannot be changed here. custom_fields and tag_type_ids replace the whole list, so include every value you want to keep.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | ID of the job. |
| `summary` | string | No | Job summary. HTML is accepted. |
| `priority` | string | No | Priority of the job. The list filter documents Low, Normal, High, Urgent. |
| `no_charge` | boolean | No | Whether the job is a no-charge job. |
| `sold_by_id` | integer | No | ID of the Technician who sold the job. |
| `campaign_id` | integer | No | ID of the job's campaign. |
| `customer_id` | integer | No | ID of the job's customer. |
| `customer_po` | string | No | Customer PO. |
| `job_type_id` | integer | No | ID of job type. |
| `location_id` | integer | No | ID of the job's location. |
| `tag_type_ids` | array | No | List of tag types. This list must describe the full list of tags on the job. If job A has tags X and Y and this field only contains a ID for tag X, then tag Y on job A will be removed. |
| `custom_fields` | array | No | List of custom fields and their values, each with typeId and value. This list must describe the full list of custom fields on the job: a custom field that is not in the list is removed from the job. |
| `external_data` | object | No | External data update model. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `recall_for_id` | integer | No | ID of the job that this job is a recall for. ServiceTitan clears it when null is sent, which this tool cannot send: a field left out is not changed. |
| `summary_of_work` | string | No | Summary of work completed on the job. Private preview: available for specific accounts only. |
| `business_unit_id` | integer | No | ID of the job's business unit. |
| `is_auto_dispatched` | boolean | No | Indicates whether Dispatch Pro is enabled for this job. |
| `job_generated_lead_source` | object | No | Object that contains jobId, the ID of the job from which this job was generated, and employeeId, the ID of the office user or technician. |
| `should_update_invoice_items` | boolean | No | If set to true, update the business unit of invoice items on job's invoice. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Job Type

**Slug:** `SERVICETITAN_UPDATE_JOB_TYPE`

Update fields of a ServiceTitan job type; only the fields sent are changed. custom_field_type_ids replaces the assigned list unless custom_fields_update_mode is Merge.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the job type. |
| `skills` | array | No | List of skills required to complete this job. |
| `summary` | string | No | Text that is automatically added to job summary when booked. |
| `duration` | integer | No | Average length of time for this job type. The unit is not stated on this field; the list filter documents seconds. |
| `priority` | string | No | Level of urgency for this type of job. |
| `no_charge` | boolean | No | When true, all jobs are considered no charge. |
| `job_type_id` | integer | Yes | ID of the job type. |
| `tag_type_ids` | array | No | Tags here will automatically be applied to jobs booked. |
| `external_data` | object | No | External data update model. |
| `job_type_class` | string | No | Class used to group job types. |
| `sold_threshold` | number | No | A job is considered as converted if subtotal meets or exceeds this threshold. |
| `business_unit_ids` | array | No | Business Unit Ids associated with job type. |
| `custom_field_type_ids` | array | No | Custom field type IDs to assign to this job type. Order determines display order. |
| `custom_fields_update_mode` | string ("Replace" | "Merge") | No | How custom_field_type_ids is applied. Replace (default) replaces all existing custom field type assignments with the list sent, so a type that is not sent is removed. Merge keeps the existing assignments and appends the new IDs. |
| `default_estimate_sold_action` | string | No | Default action when an estimate is sold for this job type. |
| `invoice_signature_is_required` | boolean | No | When true signature is required. |
| `enforce_recurring_service_event_selection` | boolean | No | When true enforce recurring service event. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Journal Entry

**Slug:** `SERVICETITAN_UPDATE_JOURNAL_ENTRY`

Update a journal entry's status (Open or Closed) and custom fields in ServiceTitan. It cannot change lines or amounts; use REPLACE_JOURNAL_ENTRY for that. Custom fields not named are left as they are; a named custom field can be set to null but not deleted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status` | string ("Open" | "Closed") | No | New status of the journal entry: Open or Closed. |
| `custom_fields` | object | No | Custom fields to create or update, as name-value pairs of strings. Existing fields not named here are not affected, and at most 5 custom fields per journal entry are supported. Send a null value to set a named field to null; this does not delete the field. |
| `journal_entry_id` | string | Yes | Id of the journal entry (a GUID string), from LIST_JOURNAL_ENTRIES. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Journal Entry Sync Status

**Slug:** `SERVICETITAN_UPDATE_JOURNAL_ENTRY_SYNC_STATUS`

Record the result of syncing a journal entry to an external accounting system in ServiceTitan by setting its sync status. version_id is required when the status is Synced and must match the entry version that was synced.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `message` | string | No | Message related to the new sync state. |
| `version_id` | integer | No | Journal entry version that was synced. Required when sync_status is Synced; not used for any other status. |
| `sync_status` | string ("NotSynced" | "InProgress" | "Synced" | "OutOfSync" | "Error" | "Excluded") | Yes | Sync status to set on the journal entry: NotSynced, InProgress, Synced, OutOfSync, Error or Excluded. |
| `custom_fields` | object | No | Custom fields to create or update, as name-value pairs of strings. Existing fields not named here are not affected, and at most 5 custom fields per journal entry are supported. Send a null value to set a named field to null; this does not delete the field. |
| `journal_entry_id` | string | Yes | Id of the journal entry (a GUID string), from LIST_JOURNAL_ENTRIES. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Labor Type

**Slug:** `SERVICETITAN_UPDATE_LABOR_TYPE`

Replace a payroll labor type in ServiceTitan. This is a full update: name, code and active are required on every call, and leaving out service_code_id clears the labor type's service code.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Code for the payroll labor type. |
| `name` | string | Yes | Name of the payroll labor type. |
| `active` | boolean | Yes | Whether the payroll labor type is active. Required on every call; the spec says an update without it would reset the labor type to inactive. |
| `labor_type_id` | integer | Yes | Id of the payroll labor type. |
| `service_code_id` | integer | No | Id of the labor SKU (service) to map this labor type to. This is the only optional field; leaving it out clears the labor type's service code. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Lead

**Slug:** `SERVICETITAN_UPDATE_LEAD`

Update fields of a lead in ServiceTitan. Only the fields sent are changed; status is not set here, use DISMISS_LEAD to dismiss.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lead_id` | integer | Yes | Id of the lead. |
| `summary` | string | No | Lead summary. |
| `lead_zip` | string | No | Zip provided for the lead. |
| `priority` | string ("Low" | "Normal" | "High" | "Urgent") | No | Priority of the lead. |
| `lead_city` | string | No | City provided for the lead. |
| `lead_unit` | string | No | Unit provided for the lead. |
| `lead_email` | string | No | Email provided for the lead. |
| `lead_phone` | string | No | Phone number provided for the lead. |
| `lead_state` | string | No | State provided for the lead. |
| `campaign_id` | integer | No | ID of the campaign. |
| `job_type_id` | integer | No | ID of job type. |
| `lead_street` | string | No | Street provided for the lead. |
| `lead_country` | string | No | Country provided for the lead. |
| `business_unit_id` | integer | No | ID of the business unit. |
| `lead_customer_name` | string | No | Customer name provided for the lead. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Location

**Slug:** `SERVICETITAN_UPDATE_LOCATION`

Update fields of a location in ServiceTitan. Only the fields sent are changed, but custom_fields and tag_type_ids replace the full lists, so anything left out of them is removed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the location. |
| `active` | boolean | No | Whether the location is active. The provider guide says locations cannot be deactivated or reactivated through the API, so this field may be ignored. |
| `address` | object | No | Address of the location record. When sent, street, unit, city, state, zip and country are all required. |
| `customer_id` | integer | No | ID of the location's customer. |
| `location_id` | integer | Yes | Id of the location. |
| `tax_zone_id` | integer | No | ID of the location tax zone. |
| `tag_type_ids` | array | No | List of tag type IDs. If location has tag types X and Y and this field only contains tag type X, then Y will removed from the location. If it is an empty list, all tags on the location will be removed. |
| `custom_fields` | array | No | List of custom fields and their values, each with typeId and value. This list must describe the full list of custom fields on the location: the value of any custom field left out is removed. |
| `external_data` | object | No | Optional model that contains a list of external data items that should be updated to this Location. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Location Contact

**Slug:** `SERVICETITAN_UPDATE_LOCATION_CONTACT`

Update one contact entry on a location in ServiceTitan. Only the fields sent are changed; if preferences is sent, all five of its flags are required. This is the location's own contact list, separate from the GUID person contacts managed with CREATE_CONTACT and CREATE_CONTACT_METHOD.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Short description about this contact, for example, "work #" or "Owner's daughter - Kelly". |
| `type` | string ("Phone" | "Email" | "Fax" | "MobilePhone") | No | Type of contact entry: Phone (landline), MobilePhone, Email or Fax. |
| `value` | string | No | The email, phone number, or fax number for the contact. |
| `contact_id` | integer | Yes | Id of the contact entry, from the matching contacts list tool. This is a numeric id, not a contact GUID. |
| `location_id` | integer | Yes | Id of the location. |
| `preferences` | object | No | Contact preference setting for Job Reminders and Marketing Updates. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Location Preferred Technician

**Slug:** `SERVICETITAN_UPDATE_LOCATION_PREFERRED_TECHNICIAN`

Set the preferred technician of a location in ServiceTitan. Both ids go in the path and no request body is sent; it replaces any technician set before.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location_id` | integer | Yes | Id of the location. |
| `preferred_technician_id` | integer | Yes | Id of the technician to set as preferred for the location. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Membership

**Slug:** `SERVICETITAN_UPDATE_MEMBERSHIP`

Update a customer membership in ServiceTitan; only the fields sent are changed. status takes Active, Suspended, Expired, Canceled or Deleted, and recurring_service_action None deletes the membership's existing recurring services. Explicit null clears to_date, location_id and recurring_location_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Memo text field. |
| `status` | string ("Active" | "Suspended" | "Expired" | "Canceled" | "Deleted") | No | Status of the membership. |
| `to_date` | string | No | End date of the membership. Send null for an ongoing membership; leave it out to keep the current end date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `from_date` | string | No | Start date of the membership. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `sold_by_id` | integer | No | ID of the user that was credited for the sale of this membership. |
| `location_id` | integer | No | Discount location ID of this membership. Send null to apply to all locations; leave it out to keep the current location. |
| `membership_id` | integer | Yes | Id of the customer membership. |
| `payment_type_id` | integer | No | Id of the payment type (cash, check, ...) to bill with. Mutually exclusive with payment_method_id: set only one. With a payment type set, no stored payment method is charged automatically. |
| `business_unit_id` | integer | No | ID of the Business Unit associated with this membership. |
| `payment_method_id` | integer | No | Id of the stored payment method (card or bank account) to bill. Mutually exclusive with payment_type_id: set only one. |
| `billing_template_id` | integer | No | Id of the invoice template used to bill this membership. If a shared settings template is given, a new invoice template is created from it for this membership. |
| `recurring_location_id` | integer | No | The location at which recurring services are scheduled. Send null for all locations; leave it out to keep the current location. |
| `cancellation_invoice_id` | integer | No | The ID of the invoice optionally created upon membership cancellation in order to charge (or refund) the customer if deferred revenue balance is not 0. |
| `initial_deferred_revenue` | number | No | The amount of deferred revenue that this membership should start with that is not accounted for in the sale task. |
| `next_scheduled_bill_date` | string | No | Next date the membership will be billed. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `recurring_service_action` | string ("None" | "Single" | "All") | No | How many of the customer's locations get the recurring services: All, Single, or None. None deletes existing recurring services. Required when recurring_location_id is set. |
| `renewal_membership_task_id` | integer | No | The ID of the service that will be used as the default to renew this membership. |
| `cancellation_balance_invoice_id` | integer | No | The ID of the invoice created upon membership cancellation in order to zero out the deferred revenue balance. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Non Job Appointment

**Slug:** `SERVICETITAN_UPDATE_NON_JOB_APPOINTMENT`

Replace a ServiceTitan non-job appointment. This is a full update: technician, start, duration and name are required every time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the non-job appointment, for example Training. |
| `start` | string | Yes | Start of the non-job appointment. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `end_on` | string | No | Date-time the repetition ends, used when end_type is On. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `repeat` | boolean | No | Whether the non-job appointment repeats. |
| `all_day` | boolean | No | Whether the non-job appointment lasts the whole day. |
| `summary` | string | No | Free-text summary of the non-job appointment. |
| `duration` | string | Yes | Length of the non-job appointment as a TimeSpan string such as 02:00:00. |
| `end_type` | string ("Never" | "After" | "On") | No | How the repetition ends: Never, After a number of occurrences, or On a date. |
| `interval` | integer | No | Repeat every N units of frequency. |
| `frequency` | string ("Daily" | "Weekly" | "Monthly" | "Yearly") | No | How often the non-job appointment repeats. |
| `days_of_week` | string | No | Days of the week the appointment repeats on. The string format is not documented. |
| `technician_id` | integer | Yes | ID of the technician whose time is blocked. |
| `count_occurrences` | integer | No | Number of occurrences, used when end_type is After. |
| `timesheet_code_id` | integer | No | ID of the timesheet code that identifies how this time is paid. |
| `clear_dispatch_board` | boolean | No | Whether to clear this time on the dispatch board. Meaning taken from the field name; not documented. |
| `clear_technician_view` | boolean | No | Whether to clear this time in the technician's view. Meaning taken from the field name; not documented. |
| `non_job_appointment_id` | integer | Yes | ID of the non-job appointment. |
| `show_on_technician_schedule` | boolean | No | Whether the non-job appointment shows on the technician's schedule even if there is no timesheet. |
| `remove_technician_from_capacity_planning` | boolean | No | Whether the technician is left out of capacity planning for this time. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Payment

**Slug:** `SERVICETITAN_UPDATE_PAYMENT`

Update a customer payment record in ServiceTitan: type, paid date, memo, status and how it is split across invoices. type_id and splits are required on every call even though this is a PATCH.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Deprecated by ServiceTitan; use user_memo. |
| `active` | boolean | No | Whether the payment is active. |
| `splits` | array | Yes | How the payment is split across invoices, each with amount, invoiceId and invoiceNumber; required on every call. |
| `status` | string ("Pending" | "Posted" | "Exported") | No | Payment status: Pending, Posted or Exported. |
| `paid_on` | string | No | When the payment was made. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `type_id` | integer | Yes | Id of the payment type; see LIST_PAYMENT_TYPES. Required on every call. |
| `auth_code` | string | No | Payment authorization code. |
| `export_id` | string | No | Identifier assigned when the payment was exported. |
| `user_memo` | string | No | Custom free-text message stored with the payment. |
| `payment_id` | integer | Yes | Id of the payment. |
| `check_number` | string | No | Check number. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Payment Custom Fields

**Slug:** `SERVICETITAN_UPDATE_PAYMENT_CUSTOM_FIELDS`

Set custom field values on one or more payments in ServiceTitan. Each operation names one payment id and the fields to set; a field name must already exist as a custom field type, and the documented response has no body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field updates to apply, one entry per payment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Payment Status

**Slug:** `SERVICETITAN_UPDATE_PAYMENT_STATUS`

Set the status (Pending, Posted or Exported) of one or more customer payments in ServiceTitan in one call. The documented response has no body, so read the payments back with LIST_PAYMENTS to confirm.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status` | string ("Pending" | "Posted" | "Exported") | Yes | Status to set on every listed payment: Pending, Posted or Exported. |
| `payment_ids` | array | Yes | List of payment ids whose status is set. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Payroll Adjustment

**Slug:** `SERVICETITAN_UPDATE_PAYROLL_ADJUSTMENT`

Update a payroll adjustment in ServiceTitan with a PUT. employee_id and posted_on are required on every call along with the employee_type query value; the spec does not say what happens to optional fields that are left out.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Memo of the payroll adjustment. |
| `rate` | number | No | Rate of the payroll adjustment. |
| `hours` | number | No | Hours of the payroll adjustment. |
| `amount` | number | No | The payroll adjustment amount. |
| `quantity` | number | No | Quantity of the payroll adjustment. |
| `posted_on` | string | Yes | When the adjustment is posted. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `invoice_id` | integer | No | Id of the payroll adjustment invoice. |
| `employee_id` | integer | Yes | Id of the employee or technician the adjustment is for. |
| `employee_type` | string ("Technician" | "Employee") | Yes | Type of the person the adjustment belongs to: Technician or Employee. Required. |
| `activity_code_id` | integer | No | Id of the payroll adjustment activity code. |
| `business_unit_id` | integer | No | Id of the payroll adjustment business unit. |
| `payroll_adjustment_id` | integer | Yes | Id of the payroll adjustment. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Pricebook Category

**Slug:** `SERVICETITAN_UPDATE_PRICEBOOK_CATEGORY`

Update fields of a ServiceTitan pricebook category by id and return the updated category. Every body field is optional.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | The name of the category. |
| `image` | string | No | The image to display as the category. |
| `active` | boolean | No | Active shows if this category is currently active. |
| `position` | integer | No | The position location of this item. |
| `parent_id` | integer | No | The id of this category's parent. Send null to make it a top-level category; leave it out to keep the current parent. |
| `sku_images` | array | No | The images that will be used for the SKUs under this category. The spec does not say whether the list replaces or is added to the current one. |
| `sku_videos` | array | No | The videos that will be used for the SKUs under this category. The spec does not say whether the list replaces or is added to the current one. |
| `category_id` | integer | Yes | Id of the pricebook category to update. |
| `description` | string | No | A description that described the category. |
| `category_type` | string ("Services" | "Materials") | No | The category type: Services or Materials. |
| `business_unit_ids` | array | No | Ids of the business units that are associated with this category. The spec does not say whether the list replaces or is added to the current one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Pricebook Discount or Fee

**Slug:** `SERVICETITAN_UPDATE_PRICEBOOK_DISCOUNT_OR_FEE`

Update fields of a discount or fee in the ServiceTitan pricebook by id. Every body field is optional and only the fields you pass are sent; categories and assets are sent as the lists you give.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | No | Code of the discount or fee. |
| `type` | string ("Discount" | "Fee") | No | Discount or Fee: which kind of item this is. |
| `bonus` | number | No | Flat-rate bonus paid for this item. |
| `hours` | number | No | Number of hours associated with the item. |
| `limit` | number | No | Maximum amount that can be applied for this item. |
| `active` | boolean | No | Whether the item is active. |
| `amount` | number | No | Percentage or flat amount to discount or add, as amount_type says. |
| `assets` | array | No | Images, videos or PDFs to attach to the item. Each needs type and url. |
| `account` | string | No | Accounting account assigned to the item. |
| `taxable` | boolean | No | Set true to apply tax when the item is added to an estimate or invoice. |
| `categories` | array | No | Ids of the categories technicians use to find the item. |
| `amount_type` | string ("Percentage" | "Fixed") | No | Percentage or Fixed: whether amount is a percentage or a flat amount. |
| `description` | string | No | Description of the item. The spec gives its format as html. |
| `display_name` | string | No | Display name of the discount or fee. |
| `external_data` | object | No | External data to write on the item. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `pays_commission` | boolean | No | Whether this item pays commission. |
| `budget_cost_code` | string | No | Budget cost code segment. Send budget_cost_type with it. |
| `budget_cost_type` | string | No | Budget cost type segment. Send budget_cost_code with it. |
| `commission_bonus` | number | No | Percentage-rate bonus paid for this item. |
| `cross_sale_group` | string | No | Cross-sale group, tracked as a separate column on the Technical Performance Board. |
| `discount_or_fee_id` | integer | Yes | Id of the discount or fee to update. |
| `allow_custom_amount` | boolean | No | Set true to let users enter a custom amount when applying this item. |
| `exclude_from_payroll` | boolean | No | Whether the item is excluded from payroll. |
| `intacct_gl_group_account` | string | No | Intacct GL group name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Pricebook Equipment

**Slug:** `SERVICETITAN_UPDATE_PRICEBOOK_EQUIPMENT`

Update fields of an equipment item in the ServiceTitan pricebook catalog by id. Every body field is optional and only the fields you pass are sent; list fields such as categories and assets are sent as the lists you give.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | No | Code of the item. |
| `cost` | number | No | Cost paid to acquire the item. |
| `bonus` | number | No | Flat-rate bonus paid for the item. |
| `hours` | number | No | Number of hours to install the equipment. |
| `model` | string | No | Model of the equipment. |
| `price` | number | No | Sale price of the item. |
| `active` | boolean | No | Whether the item is active. |
| `assets` | array | No | Images, videos or PDFs to attach to the item. Each needs type and url. |
| `account` | string | No | Accounting account assigned to the item. |
| `taxable` | boolean | No | Whether the item is taxable. |
| `upgrades` | array | No | Ids of upgrades that can be sold for this item. |
| `categories` | array | No | Ids of the categories the item belongs to. |
| `dimensions` | object | No | Dimensions of the equipment: height, width and depth. |
| `description` | string | No | Description displayed with the item. The spec gives its format as html. |
| `add_on_price` | number | No | Price when the item is sold as an add-on. |
| `display_name` | string | No | Name displayed with the item. |
| `equipment_id` | integer | Yes | Id of the pricebook equipment item to update. |
| `is_inventory` | boolean | No | Whether the equipment is part of inventory. |
| `manufacturer` | string | No | Name of the manufacturer. |
| `member_price` | number | No | Price when the item is sold to a member. |
| `asset_account` | string | No | Name of the asset general ledger account for the item. |
| `external_data` | object | No | External data to write on the item. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `other_vendors` | array | No | Other vendors the item can be acquired from. Each needs vendorId, cost and active. |
| `is_cost_locked` | boolean | No | Whether the cost is locked from editing. |
| `primary_vendor` | object | No | Primary vendor the item is acquired from. vendorId, cost and active are required. |
| `is_price_locked` | boolean | No | Whether the price is locked from editing. |
| `pays_commission` | boolean | No | Whether the item pays commission. |
| `recommendations` | array | No | Services and materials recommended with this item, each with skuId and type (Service or Material). |
| `unit_of_measure` | string | No | Unit of measure of the item. |
| `budget_cost_code` | string | No | Budget cost code segment. Send budget_cost_type with it. |
| `budget_cost_type` | string | No | Budget cost type segment. Send budget_cost_code with it. |
| `commission_bonus` | number | No | Percentage-rate bonus paid for the item. |
| `cross_sale_group` | string | No | Cross-sale group, tracked as a separate column on the Technical Performance Board. |
| `add_on_member_price` | number | No | Price when the item is sold to a member as an add-on. |
| `equipment_materials` | array | No | Materials used with this equipment, each with skuId and quantity. |
| `variation_equipment` | array | No | Ids of the variation items to add. |
| `cost_of_sale_account` | string | No | Name of the cost of sale general ledger account for the item. |
| `manufacturer_warranty` | object | No | Manufacturer warranty included with the item: duration (required) and description. |
| `intacct_gl_group_account` | string | No | Intacct GL group name. |
| `is_configurable_equipment` | boolean | No | Whether the item is configurable equipment. |
| `service_provider_warranty` | object | No | Service provider warranty included with the item: duration (required) and description. |
| `exclude_estimated_cost_from_invoice` | boolean | No | Whether the estimated cost is left off the invoice when carried over from an estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Pricebook Material

**Slug:** `SERVICETITAN_UPDATE_PRICEBOOK_MATERIAL`

Update fields of a material in the ServiceTitan pricebook by id. Every body field is optional; a field left out is not sent.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | No | Code for the SKU. |
| `cost` | number | No | The cost paid to acquire the material. |
| `bonus` | number | No | Flat-rate bonus paid for this task. |
| `hours` | number | No | The number of hours associated with installing the material. |
| `price` | number | No | Price of this SKU when sold. |
| `active` | boolean | No | Whether the SKU is active. |
| `assets` | array | No | Images, videos or PDFs attached to the SKU, each with type and url. |
| `account` | string | No | The accounting account assigned to this SKU. |
| `taxable` | boolean | No | Whether this SKU is taxable. |
| `categories` | array | No | Ids of the categories this SKU belongs to. |
| `epa_number` | string | No | Optional EPA registration number, up to 500 characters, when chemical tracking applies. |
| `description` | string | No | Description on the SKU that is displayed with the item. It can contain HTML. |
| `is_chemical` | boolean | No | When true, an EPA number and active ingredients may be recorded for this chemical material. |
| `material_id` | integer | Yes | Id of the pricebook material to update. |
| `add_on_price` | number | No | The price if the SKU is sold as an add-on item. |
| `cost_type_id` | integer | No | Id of the cost type of the other direct cost. |
| `display_name` | string | No | Name that displays with the SKU. |
| `is_inventory` | boolean | No | Whether this material is part of your inventory. |
| `member_price` | number | No | The price if the item is sold to a member. |
| `asset_account` | string | No | Name of the asset general ledger account for this item. |
| `external_data` | object | No | External data to write under one application GUID. patchMode Replace (the default) removes keys not listed; Merge changes only the listed keys. |
| `other_vendors` | array | No | Other vendors that you might go to acquire this SKU, each with vendorId, cost and active. |
| `is_cost_locked` | boolean | No | Whether the cost is locked from editing. |
| `primary_vendor` | object | No | The primary vendor you use to acquire this SKU. vendorId, cost and active are required inside it. |
| `is_price_locked` | boolean | No | Whether the price is locked from editing. |
| `pays_commission` | boolean | No | Whether this task pays commission. |
| `unit_of_measure` | string | No | The unit of measure used for this SKU. |
| `budget_cost_code` | string | No | The budget cost code segment for this material. budget_cost_type should also be provided. |
| `budget_cost_type` | string | No | The budget cost type segment for this material. budget_cost_code should also be provided. |
| `commission_bonus` | number | No | Percentage-rate bonus paid for this task. |
| `active_ingredients` | string | No | Optional active ingredients, up to 500 characters, when chemical tracking applies. |
| `deduct_as_job_cost` | boolean | No | Whether this is deducted as a job cost. |
| `add_on_member_price` | number | No | The price if the SKU is sold to a member as an add-on item. |
| `variation_materials` | array | No | Ids of the added variation materials. |
| `cost_of_sale_account` | string | No | Name of the cost of sale general ledger account for this item. |
| `chargeable_by_default` | boolean | No | Whether this is chargeable by default. |
| `intacct_gl_group_account` | string | No | Intacct GL group name. |
| `is_configurable_material` | boolean | No | Whether this is a configurable material. |
| `exclude_estimated_cost_from_invoice` | boolean | No | Whether the estimated cost is excluded from the invoice when carried over from an estimate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Pricebook Material Markup

**Slug:** `SERVICETITAN_UPDATE_PRICEBOOK_MATERIAL_MARKUP`

Replace a material markup tier in the ServiceTitan pricebook by id. This is a full replacement: range_from, range_to, and percent are all required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `percent` | number | Yes | Markup percent applied within the range. |
| `range_to` | number | Yes | Upper bound of the material cost range this markup tier applies to. |
| `markup_id` | integer | Yes | Id of the material markup to update; also sent in the request body, where the spec documents the same id. |
| `range_from` | number | Yes | Lower bound of the material cost range this markup tier applies to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Pricebook Service

**Slug:** `SERVICETITAN_UPDATE_PRICEBOOK_SERVICE`

Update fields of a service in the ServiceTitan pricebook by id. Send only the fields to change; the spec marks none of them required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | No | Code for the SKU. |
| `bonus` | number | No | Flat rate bonus paid for this task. |
| `hours` | number | No | Hours needed to complete this service. |
| `price` | number | No | Price of this SKU sold. |
| `active` | boolean | No | Active shows if the SKU is active or inactive. |
| `assets` | array | No | Images, videos or PDFs attached to SKU. |
| `account` | string | No | The accounting account assigned to this SKU. |
| `taxable` | boolean | No | Is this SKU taxable. |
| `is_labor` | boolean | No | Is a labor service. |
| `upgrades` | array | No | Ids of the upgrades that can be sold for this service. |
| `warranty` | object | No | Description of the warranty included in this SKU. |
| `categories` | array | No | Ids of the categories the service belongs to. |
| `service_id` | integer | Yes | Id of the pricebook service to update. |
| `description` | string | No | Description on the SKU that is displayed with the item. |
| `add_on_price` | number | No | The price of the SKU is sold as an add-on item. |
| `display_name` | string | No | Name that displays with the SKU. |
| `member_price` | number | No | The price if the item is sold to a member. |
| `external_data` | object | No | External data to write on the service. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `is_price_locked` | boolean | No | Whether the price is locked from editing. |
| `pays_commission` | boolean | No | PaysCommissions shows if this task pays commission. |
| `recommendations` | array | No | Ids of the services and materials recommended with this service. |
| `budget_cost_code` | string | No | The Budget CostCode segment for this entity. (Note: BudgetCostType should also be provided). |
| `budget_cost_type` | string | No | The Budget CostType segment for this entity (Note: BudgetCostCode should also be provided). |
| `commission_bonus` | number | No | Percentage rate bonus paid for this task. |
| `cross_sale_group` | string | No | A grouping of similar items that you'll then be able to track as a separate columns on the Technical Performance Board. |
| `service_equipment` | array | No | Array of equipment linked to the service. |
| `service_materials` | array | No | Array of materials linked to the service. |
| `add_on_member_price` | number | No | The price if the SKU is sold to a member as an add-on item. |
| `intacct_gl_group_account` | string | No | Intacct GL Group Name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Project

**Slug:** `SERVICETITAN_UPDATE_PROJECT`

Update fields of a ServiceTitan project; only the fields sent are changed. Whether a list field such as job_ids or project_manager_ids replaces or adds to the current list is not documented, so send the complete list you want the project to have; to add one job prefer Attach Job To Project.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Project name. |
| `job_ids` | array | No | IDs of the project's jobs. |
| `summary` | string | No | Project summary. HTML is accepted. |
| `status_id` | integer | No | Project status id. |
| `project_id` | integer | Yes | ID of the project. |
| `start_date` | string | No | Start date of the project. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `custom_fields` | array | No | Project record's custom fields. |
| `external_data` | object | No | External data update model. |
| `sub_status_id` | integer | No | Project sub status id. |
| `project_type_id` | integer | No | Project type id. |
| `business_unit_ids` | array | No | IDs of business units for the project. |
| `project_manager_ids` | array | No | IDs of the project's managers. |
| `actual_completion_date` | string | No | Actual completion date of the project. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `target_completion_date` | string | No | Target completion date of the project. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Proposal Template

**Slug:** `SERVICETITAN_UPDATE_PROPOSAL_TEMPLATE`

Update a proposal template in ServiceTitan; only the fields sent are changed. Sending estimate_assignments or business_unit_ids replaces the whole list, and an empty list removes them all.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the proposal template. |
| `active` | boolean | No | Whether the template is active. |
| `status` | string ("Publish" | "Draft") | No | Publication status: Publish or Draft. |
| `description` | string | No | Description of the proposal template. Omit to leave it unchanged; once set it cannot be cleared back to null. |
| `proposal_type_id` | integer | No | Id of the proposal type the template belongs to, from the proposal types list. |
| `business_unit_ids` | array | No | Ids of the business units the template is available to. When given, replaces the whole list; an empty list removes them all. |
| `estimate_assignments` | array | No | When provided, replaces all existing assignments (full replace, not merge), each with proposalTypeOptionId, estimateTemplateId and order. Omit to leave assignments unchanged. Pass an empty list to remove all assignments. |
| `proposal_template_id` | integer | Yes | Id of the proposal template. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Purchase Order

**Slug:** `SERVICETITAN_UPDATE_PURCHASE_ORDER`

Update fields of an existing ServiceTitan purchase order by id; every body field is optional. When items is sent it replaces the item list: every active item left out is marked inactive.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax` | number | No | Tax of the purchase order. |
| `date` | string | No | Date of the purchase order. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `memo` | string | No | Summary or memo for this purchase order. |
| `items` | array | No | New and updated items, sent as the full list: every active item of the purchase order that is not in this list is marked inactive. |
| `job_id` | integer | No | Id of the job for this purchase order. |
| `ship_to` | object | No | Address the purchase order is shipped to. When sent, description and every address field are required. |
| `type_id` | integer | No | Id of the purchase order type for this purchase order. |
| `shipping` | number | No | Shipping cost of the purchase order. |
| `vendor_id` | integer | No | Id of the vendor for this purchase order. |
| `project_id` | integer | No | Id of the project for this purchase order. |
| `required_on` | string | No | Date the purchase order is required on. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `technician_id` | integer | No | Id of the technician for this purchase order. |
| `budget_code_id` | integer | No | Id of the budget code for this purchase order. |
| `business_unit_id` | integer | No | Id of the business unit for this purchase order. |
| `purchase_order_id` | integer | Yes | Id of the purchase order to update. |
| `inventory_location_id` | integer | No | Id of the inventory location for this purchase order. |
| `vendor_invoice_number` | string | No | Vendor invoice number. |
| `impacts_technician_payroll` | boolean | No | Whether this purchase order impacts the technician's payroll. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Purchase Order Custom Fields

**Slug:** `SERVICETITAN_UPDATE_PURCHASE_ORDER_CUSTOM_FIELDS`

Set custom field values on one or more ServiceTitan purchase orders in a single request. Each operation names the purchase order by objectId and the custom fields to write by name.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field update operations, one per purchase order, each with objectId and customFields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Purchase Order Markup

**Slug:** `SERVICETITAN_UPDATE_PURCHASE_ORDER_MARKUP`

Update a ServiceTitan purchase order markup tier by id. All three values (range_from, range_to, percent) are required on every update.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `percent` | number | Yes | Markup percent applied within the range. |
| `range_to` | number | Yes | Upper bound of the range this markup tier applies to. |
| `markup_id` | integer | Yes | Id of the purchase order markup to update. |
| `range_from` | number | Yes | Lower bound of the range this markup tier applies to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Purchase Order Type

**Slug:** `SERVICETITAN_UPDATE_PURCHASE_ORDER_TYPE`

Update a ServiceTitan purchase order type by id. Although sent as a partial update, the documented body requires every setting, so send the full set of values.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the Purchase Order Type. |
| `active` | boolean | Yes | Is the Purchase Order Type Active. |
| `is_default` | boolean | Yes | Should the Purchase Order Type be the default. |
| `skip_weekends` | boolean | Yes | Whether weekends are skipped when the default required date is calculated. |
| `alert_settings` | object | Yes | Alert definition for the Purchase Order Type. All four email flags are required. |
| `landed_cost_method` | string ("None" | "ByValue") | Yes | Landed cost method for this PO type: None or ByValue. |
| `include_in_po_screen` | boolean | Yes | Should the Purchase Order Type be included in the Purchase Order screen. |
| `include_in_sales_tax` | boolean | Yes | Should the Purchase Order Type be included in sales tax. |
| `automatically_receive` | boolean | Yes | Should the Purchase Order be automatically received. |
| `display_to_technician` | boolean | Yes | Should the Purchase Order Type be displayed to the technician on mobile. |
| `prevent_job_detachment` | boolean | Yes | When enabled, once a Job is set on a PO of this type it cannot be cleared. |
| `purchase_order_type_id` | integer | Yes | Id of the purchase order type to update. |
| `is_default_for_consignment` | boolean | Yes | Should the Purchase Order Type be the default for consignment. |
| `require_job_before_receipt` | boolean | Yes | Require job before receipt. |
| `allow_technicians_to_send_po` | boolean | Yes | Should the Purchase Order Type allow technicians to send POs. |
| `exclude_tax_from_job_costing` | boolean | Yes | Should the Purchase Order Type be excluded from job costing. |
| `impact_to_technician_payroll` | boolean | Yes | Should the Purchase Order Type impact technician payroll. |
| `include_tax_in_fully_landed_cost` | boolean | Yes | Whether to include tax in fully landed cost. |
| `default_required_date_days_offset` | integer | Yes | Default number of days to offset required date. |
| `copy_purchase_order_items_to_invoice_when_received` | boolean | Yes | Should the Purchase Order Type copy purchase order items to invoice when received. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Recurring Service

**Slug:** `SERVICETITAN_UPDATE_RECURRING_SERVICE`

Update a location recurring service in ServiceTitan; only the fields sent are changed. Service events are generated from the recurrence fields, but whether a change regenerates events that already exist is not documented.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Memo. |
| `name` | string | No | Recurring service name. |
| `active` | boolean | No | Whether the recurring service is active. |
| `priority` | string ("Low" | "Normal" | "High" | "Urgent") | No | Priority of the recurring service. |
| `from_date` | string | No | Start date of the recurring service. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `campaign_id` | integer | No | Id of the campaign. |
| `job_summary` | string | No | Job summary. |
| `job_type_id` | integer | No | Id of the job type. |
| `tag_type_ids` | array | No | Ids of the tag types associated with this location recurring service. |
| `duration_type` | string ("Continuous" | "NumberOfVisits") | No | Recurrence duration type. |
| `job_start_time` | string | No | Start time of day of the generated jobs, as a duration string such as 09:00. |
| `duration_length` | integer | No | Duration length for the given duration type. |
| `recurrence_type` | string ("Weekly" | "Monthly" | "Seasonal" | "Daily" | "NthWeekdayOfMonth") | No | Recurrence type: Weekly, Monthly, Seasonal, Daily or NthWeekdayOfMonth. |
| `recurrence_week` | string ("None" | "First" | "Second" | "Third" | "Fourth" | "Last") | No | Week of the month the service recurs in when recurrence_type is NthWeekdayOfMonth. Used with recurrence_day_of_nth_week. |
| `business_unit_id` | integer | No | Id of the business unit. |
| `recurrence_months` | array | No | Months in which the service occurs, for a Seasonal recurrence type. |
| `invoice_template_id` | integer | No | Id of the invoice template. |
| `recurrence_interval` | integer | No | Recurrence interval for the recurrence type. Can be 0 when recurrence_type is Seasonal. |
| `recurring_service_id` | integer | Yes | Id of the location recurring service. |
| `estimated_payroll_cost` | number | No | Estimated payroll cost. |
| `recurrence_days_of_week` | array | No | Days of the week on which the service recurs when recurrence_type is Weekly. |
| `preferred_technician_ids` | array | No | Ids of the preferred technicians for this location recurring service. |
| `recurring_service_type_id` | integer | No | Id of the recurring service type. |
| `recurrence_day_of_nth_week` | string ("Sunday" | "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday") | No | Day of the week the service recurs on when recurrence_type is NthWeekdayOfMonth. Used with recurrence_week. |
| `invoice_template_for_following_years_id` | integer | No | Id of the invoice template for the second year and after, for ongoing memberships. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Tag Type

**Slug:** `SERVICETITAN_UPDATE_TAG_TYPE`

Update a tag type in ServiceTitan; only the fields sent are changed. Setting active to false deactivates the tag type; there is no delete endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | No | Code associated with the tag type, at most 20 characters. |
| `name` | string | No | Name of the tag type. |
| `color` | string | No | Color of the tag type as a 6-digit hex string, for example #FF0000. |
| `active` | boolean | No | Whether the tag type is active. |
| `importance` | string ("Medium" | "High") | No | Importance of the tag type: Medium or High. |
| `tag_type_id` | integer | Yes | Id of the tag type. |
| `is_conversion_opportunity` | boolean | No | Whether tags of this type count as a sales opportunity. |
| `is_visible_on_dispatch_board` | boolean | No | Whether tags of this type are shown on the dispatch board. |
| `allow_to_use_on_timesheet_activity` | boolean | No | Whether tags of this type may be used on timesheet activities. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Technician

**Slug:** `SERVICETITAN_UPDATE_TECHNICIAN`

Update a technician in ServiceTitan; only the fields sent are changed. zone_ids and project_label_ids replace the whole list, and account_locked true locks the technician's account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bio` | string | No | Biography, as HTML. |
| `home` | object | No | Home address. street and city are required when it is sent. |
| `memo` | string | No | Memo, as HTML. |
| `name` | string | No | Technician name. |
| `email` | string | No | Email address. |
| `login` | string | No | Login (user name). |
| `role_id` | integer | No | Id of the user role, from LIST_USER_ROLES. |
| `zone_ids` | array | No | Ids of all of the technician's zones. Replaces the whole list. |
| `positions` | array | No | Company positions of the technician. |
| `team_name` | string | No | Team name (not the team id). |
| `daily_goal` | number | No | Daily revenue goal. |
| `job_filter` | string ("AllScheduledDispatchedWorking" | "NextScheduledDispatchedWorking" | "DispatchedWorking" | "NextScheduledDispatchedWorkingToday" | "AllScheduledDispatchedWorkingToday" | "AllScheduledDispatchedWorkingFiveDays" | "NextScheduledDispatchedWorkingTodayTomorrow" | "AllScheduledDispatchedWorkingTodayTomorrow" | "Next2ScheduledDispatchedWorkingToday") | No | Upcoming appointment visibility. |
| `aad_user_id` | string | No | Azure Active Directory user id. |
| `burden_rate` | number | No | Hourly burden rate. |
| `license_type` | string ("NonManagedTech" | "ManagedTech" | "ManagedInstaller") | No | License type. |
| `main_zone_id` | integer | No | Id of the technician's main zone. |
| `phone_number` | string | No | Technician's phone number. |
| `custom_fields` | array | No | Custom field values of the technician, each with typeId and value. |
| `technician_id` | integer | Yes | Id of the technician. |
| `account_locked` | boolean | No | Account locked status. true locks the technician's account. |
| `business_unit_id` | integer | No | Id of the business unit, from LIST_BUSINESS_UNITS. |
| `project_label_ids` | array | No | Project label ids. Replaces the whole list. Requires the 'Budget vs Actual' feature flag, otherwise HTTP 400. |
| `job_history_date_filter` | string ("AllJobs" | "LastThreeDays" | "LastSevenDays" | "LastMonth") | No | Appointment history visibility. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Technician Payroll Settings

**Slug:** `SERVICETITAN_UPDATE_TECHNICIAN_PAYROLL_SETTINGS`

Update the payroll settings of one technician in ServiceTitan. hourly_rate is required on every call; the spec does not say whether other omitted fields are kept or cleared, except pay_type, which is left unchanged when omitted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pay_type` | string ("Both" | "Commission" | "Timesheet") | No | The pay type (technician only): Both, Commission or Timesheet. Omit to leave the current value unchanged. |
| `hire_date` | string | No | The hire date. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `manager_id` | integer | No | Id of the manager. |
| `hourly_rate` | number | Yes | The hourly rate. Required on every call. |
| `custom_fields` | array | No | Custom payroll fields to update (technician only), each with typeId and an optional value. |
| `technician_id` | integer | Yes | Id of the technician. |
| `external_payroll_id` | string | No | The external payroll id. |
| `is_included_in_payroll` | boolean | No | Whether the employee should be included in payroll processing. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Technician Shift

**Slug:** `SERVICETITAN_UPDATE_TECHNICIAN_SHIFT`

Update fields of a ServiceTitan technician shift; only the fields sent are changed. The technician and repeat settings cannot be changed here.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end` | string | No | When the shift ends. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `note` | string | No | Longer explanation of the shift. |
| `start` | string | No | When the shift begins. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `title` | string | No | Title of the shift. |
| `shift_type` | string ("Normal" | "OnCall" | "TimeOff") | No | Type of shift. |
| `timesheet_code_id` | integer | No | Timesheet code ID of the shift. |
| `technician_shift_id` | integer | Yes | ID of the technician shift. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Timesheet Activity

**Slug:** `SERVICETITAN_UPDATE_TIMESHEET_ACTIVITY`

Replace a timesheet activity in ServiceTitan. This is a PUT: activity_type_id, start_time, tag_type_ids and active are required on every call, the request has no employee field so the employee cannot be changed, and the spec does not say whether optional fields left out are cleared.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Memo or notes related to the activity. |
| `active` | boolean | Yes | Whether the activity is active. |
| `job_id` | integer | No | Id of the job associated with the activity. |
| `end_time` | string | No | End time of the activity. Optional. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `project_id` | integer | No | Id of the project associated with the activity. |
| `start_time` | string | Yes | Start time of the activity. RFC 3339 UTC date-time, e.g. 2025-01-31T00:00:00Z. |
| `activity_id` | integer | Yes | Id of the timesheet activity. |
| `miles_driven` | number | No | Miles driven associated with the activity. |
| `tag_type_ids` | array | Yes | Ids of the tag types associated with the activity. Required by the spec; whether an empty list is accepted is not documented. |
| `labor_type_id` | integer | No | Id of the labor type associated with the activity; see LIST_LABOR_TYPES. |
| `project_label` | string | No | Label of the project associated with the activity. |
| `appointment_id` | integer | No | Id of the appointment associated with the activity. |
| `budget_code_id` | integer | No | Id of the budget code associated with the activity. |
| `activity_type_id` | integer | Yes | Id of the activity type; see LIST_TIMESHEET_ACTIVITY_TYPES. |
| `budget_code_name` | string | No | Name of the budget code associated with the activity. |
| `non_job_event_assignment_id` | integer | No | Id of the non-job event assignment associated with the activity. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Truck

**Slug:** `SERVICETITAN_UPDATE_TRUCK`

Update a ServiceTitan truck by id: name, memo, warehouse, template, assigned technicians, or active status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Memo of the truck. |
| `name` | string | No | Truck name. |
| `active` | boolean | No | Whether the truck is active. |
| `truck_id` | integer | Yes | Id of the truck to update. |
| `template_id` | integer | No | Id of the inventory template for this truck. |
| `warehouse_id` | integer | No | Id of the warehouse for this truck. |
| `external_data` | object | No | External data items to attach to this truck. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `technician_ids` | array | No | Ids of the technicians to associate with this truck. The spec does not say whether the list replaces or adds to the current one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Vendor

**Slug:** `SERVICETITAN_UPDATE_VENDOR`

Update fields of an existing ServiceTitan inventory vendor by id; every body field is optional, and fields left out are not sent.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fax` | string | No | Contact fax of the vendor. |
| `memo` | string | No | Memo of the vendor. |
| `name` | string | No | Name of the vendor. |
| `tags` | array | No | Tags of the vendor, each with tagTypeId. The spec does not say whether this list replaces the existing tags. |
| `email` | string | No | Contact email of the vendor. |
| `phone` | string | No | Contact phone of the vendor. |
| `active` | boolean | No | Whether the vendor is active. |
| `address` | object | No | Address of the vendor. When sent, street, unit, city, state, zip and country are all required. |
| `tax_rate` | number | No | Default tax rate. |
| `last_name` | string | No | Contact last name. |
| `vendor_id` | integer | Yes | Id of the vendor to update. |
| `first_name` | string | No | Contact first name. |
| `external_data` | object | No | External data items to attach to this vendor. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |
| `delivery_option` | string ("Manual" | "EmailAsExcel" | "EmailAsPdf" | "EmailAsPdfRollupView" | "Electronic" | "MarkAsSent" | "EmailAsExcelAndPdf" | "VendorPortal") | No | Default purchase order delivery method. |
| `payment_term_id` | integer | No | Id of the payment term. |
| `vendor_contacts` | array | No | Contacts at the vendor who receive purchase order emails, each with name and email, and id to update an existing contact. The spec does not say whether this list replaces the existing contacts. |
| `remittance_vendor_id` | integer | No | Id of the remittance vendor. |
| `is_truck_replenishment` | boolean | No | Whether this vendor is used for truck replenishment. |
| `vendor_quickbooks_item` | string | No | Vendor QuickBooks item. |
| `restricted_mobile_creation` | boolean | No | Whether purchase order creation on mobile is restricted. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Vendor Custom Fields

**Slug:** `SERVICETITAN_UPDATE_VENDOR_CUSTOM_FIELDS`

Set custom field values on one or more ServiceTitan vendors in a single request. Each operation names the vendor by objectId and the custom fields to write by name.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `operations` | array | Yes | Custom field update operations, one per vendor, each with objectId and customFields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Warehouse

**Slug:** `SERVICETITAN_UPDATE_WAREHOUSE`

Update the external data attached to a ServiceTitan warehouse by id. External data is the only warehouse field this endpoint can change.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `warehouse_id` | integer | Yes | Id of the warehouse to update. |
| `external_data` | object | No | External data items to attach to this warehouse. applicationGuid and externalData are required; patchMode Replace (default) drops keys not sent, Merge keeps them. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Zone

**Slug:** `SERVICETITAN_UPDATE_ZONE`

Update fields of a ServiceTitan dispatch zone; only the fields sent are changed. Whether a list field such as zips, cities or business_unit_ids replaces or adds to the current list is not documented, so send the complete list you want the zone to have.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Name of the zone. |
| `zips` | array | No | Zip codes assigned to the zone. |
| `cities` | array | No | Cities assigned to the zone. |
| `zone_id` | integer | Yes | ID of the zone. |
| `locn_numbers` | array | No | LOCN numbers assigned to the zone. |
| `service_days_ids` | array | No | IDs of the service days assigned to the zone. |
| `business_unit_ids` | array | No | IDs of the business units assigned to the zone. |
| `territory_numbers` | array | No | Territory numbers assigned to the zone. |
| `service_days_enabled` | boolean | No | Whether the service days option is enabled. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Estimate Item

**Slug:** `SERVICETITAN_UPSERT_ESTIMATE_ITEM`

Add a line item to an estimate in ServiceTitan, or update an existing one when item_id is given. One item per call. With item_id the existing item is overwritten; whether fields left out are kept or cleared is not documented, and the add-or-update reading comes from the schema and ServiceTitan's guide, not the spec.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sku_id` | integer | No | Id of the pricebook SKU (service, material or equipment) for this line. |
| `item_id` | integer | No | Id of an existing estimate item to update; leave out to add a new item. This use is inferred from the schema; the spec does not describe the field. |
| `quantity` | number | No | Quantity. |
| `sku_name` | string | No | Name of the pricebook SKU. |
| `is_add_on` | boolean | No | Whether this line is an add-on. |
| `unit_cost` | number | No | Cost per unit to the business. |
| `chargeable` | boolean | No | Whether the line is charged to the customer. |
| `unit_price` | number | No | Price per unit charged to the customer. |
| `description` | string | No | Item description; HTML is accepted. |
| `estimate_id` | integer | Yes | Id of the estimate. |
| `budget_code_id` | integer | No | Id of the budget code for this line. |
| `parent_item_id` | integer | No | Id of the parent item when this line is an add-on of another item. |
| `item_group_name` | string | No | Name of the item group this line belongs to. |
| `item_group_root_id` | integer | No | Id of the root item of the item group this line belongs to. |
| `use_default_project_labels` | boolean | No | Whether to apply the project's default labels to this line. |
| `membership_duration_billing_id` | integer | No | Id of the membership duration/billing option, when the line sells a membership. Get the options from the membership type duration billing items. |
| `skip_updating_membership_prices` | boolean | No | Set true to keep the given price instead of applying membership pricing. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Project Daily Log

**Slug:** `SERVICETITAN_UPSERT_PROJECT_DAILY_LOG`

Create or update the daily log of a ServiceTitan project for one date. Only the fields and sections sent are changed; if no log exists for that date, one is created.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `health` | string ("None" | "OnTrack" | "AtRisk" | "OffTrack") | No | Overall health status of the project as of this daily log. |
| `inputs` | object | No | Raw section content entered by the user. Omit entirely to leave every section untouched. The schema lists all six sections as required when this object is sent, although the provider text says a single section may be omitted. |
| `log_date` | string | Yes | Date of the daily log, in yyyy-MM-dd format, e.g. 2025-01-31. |
| `summaries` | object | No | Generated/AI-summarized version of each section, independently overwritable from the raw content in inputs. Omit entirely to leave every section's summary untouched. All six sections are required when this object is sent. |
| `project_id` | integer | Yes | The project ID. |
| `overall_summary` | string | No | Generated executive summary of the whole daily log. Unlike the sections in summaries, there is no corresponding raw-content field for this; it is overwritable directly. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
