ServiceTitan Connector
Description
ServiceTitan is a comprehensive field service management solution that helps businesses manage their operations, workforce, and customer service.
Use the ServiceTitan component to manage Technicians, Jobs, Appointments, and more.
API Documentation
This component was built using the ServiceTitan API Reference currently utilizing the V2 API.
Connections
OAuth 2.0 Client Credentials
key: serviceTitanConnectionAuthenticating with ServiceTitan using OAuth 2.0 Client Credentials requires a developer account and an application configured in the ServiceTitan Developer Portal.
Prerequisites
- A ServiceTitan developer account
- Access to the ServiceTitan Developer Portal
Setup Steps
Creating a new app:
- Log in to the Developer Portal
- Select My Apps at the top of the page
- Select + New App
- Fill in all required fields and scopes
- Under Client Credentials Management, select I, the app developer, will configure the credentials on behalf of each tenant
- Click Create App
For existing apps:
- Log in to the Developer Portal
- Select My Apps at the top of the page
- Click Edit on the application
- Under Client Credentials Management, select I, the app developer, will configure the credentials on behalf of each tenant
- Click Save
Obtaining a Client Secret and Client ID:
Add the client’s Tenant ID to the application. Once the Tenant Admin has allowed access and connected to the application through their API Application Access settings, obtain the tenant’s Client ID and Client Secret from the developer portal:
- Log in to the Developer Portal
- Select My Apps at the top of the page
- Click View Connections for the app
- Click Generate under Client Secret to create a new Client Secret
- Reference the tenant’s Client ID on this page as well
Configure the Connection
Create a connection of type OAuth 2.0 Client Credentials and configure the following fields:
- Token URL: Select the appropriate environment token URL (Production or Integration)
- Client ID: Enter the Client ID obtained from the developer portal
- Client Secret: Enter the Client Secret generated in the developer portal
- Tenant: Enter the Tenant ID used to scope API requests to a specific account
- Application Key: Enter the application key found in the developer portal
- Environment: Select Production for live data or Integration for testing
| Input | Notes | Example |
|---|---|---|
| Application Key | The application key for the integration, found in the ServiceTitan developer portal under the application's details. Sent with every request as the ST-App-Key header. | ak1.XXXXXXXXXXXXXXXXXXXXXXXXXX |
| Client ID | The client identifier for the application, found in the ServiceTitan developer portal. | |
| Client Secret | The client secret for the application, found in the ServiceTitan developer portal. | |
| Environment | The ServiceTitan environment to connect to. Production uses api.servicetitan.io; Integration uses the api-integration host for sandbox testing. | |
| Scopes | Space-separated OAuth 2.0 permission scopes for the API. | |
| Tenant | The numeric tenant ID for the ServiceTitan account, found in the ServiceTitan developer portal alongside the application's details. | 10978752986 |
| Token URL | The OAuth 2.0 token URL for the API. Select the appropriate environment. |
Triggers
New and Updated Records
Retrieves existing and ongoing records for a selected ServiceTitan resource type. Load history once, check for changes on a schedule, or both. | key: pollChangesTrigger
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Look-back Date | The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record created or modified on or after this date once, ignoring the visibility toggles. | 2026-01-01 |
| Resource Type | The type of resource to poll for new and updated records. | |
| Show New Records | When true, includes newly created records in the trigger results. | true |
| Show Updated Records | When true, includes updated records in the trigger results. | true |
This trigger polls the ServiceTitan API for new and updated records on a scheduled basis.
How It Works
- The trigger runs on the configured schedule
- It fetches records from ServiceTitan using the
modifiedOnOrAfterAPI parameter to retrieve only records modified since the last poll - Each returned record is classified as created when its
createdOnis at or later than the last poll time, and otherwise as updated when itsmodifiedOnis at or later than the last poll time. A record landing exactly on the last poll time is included only if it was not already delivered on an earlier recurrence. A record that satisfies neither test is classified as neither and is dropped from the results - Outside an initial sync, Show New Records and Show Updated Records each gate one of the two result arrays. Turning either off empties that array, and both keys remain present in the payload
- The trigger updates its internal state after each poll
Initial Sync
An initial sync seeds a complete starting state rather than a change feed, so inputs that narrow
which changes are reported would leave gaps in it: Show New Records and Show Updated
Records are ignored while it runs, and are the only inputs it ignores. It begins on the first
recurrence, when the trigger has no stored position and a Look-back Date (YYYY-MM-DD) is set,
and seeds every record created or modified on or after that date exactly once. Left empty, there is
no sync and the trigger starts from its first recurrence.
The window has no fixed upper bound, so a record modified mid-drain is swept into the sync rather than deferred to the schedule. Each recurrence advances the position to the newest record it actually received, never to the wall clock, and the first incremental recurrence resumes from exactly there; nothing in the payload marks the handoff. With batching off the drain is uncapped and finishes in one recurrence; with batching on it is capped, so a larger window spans several recurrences before the toggles apply again. Technicians has no sortable field, so it is never capped.
Resource Type still applies throughout. The trigger has no page-size or field-selection input, so nothing else is suppressed.
Batching
Batching is enabled per flow on this trigger. Once enabled, each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and the number of batches dispatched concurrently can both be overridden per instance. Raising concurrency increases the request volume sent to ServiceTitan.
To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default to use the size this trigger ships with, or choose Custom batch size to set a specific size. Batch Concurrency is optional; leave it blank for no batch-level limit.
With batching off a downstream step reads body.data.created and body.data.updated. With
batching on those fields do not exist: each execution receives one
{ "changeType": ..., "record": ... } item, or an array of them when the batch size is greater
than 1. Any step reading the older shape must be updated before batching is enabled, or it breaks
the moment the switch is flipped. Because batching is enabled per flow, that change is scoped to
the flow rather than to the component or to other flows using the same trigger.
The trigger advances its polling position before dispatching, so a failed execution loses its records either way: with batching off the whole recurrence's payload, with batching on only that batch. Records lost this way are not re-polled.
Returned Data
With batching off, the trigger returns an object with two arrays: created for new records and updated for modified records. Fields shown are representative. The full response object includes additional properties.
Example Response
{
"data": {
"created": [
{
"id": 98765432,
"number": "JOB-0001234",
"status": "Scheduled",
"createdOn": "2024-01-16T10:30:00Z",
"modifiedOn": "2024-01-16T10:30:00Z",
"customerId": 11223344
}
],
"updated": [
{
"id": 98765399,
"number": "JOB-0001198",
"status": "Completed",
"createdOn": "2024-01-10T09:00:00Z",
"modifiedOn": "2024-01-16T14:22:00Z",
"customerId": 55667788
}
]
}
}
With batching on, each execution receives one record tagged with how it changed, or an array of such items when the batch size is greater than 1. The created and updated arrays are not part of this shape.
Batched Item
{
"changeType": "created",
"record": {
"id": 98765432,
"number": "JOB-0001234",
"status": "Scheduled",
"createdOn": "2024-01-16T10:30:00Z",
"modifiedOn": "2024-01-16T10:30:00Z",
"customerId": 11223344
}
}
Notes
- ServiceTitan uses different API URL namespaces per resource type. Jobs, appointments, and projects use the job project management namespace (
jpm); invoices and payments use accounting; customers and locations use CRM; installed equipment uses equipment systems; technicians use settings. The trigger selects the correct endpoint automatically based on the chosen resource type - The per-recurrence cap that batching applies relies on sorting by modified date, and ServiceTitan documents no secondary sort or continuation token for these endpoints. If a single
modifiedOninstant holds more records than that cap, the trigger delivers the first cap-full and its polling position cannot advance past that instant, so the remaining records at that instant are not delivered. With batching off the drain is uncapped and unaffected - Refer to the ServiceTitan developer documentation for rate limit details and available fields per resource type
Example Payload for New and Updated Records⤓
Data Sources
Select Appointment
Select an appointment from a dropdown menu (up to 9,000 appointments). | key: selectAppointment | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Appointment⤓
Select Booking
Select a booking from a dropdown menu (up to 9,000 bookings). | key: selectBooking | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Booking⤓
Select Business Unit
Select a business unit from a dropdown menu (up to 9,000 business units). | key: selectBusinessUnit | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Business Unit⤓
Select Customer
Select a customer from a dropdown menu (up to 9,000 customers). | key: selectCustomers | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Customer⤓
Select Customer Contact
Select a customer contact from a dropdown menu (up to 9,000 contacts). | key: selectCustomerContact | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Customer ID | The customer ID to fetch contacts for. | 10978752986 |
Example Payload for Select Customer Contact⤓
Select Installed Equipment
Select an installed equipment record from a dropdown menu (up to 9,000 records). | key: selectInstalledEquipment | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Installed Equipment⤓
Select Invoice
Select an invoice from a dropdown menu (up to 9,000 invoices). | key: selectInvoice | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Invoice⤓
Select Job
Select a job from a dropdown menu (up to 9,000 jobs). | key: selectJob | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Job⤓
Select Job Cancel Reason
Select a job cancel reason from a dropdown menu (up to 9,000 reasons). | key: selectJobCancelReason | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Job Cancel Reason⤓
Select Location
Select a location from a dropdown menu (up to 9,000 locations). | key: selectLocation | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Location⤓
Select Payment
Select a payment from a dropdown menu (up to 9,000 payments). | key: selectPayment | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Payment⤓
Select Project
Select a project from a dropdown menu (up to 9,000 projects). | key: selectProject | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Project⤓
Select Technician
Select a technician from a dropdown menu (up to 9,000 technicians). | key: selectTechnician | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select Technician⤓
Select User Role
Select a user role from a dropdown menu (up to 9,000 user roles). | key: selectUserRole | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. |
Example Payload for Select User Role⤓
Actions
Assign Technicians to Appointment
Assigns the list of technicians to the appointment. | key: assignTechnicians
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Job Appointment ID | ID of the job appointment | 1234567890 |
| Technician IDs | Assign these technicians to the appointment. | 1088 |
Example Payload for Assign Technicians to Appointment⤓
Cancel Job
Cancels a job. | key: cancelJob
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Job ID | The job ID. | 10978752986 |
| Job Memo | Memo of job cancel reason | Customer rescheduled to a later date |
| Reason ID | ID of job cancel reason | 1088 |
Example Payload for Cancel Job⤓
Create Appointment
Adds a new appointment to an existing job. | key: createAppointment
| Input | Notes | Example |
|---|---|---|
| Arrival Window End | Arrival window end date/time (in UTC) | 2021-01-01T00:00:00Z |
| Arrival Window Start | Arrival window start date/time (in UTC) | 2021-01-01T00:00:00Z |
| Connection | The ServiceTitan connection to use. | |
| End | End date/time (in UTC) | 2021-01-01T00:00:00Z |
| Job ID | The job ID. | 10978752986 |
| Special Instructions | Special instructions associated to the appointment | Any special instructions |
| Start | Start date/time (in UTC) | 2021-01-01T00:00:00Z |
| Technician ID | The ID of the technician. | 10978752986 |
Example Payload for Create Appointment⤓
Create Booking by Provider
Create a booking for a booking provider. | key: createBookingByProvider
| Input | Notes | Example |
|---|---|---|
| Address | The street address, including unit, city, state, ZIP code, and country. | |
| Booking Provider ID | The ID of the booking provider that submitted the booking. | 10978752986 |
| Business Unit ID | The ID of the business unit. | 10978752986 |
| Campaign ID | The ID of the marketing campaign that generated the record. | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Contacts | The contact methods to attach, each with a type such as Phone or Email, a value, and an optional memo. | |
| Customer Type | Whether the customer is Residential or Commercial. | |
| External ID | The booking's identifier in the originating external system. | 10978752986 |
| Is First Time Client | When true, marks the booking's customer as a first-time client. | |
| Send Confirmation Email | When true, sends a booking confirmation email to the customer. | |
| Job Type ID | The ID of the job type to assign. | 10978752986 |
| Name | Booking name | Acme Plumbing |
| Priority | Booking priority | |
| Source | The lead source that generated this booking. | Test Source |
| Start | Start date/time (in UTC) | 2021-01-01T00:00:00Z |
| Summary | A short summary describing the booking. | A summary related to the invoice. |
| Uploaded Images | The images to attach to the booking, one entry per image. | booking-photo.jpg |
Example Payload for Create Booking by Provider⤓
Create Customer
Create a new customer. | key: createCustomer
| Input | Notes | Example |
|---|---|---|
| Address | Bill-To address of the customer record | |
| Connection | The ServiceTitan connection to use. | |
| Contacts | The contact methods to attach, each with a type such as Phone or Email, a value, and an optional memo. | |
| Custom Fields | Custom field values to set, as an array of type ID and value pairs. | |
| Do Not Mail | Customer has been flagged as “do not mail” | |
| Do Not Service | Customer has been flagged as “do not service” | |
| External Data | External data to attach to the request. | |
| Location | Locations for the customer | |
| Name | The full name of the customer or business. | Acme Plumbing |
| Tag Type IDs | The IDs of the tag types to apply. | 123 |
| Customer Type | Whether the customer is Residential or Commercial. |
Example Payload for Create Customer⤓
Create Customer Contact
Create a contact for a customer. | key: createCustomerContact
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Customer ID | The customer ID. | 10978752986 |
| Memo | Short description about this contact, for example, “work #” or “Owner’s daughter - Kelly” | Payment for services rendered. |
| Customer Contact Type | Type of the customer contact | |
| Customer Contact Type Value | The email, phone number, or fax number for the contact | 1234567890 |
Example Payload for Create Customer Contact⤓
Create Installed Equipment
Create a new installed equipment record. | key: createInstalledEquipment
| Input | Notes | Example |
|---|---|---|
| Attachments | List of attachments | |
| Connection | The ServiceTitan connection to use. | |
| Cost | Cost of the installed equipment | 100.00 |
| Custom Fields | The custom fields of the installed equipment | |
| Installed On | The date the equipment was installed | 2021-01-01T00:00:00Z |
| Location ID | The ID of the location of the installed equipment | 10978752986 |
| Manufacturer | Manufacturer of the installed equipment | Test Manufacturer |
| Memo | The memo of the installed equipment | Payment for services rendered. |
| Model | Model of the installed equipment | Test Model |
| Name | The name of the installed equipment | Acme Plumbing |
| Serial Number | Serial number of the installed equipment | 1234567890 |
| Tag Type IDs | The IDs of the tag types to apply. | 123 |
| Warranty Dates | Manufacturer and service provider warranty start and end dates. |
Example Payload for Create Installed Equipment⤓
Create Installed Equipment Attachment
Create a new installed equipment attachment. | key: createInstalledEquipmentAttachment
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Attachment File | Reference a file from another action. Must be a file type. | |
| File Name | Name of the file | Test File |
Example Payload for Create Installed Equipment Attachment⤓
Create Invoices
Create an adjustment invoice. | key: createInvoices
| Input | Notes | Example |
|---|---|---|
| Adjustment To ID | The ID of the invoice the adjustment is for. | 10978752986 |
| Assigned To ID | The ID of the user the invoice is assigned to. | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Export ID | The identifier assigned to the record when it is exported to an external system. | 6B29FC40-CA47-1067-B31D-00DD010662DA |
| Invoiced On | The date the invoice was invoiced on. | 2021-01-01T00:00:00Z |
| Items | The items of the invoice. | |
| Number | The invoice number. | 10978752986 |
| Review Status | The review status of the invoice. | |
| Royalty Details | Royalty status, date, sent on, and memo. | |
| Subtotal | The subtotal of the invoice. | 100.00 |
| Summary | The summary of the invoice. | A summary related to the invoice. |
| Tax | The tax of the invoice. | 100.00 |
| Type ID | The ID of the invoice or payment type to assign, as configured in the ServiceTitan tenant. | 0 |
Example Payload for Create Invoices⤓
Create Job
Create a job. | key: createJob
| Input | Notes | Example |
|---|---|---|
| Appointments | List of appointment information | |
| Business Unit ID | ID of the job's business unit | 10978752986 |
| Campaign ID | ID of the job's campaign | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Customer ID | The customer ID. | 10978752986 |
| Customer PO | The customer's purchase order number to record on the job. | PO-10025 |
| Custom Fields | Custom fields for the job | |
| External Data | External data to attach to the request. | |
| Invoice Signature Is Required | When true, the invoice for this job requires a signature. When left empty, the location and job type rules apply. | |
| Job Generated Lead Source | The lead source that generated this job. Provide jobId (the job this one was generated from) and employeeId (the office user or technician credited). | |
| Job Type ID | ID of the job's type | 10978752986 |
| Location ID | The ID of the location. | 10978752986 |
| Priority | Priority of the job | |
| Project ID | ID of the job's project | 10978752986 |
| Summary | Job summary | A summary related to the invoice. |
| Tag Type IDs | Tag type IDs for the job | 123 |
Example Payload for Create Job⤓
Create Location
Creates a new location. | key: createLocation
| Input | Notes | Example |
|---|---|---|
| Address | The address of the location | |
| Connection | The ServiceTitan connection to use. | |
| Contacts | The contacts associated with the location | |
| Customer ID | The customer ID. | 10978752986 |
| Custom Fields | Custom field values to set, as an array of type ID and value pairs. | |
| External Data | External data to attach to the request. | |
| Name | The name of the location | Acme Plumbing |
| Tag Type IDs | The IDs of the tag types to apply. | 123 |
Example Payload for Create Location⤓
Create Payment (Deprecated)
Deprecated: ServiceTitan removed the POST /payments endpoint from the V2 API. Payment creation is no longer supported via the API. | key: createPayment
| Input | Notes | Example |
|---|---|---|
| Auth Code | The authorization code for the payment. | A1B2C3 |
| Check Number | The check number for the payment. | 1042 |
| Connection | The ServiceTitan connection to use. | |
| Export ID | The identifier assigned to the record when it is exported to an external system. | 6B29FC40-CA47-1067-B31D-00DD010662DA |
| Memo | A free-text note recorded against the payment. | Payment for services rendered. |
| Paid On | The date the payment was paid on. | 2021-01-01T00:00:00Z |
| Splits | The splits of the payment. | |
| Status | The status of the payment. | |
| Type ID | The ID of the invoice or payment type to assign, as configured in the ServiceTitan tenant. | 0 |
Example Payload for Create Payment (Deprecated)⤓
Create Project
Create a new project. | key: createProject
| Input | Notes | Example |
|---|---|---|
| Actual Completion Date | Actual completion date of the project | 2021-01-01T00:00:00Z |
| Connection | The ServiceTitan connection to use. | |
| Customer ID | ID of the project's customer | 10978752986 |
| Custom Fields | Custom fields for the project | |
| External Data | External data items to attach to the project, grouped under an application GUID. | |
| Location ID | The ID of the location. | 10978752986 |
| Name | Name of the project | Acme Plumbing |
| Project Manager IDs | IDs of the project's managers | 1088 |
| Start | Start date of the project | 2021-01-01T00:00:00Z |
| Status ID | The ID of the project status to set. | 1088 |
| Sub Status ID | The ID of the project sub-status to set. | 1088 |
| Summary | Summary of the project | A summary related to the invoice. |
| Target Completion Date | Target completion date of the project | 2021-01-01T00:00:00Z |
Example Payload for Create Project⤓
Create Technician
Create a new technician. | key: createTechnician
| Input | Notes | Example |
|---|---|---|
| Azure Active Directory User ID | The GUID of the technician's user account in Azure Active Directory. | 6B29FC40-CA47-1067-B31D-00DD010662DA |
| Account Creation Method | Determines how the technician's login is created: defer it, send an invite, or assign a username and password now. | |
| Additional Fields | Additional optional fields: includes Team, Daily Goal, Burden Rate, Biography, Job Filter, and Job History Date Filter. | |
| Business Unit ID | The ID of the business unit to which the technician will be assigned | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Custom Fields | Custom fields for the technician | |
Technician's email address | test@technician.us | |
| Address | The home address of the technician | |
| License Type | The type of ServiceTitan license to assign to the technician. | |
| Login Username | Technician's username | technician_us |
| Memo | Memo for the technician | Payment for services rendered. |
| Name | The name of the technician | Acme Plumbing |
| Password | The password to assign when the technician's login is created now rather than deferred or invited. | XXXXXXXXXXXX |
| Phone Number | Technician's phone number | 1234567890 |
| Positions | List of company positions | |
| Role ID | The ID of the user role to assign to the technician. | 7 |
Example Payload for Create Technician⤓
Delete Appointment
Delete an appointment by ID. | key: deleteAppointment
| Input | Notes | Example |
|---|---|---|
| Appointment ID | The ID of the appointment. | 10978752986 |
| Connection | The ServiceTitan connection to use. |
Example Payload for Delete Appointment⤓
Delete Customer Contact
Removes a contact from a customer. | key: deletCustomersContact
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Customer Contact ID | The customer contact ID. | 10978752986 |
| Customer ID | The customer ID. | 10978752986 |
Example Payload for Delete Customer Contact⤓
Delete Invoice Item
Delete an invoice item. | key: deleteInvoiceItem
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Invoice ID | The ID of the invoice. | 10978752986 |
| Item ID | The ID of the item. | 10978752986 |
Example Payload for Delete Invoice Item⤓
Get Appointment
Retrieve an appointment by ID. | key: getAppointment
| Input | Notes | Example |
|---|---|---|
| Appointment ID | The ID of the appointment. | 10978752986 |
| Connection | The ServiceTitan connection to use. |
Example Payload for Get Appointment⤓
Get Booking by Provider
Retrieve a booking by ID for a booking provider. | key: getBookingByProvider
| Input | Notes | Example |
|---|---|---|
| Booking ID | The ID of the booking to act on. | 10978752986 |
| Booking Provider ID | The ID of the booking provider that submitted the booking. | 10978752986 |
| Connection | The ServiceTitan connection to use. |
Example Payload for Get Booking by Provider⤓
Get Booking by Tenant
Retrieve a booking by ID for the tenant. | key: getBookingByTenant
| Input | Notes | Example |
|---|---|---|
| Booking ID | The ID of the booking to act on. | 10978752986 |
| Connection | The ServiceTitan connection to use. |
Example Payload for Get Booking by Tenant⤓
Get Customer
Retrieve a customer by ID. | key: getCustomer
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Customer ID | The customer ID. | 10978752986 |
Example Payload for Get Customer⤓
Get Installed Equipment
Retrieve an installed equipment record by ID. | key: getInstalledEquipment
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Installed Equipment ID | ID of the installed equipment | 1234567890 |
Example Payload for Get Installed Equipment⤓
Get Job
Retrieve a job by ID. | key: getJob
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| External Data Application GUID | Format - guid. If this guid is provided, external data corresponding to this application guid will be returned. | 6B29FC40-CA47-1067-B31D-00DD010662DA |
| Job ID | The job ID. | 10978752986 |
Example Payload for Get Job⤓
Get Location
Retrieve a location by ID. | key: getLocation
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Location ID | The ID of the location to retrieve | 10978752986 |
Example Payload for Get Location⤓
Get Project
Retrieve a project by ID. | key: getProject
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Project ID | The ID of the project to retrieve | 10978752986 |
Example Payload for Get Project⤓
Get Technician
Retrieve a technician by ID. | key: getTechnician
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Technician ID | The ID of the Technician to retrieve | 10978752986 |
Example Payload for Get Technician⤓
List Appointment Assignments
Retrieve a list of appointment assignments. | key: listAppointmentsAssignment
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Appointment Assignments⤓
List Appointments
Retrieve a list of appointments. | key: listAppointments
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Appointments⤓
List Bookings by Provider
Retrieves a list of bookings for a booking provider. | key: listBookingByProvider
| Input | Notes | Example |
|---|---|---|
| Booking Provider ID | The ID of the booking provider that submitted the booking. | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Bookings by Provider⤓
List Bookings by Tenant
Retrieves a list of bookings for the tenant. | key: listBookingByTenant
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Bookings by Tenant⤓
List Business Units
Gets a list of business units. | key: listBusinessUnits
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Business Units⤓
List Customer Contacts
Gets a list of contacts for the specified customer. | key: listCustomersContact
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Customer ID | The customer ID. | 10978752986 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Modified Before | Return items modified before certain date/time (in UTC) | 2021-01-01T00:00:00Z |
| Modified On Or After | Return items modified on or after certain date/time (in UTC) | 2021-01-01T00:00:00Z |
| Pagination | Page number and page size. |
Example Payload for List Customer Contacts⤓
List Customers
Retrieve a list of customers. | key: listCustomers
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Customers⤓
List Installed Equipment
Retrieve a list of installed equipment. | key: listInstalledEquipment
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Installed Equipment⤓
List Installed Equipment Attachments
Retrieve installed equipment attachments. | key: listInstalledEquipmentAttachments
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Path | Installed equipment attachment path | department |
Example Payload for List Installed Equipment Attachments⤓
List Invoices
Retrieves a list of invoices. | key: listInvoices
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Invoices⤓
List Job Cancel Reasons
Retrieve a list of job cancel reasons. | key: listJobCancelReasons
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Job Cancel Reasons⤓
List Jobs
Retrieve a list of jobs. | key: listJobs
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Jobs⤓
List Locations
Retrieve a list of locations. | key: listLocations
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Locations⤓
List Payments
Retrieve a list of payments. | key: listPayments
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Payments⤓
List Projects
Retrieve a list of projects. | key: listProjects
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Projects⤓
List Technicians
Retrieve a list of technicians. | key: listTechnicians
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Page | The page of results to return. Paging is 1-based, so the first page is 1. | 1 |
| Page Size | The maximum number of records to return per page. A page never contains more than this many records. Defaults to 50 when omitted. | 50 |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List Technicians⤓
List User Roles
Gets a list of user roles. | key: listUserRoles
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Custom Query Params | Additional query-string parameters to append to the request, supplied as name and value pairs. | key1=value1 |
| Fetch All | When true, automatically fetches all pages of results and ignores the page and page size values. | false |
| Include Total | When true, includes the total count of matching records in the response. Ignored when Fetch All is true. | false |
| Pagination | Page number and page size. | |
| Sort | Applies sorting by the specified field:'?sort=+FieldName' for ascending order,'?sort=-FieldName' for descending order. | +FieldName |
Example Payload for List User Roles⤓
Raw Request
Send raw HTTP request to ServiceTitan. | key: rawRequest
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Data | The HTTP body payload to send to the URL. | {"exampleKey": "Example Data"} |
| File Data | File Data to be sent as a multipart form upload. | [{key: "example.txt", value: "My File Contents"}] |
| File Data File Names | File names to apply to the file data inputs. Keys must match the file data keys above. | |
| Form Data | The Form Data to be sent as a multipart form upload. | [{"key": "Example Key", "value": new Buffer("Hello World")}] |
| Header | A list of headers to send with the request. | User-Agent: curl/7.64.1 |
| Max Retry Count | The maximum number of retries to attempt. Specify 0 for no retries. | 0 |
| Method | The HTTP method to use. | |
| Query Parameter | A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2. | |
| Response Type | The type of data you expect in the response. You can request json, text, or binary data. | json |
| Retry On All Errors | If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors. | false |
| Retry Delay (ms) | The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled. | 0 |
| Timeout | The maximum time that a client will await a response to its request | 2000 |
| URL | Input the path only. The base URL is built from the connection environment and the URL Type above, in the form https://api.servicetitan.io/{URL Type}/v2/tenant/{tenant}. For example, with a URL Type of jpm, entering /jobs reaches https://api.servicetitan.io/jpm/v2/tenant/{tenant}/jobs. | /jobs |
| URL Type | The URL type to connect to. For example, jpm, crm, accounting, etc. | jpm |
| Use Exponential Backoff | Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored. | false |
Unassign Technicians from Appointment
Un-assigns the list of technicians from the appointment. | key: unassignTechnicians
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Job Appointment ID | ID of the job appointment | 1234567890 |
| Technician IDs | Unassign these technicians from the appointment. | 1088 |
Example Payload for Unassign Technicians from Appointment⤓
Update Booking
Update a booking. | key: updateBooking
| Input | Notes | Example |
|---|---|---|
| Address | The street address, including unit, city, state, ZIP code, and country. | |
| Booking ID | The ID of the booking to act on. | 10978752986 |
| Booking Provider ID | The ID of the booking provider that submitted the booking. | 10978752986 |
| Business Unit ID | The ID of the business unit. | 10978752986 |
| Campaign ID | The ID of the marketing campaign that generated the record. | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Customer Type | Whether the customer is Residential or Commercial. | |
| External ID | The booking's identifier in the originating external system. | 10978752986 |
| Is First Time Client | When true, marks the booking's customer as a first-time client. | |
| Job Type ID | The ID of the job type to assign. | 10978752986 |
| Name | The full name of the customer or business. | Acme Plumbing |
| Priority | Booking priority | |
| Source | The lead source that generated this booking. | Test Source |
| Start | Start date/time (in UTC) | 2021-01-01T00:00:00Z |
| Summary | Summary of the booking | A summary related to the invoice. |
| Uploaded Images | The images to attach to the booking, one entry per image. | booking-photo.jpg |
Example Payload for Update Booking⤓
Update Customer
Update a customer. | key: updateCustomer
| Input | Notes | Example |
|---|---|---|
| Active | Whether the customer is active | |
| Address | The street address, including unit, city, state, ZIP code, and country. | |
| Connection | The ServiceTitan connection to use. | |
| Customer ID | The customer ID. | 10978752986 |
| Custom Fields | Custom field values to set, as an array of type ID and value pairs. | |
| Do Not Mail | Customer has been flagged as “do not mail” | |
| Do Not Service | Customer has been flagged as “do not service” | |
| External Data | External data to attach to the request. | |
| Name | The full name of the customer or business. | Acme Plumbing |
| Tag Type IDs | The IDs of the tag types to apply. | 123 |
| Customer Type | Whether the customer is Residential or Commercial. |
Example Payload for Update Customer⤓
Update Customer Contact
Updates a contact on a customer. | key: updateCustomerContact
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Customer Contact ID | The customer contact ID. | 10978752986 |
| Customer ID | The customer ID. | 10978752986 |
| Memo | Short description about this contact, for example, “work #” or “Owner’s daughter - Kelly” | Payment for services rendered. |
| Customer Contact Type | Type of the customer contact | |
| Customer Contact Type Value | The email, phone number, or fax number for the contact | 1234567890 |
Example Payload for Update Customer Contact⤓
Update Installed Equipment
Update installed equipment by ID. | key: updateInstalledEquipment
| Input | Notes | Example |
|---|---|---|
| Attachments | List of attachments | |
| Connection | The ServiceTitan connection to use. | |
| Cost | Cost of the installed equipment | 100.00 |
| Custom Fields | The custom fields of the installed equipment | |
| Installed Equipment ID | ID of the installed equipment | 1234567890 |
| Installed On | The date the equipment was installed | 2021-01-01T00:00:00Z |
| Manufacturer | Manufacturer of the installed equipment | Test Manufacturer |
| Memo | The memo of the installed equipment | Payment for services rendered. |
| Model | Model of the installed equipment | Test Model |
| Name | The name of the installed equipment | Acme Plumbing |
| Serial Number | Serial number of the installed equipment | 1234567890 |
| Tag Type IDs | The IDs of the tag types to apply. | 123 |
| Warranty Dates | Manufacturer and service provider warranty start and end dates. |
Example Payload for Update Installed Equipment⤓
Update Invoice
Update an invoice. | key: updateInvoice
| Input | Notes | Example |
|---|---|---|
| Assigned To ID | The ID of the user the invoice is assigned to. | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Export ID | The identifier assigned to the record when it is exported to an external system. | 6B29FC40-CA47-1067-B31D-00DD010662DA |
| Invoiced On | The date the invoice was invoiced on. | 2021-01-01T00:00:00Z |
| Invoice ID | The ID of the invoice. | 10978752986 |
| Items | The items of the invoice. | |
| Number | The invoice number. | 10978752986 |
| Payments | The payments of the invoice. | |
| Review Status | The review status of the invoice. | |
| Royalty Details | Royalty status, date, sent on, and memo. | |
| Subtotal | The subtotal of the invoice. | 100.00 |
| Summary | The summary of the invoice. | A summary related to the invoice. |
| Tax | The tax of the invoice. | 100.00 |
| Type ID | The ID of the invoice or payment type to assign, as configured in the ServiceTitan tenant. | 0 |
Example Payload for Update Invoice⤓
Update Invoice Custom Fields
Update custom fields for specified invoices. | key: updateInvoiceCustomFields
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Operations | The operations to perform on the invoice. |
Example Payload for Update Invoice Custom Fields⤓
Update Invoice Items
Update invoice items. | key: updateInvoiceItems
| Input | Notes | Example |
|---|---|---|
| Additional Fields | Additional optional fields: includes Unit Price, Cost, Is Add On, Signature, Technician Acknowledgement Signature, Installed On, Inventory Warehouse Name, Skip Updating Membership Prices, and Item Group Name. | |
| Connection | The ServiceTitan connection to use. | |
| Description | The description of the SKU. | A test SKU |
| Duration Billing ID | The duration billing ID of the SKU. | 10978752986 |
| Invoice Item ID | The unique identifier of the invoice item. | 10978752986 |
| Inventory Location ID | The inventory location ID of the SKU. | 10978752986 |
| Invoice ID | The ID of the invoice. | 10978752986 |
| Item Group Root ID | The item group root ID of the SKU. | 10978752986 |
| Quantity | The quantity of the SKU. | 2 |
| SKU ID | The ID of the SKU. | 10978752986 |
| SKU Name | The name of the SKU. | Test SKU |
| Technician ID | The ID of the technician. | 10978752986 |
Example Payload for Update Invoice Items⤓
Update Job
Update a job. | key: updateJob
| Input | Notes | Example |
|---|---|---|
| Business Unit ID | ID of the job's business unit | 10978752986 |
| Campaign ID | ID of the job's campaign | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Customer ID | The customer ID. | 10978752986 |
| Customer PO | The customer's purchase order number to record on the job. | PO-10025 |
| Custom Fields | Custom fields for the job | |
| External Data | External data to attach to the request. | |
| Job Generated Lead Source | The lead source that generated this job. Provide jobId (the job this one was generated from) and employeeId (the office user or technician credited). | |
| Job ID | The job ID. | 10978752986 |
| Job Type ID | ID of the job's type | 10978752986 |
| Location ID | The ID of the location. | 10978752986 |
| Priority | Priority of the job | |
| Should Update Invoice Items | If set to true, update the business unit of invoice items on job's invoice | |
| Summary | Job summary | A summary related to the invoice. |
| Tag Type IDs | Tag type IDs for the job | 123 |
Example Payload for Update Job⤓
Update Location
Update a location. | key: updateLocation
| Input | Notes | Example |
|---|---|---|
| Active | If false, the location will be marked as inactive | |
| Address | The address of the location | |
| Connection | The ServiceTitan connection to use. | |
| Customer ID | The customer ID associated with the location | 10978752986 |
| Custom Fields | Custom field values to set, as an array of type ID and value pairs. | |
| External Data | External data to attach to the request. | |
| Location ID | The ID of the location. | 10978752986 |
| Name | The name of the location | Acme Plumbing |
| Tag Type IDs | The IDs of the tag types to apply. | 123 |
| Tax Zone ID | ID of the location tax zone | 1088 |
Example Payload for Update Location⤓
Update Payment
Update a specified payment. | key: updatePayment
| Input | Notes | Example |
|---|---|---|
| Auth Code | The authorization code for the payment. | A1B2C3 |
| Check Number | The check number for the payment. | 1042 |
| Connection | The ServiceTitan connection to use. | |
| Export ID | The identifier assigned to the record when it is exported to an external system. | 6B29FC40-CA47-1067-B31D-00DD010662DA |
| Memo | A free-text note recorded against the payment. | Payment for services rendered. |
| Paid On | The date the payment was paid on. | 2021-01-01T00:00:00Z |
| Payment ID | The ID of the payment. | 10978752986 |
| Splits | The splits of the payment. | |
| Status | The status of the payment. | |
| Type ID | The ID of the invoice or payment type to assign, as configured in the ServiceTitan tenant. | 0 |
Example Payload for Update Payment⤓
Update Payment Custom Fields
Update custom fields for specified payments. | key: updatePaymentCustomFields
| Input | Notes | Example |
|---|---|---|
| Connection | The ServiceTitan connection to use. | |
| Operations | The operations to perform on the payment. |
Example Payload for Update Payment Custom Fields⤓
Update Project
Update a project. | key: updateProject
| Input | Notes | Example |
|---|---|---|
| Actual Completion Date | Actual completion date of the project | 2021-01-01T00:00:00Z |
| Connection | The ServiceTitan connection to use. | |
| Custom Fields | Custom fields for the project | |
| External Data | External data items to attach to the project, grouped under an application GUID. | |
| Job IDs | IDs of the project's jobs | 1088 |
| Name | Name of the project | Acme Plumbing |
| Project ID | ID of the project to update | 10978752986 |
| Project Manager IDs | IDs of the project's managers | 1088 |
| Start | Start date of the project | 2021-01-01T00:00:00Z |
| Status ID | The ID of the project status to set. | 1088 |
| Sub Status ID | The ID of the project sub-status to set. | 1088 |
| Summary | Summary of the project | A summary related to the invoice. |
| Target Completion Date | Target completion date of the project | 2021-01-01T00:00:00Z |
Example Payload for Update Project⤓
Update Technician
Update a technician. | key: updateTechnician
| Input | Notes | Example |
|---|---|---|
| Azure Active Directory User ID | The GUID of the technician's user account in Azure Active Directory. | 6B29FC40-CA47-1067-B31D-00DD010662DA |
| Additional Fields | Additional optional fields: includes Team, Daily Goal, Burden Rate, Biography, Job Filter, and Job History Date Filter. | |
| Business Unit ID | The ID of the business unit to which the technician will be assigned | 10978752986 |
| Connection | The ServiceTitan connection to use. | |
| Custom Fields | Custom fields for the technician | |
Technician's email address | test@technician.us | |
| Address | The home address of the technician | |
| License Type | The type of ServiceTitan license to assign to the technician. | |
| Login Username | Technician's username | technician_us |
| Memo | Memo for the technician | Payment for services rendered. |
| Name | The name of the technician | Acme Plumbing |
| Phone Number | Technician's phone number | 1234567890 |
| Positions | List of company positions | |
| Role ID | The ID of the user role to assign to the technician. | 7 |
| Technician ID | The ID of the technician to update | 10978752986 |
Example Payload for Update Technician⤓
Changelog
2026-09-15
- Fixed optional JSON inputs, including Address, Contacts, Custom Fields, External Data, Location, Attachments, Items, Payments, and Job Generated Lead Source, which pre-filled a placeholder template and then submitted it as real data when the field was left untouched, so renaming a customer could replace their stored address with the template; the templates are now shown as examples only
- Fixed the New and Updated Records trigger dropping records that shared a timestamp with a record it had already delivered, and advancing its cursor past records it never returned; the cursor now advances only to the newest record actually delivered, and holds when a recurrence returns nothing
- Added an optional Look-back Date input for performing an initial sync on the New and Updated Records trigger. The initial sync begins on the first recurrence and backfills every record created or modified on or after the specified date, seeding each once and ignoring the trigger's visibility filters; later recurrences are unaffected. Leave it empty to start from the first recurrence with no backfill
- Added opt-in batching to the New and Updated Records trigger, dispatching each changed record individually or in configured batches so large backlogs drain in one recurrence; enabling it changes the shape a downstream step receives
- Updated Reason ID and Invoice ID to send whole numbers rather than text on the job and invoice actions, matching the integer types the ServiceTitan API declares for those fields
- Added output schemas to 47 actions for improved field mapping during configuration
- Added inline action calling support to 56 actions for improved example output during configuration
- Updated the Application Key connection field and the technician Password input to masked password inputs, since their values are secrets
- Updated outbound requests to send a valid Accept header and to report an unauthorized connection as a connection error
- Updated labels for accuracy: the appointment assignment actions now read Assign Technicians to Appointment, Unassign Technicians from Appointment, and List Appointment Assignments, the invoice item identifier reads Invoice Item ID rather than ID, and the booking provider identifier reads Booking Provider ID rather than Booking Provider
- Fixed the Raw Request action description, which named an unrelated product instead of ServiceTitan
2026-08-05
Deprecated the Create Payment action and restructured action inputs into structured objects for an improved user experience:
- List actions group page and page-size inputs into Pagination; Fetch All stays a top-level toggle
- Create Invoices and Update Invoice group royalty-related inputs into Royalty Details
- Update Invoice Items groups miscellaneous optional inputs into Additional Fields
- Create Installed Equipment and Update Installed Equipment group warranty date inputs into Warranty Dates
- Create Technician and Update Technician group optional profile inputs into Additional Fields
2026-05-20
Various modernizations and documentation updates
2026-04-30
Updated spectral version
2026-04-21
Added New and Updated Records polling trigger that checks for new and updated jobs, appointments, invoices, customers, and other records in ServiceTitan on a configured schedule
2026-03-13
Removed the Debug Request input from all action inputs. Debug logging is now controlled internally and no longer appears as a configurable field in actions.
2026-02-26
Added inline data sources for business units, user roles, job cancel reasons, customer contacts, and payments to enable dynamic dropdown selection