### GET Reviews Endpoint Example Source: https://developer.servicetitan.io/docs/apis/tenant-marketing-reputation-v2/endpoints/reviews Example JSON response structure for the GET reviews endpoint. This shows the format of paginated review data. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "address": "string", "platform": "string", "authorEmail": "string", "authorName": "string", "review": "string", "reviewType": 0, "reviewResponse": "string", "publishDate": "string", "rating": 0, "recommendationStatus": 0, "verificationStatus": true, "jobId": 0, "verifiedByUserId": 0, "verifiedOn": "string", "isAutoVerified": true, "businessUnitId": 0, "completedDate": "string", "customerName": "string", "customerId": 0, "dispatchedDate": "string", "jobStatus": 0, "jobTypeName": "string", "technicianFullName": "string", "technicianId": 0, "externalId": "string", "internalId": 0, "createdOn": "string", "modifiedOn": "string" } ] } ``` -------------------------------- ### 200 OK Response Body Example Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Locations_CreateContact Example of a successful response body for a location contact. Includes contact details, phone settings, and preferences. ```json { "id": 0, "type": {}, "value": "string", "memo": "string", "phoneSettings": { "phoneNumber": "string", "doNotText": true }, "modifiedOn": "string", "createdOn": "string", "preferences": { "jobRemindersEnabled": true, "marketingUpdatesEnabled": true, "invoiceStatementNotification": true } } ``` -------------------------------- ### Create Contact Request Body Example Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Contacts_Create Example of the JSON request body for creating a new contact. Ensure all required fields are populated. ```json { "name": "string", "title": "string", "referenceId": "string" } ``` -------------------------------- ### Contact Response Example (JSON) Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Contacts_Get This is an example of a successful response body when retrieving contact information. ```json { "id": "string", "referenceId": "string", "name": "string", "title": "string", "isArchived": true, "createdOn": "string", "createdBy": 0, "modifiedOn": "string", "modifiedBy": 0 } ``` -------------------------------- ### Activity Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-timesheets-v2/endpoints/ActivitiesControllers_Get This is an example of a successful response (200 OK) when retrieving activity details. It includes fields like ID, employee information, timestamps, and location coordinates. ```json { "id": 0, "employeeId": 0, "employeeType": {}, "activityTypeId": 0, "startTime": "string", "endTime": "string", "jobId": 0, "appointmentId": 0, "projectId": 0, "projectLabel": "string", "laborTypeId": 0, "budgetCodeId": 0, "memo": "string", "tagTypes": [ 0 ], "startCoordinate": { "latitude": 0, "longitude": 0 }, "endCoordinate": { "latitude": 0, "longitude": 0 }, "active": true, "modifiedById": 0, "createdOn": "string", "modifiedOn": "string" } ``` -------------------------------- ### Customer Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Customers_Get This example shows the structure of a successful customer response. ```APIDOC ## Customer Response Object ### Description Represents a customer record with detailed information. ### Schema ```json { "id": 0, "active": true, "name": "string", "type": {}, "address": { "street": "string", "unit": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "latitude": 0, "longitude": 0 }, "customFields": [ { "typeId": 0, "name": "string", "value": "string" } ], "balance": 0, "taxExempt": true, "tagTypeIds": [ 0 ], "doNotMail": true, "doNotService": true, "nationalAccount": true, "createdOn": "string", "createdById": 0, "modifiedOn": "string", "mergedToId": 0, "paymentTermId": 0, "creditLimit": 0, "creditLimitBalance": 0, "externalData": [ { "key": "string", "value": "string" } ] } ``` ### Properties - **id** (integer): ID of the customer - **active** (boolean): False indicates that someone has deactivated the customer record, typically upon merging with another record. - **name** (string): Name of the customer - **type** (object): Residential or commercial - **address** (object): Bill-To address of the customer record - **street** (string): Street - **unit** (string): Unit - **city** (string): City - **state** (string): State - **zip** (string): Zip - **country** (string): Country - **latitude** (number): Latitude - **longitude** (number): Longitude - **customFields** (array): Customer record’s custom fields - **typeId** (integer): ID of the custom field - **name** (string): Name/label of the custom field - **value** (string): Value of the custom field - **balance** (number): Customer’s account balance - **taxExempt** (boolean): Tax Exempt status of the customer. - **tagTypeIds** (array of integers): Tag Type IDs associated with the Customer - **doNotMail** (boolean): Customer has been flagged as “do not mail” - **doNotService** (boolean): Customer has been flagged as “do not service” - **nationalAccount** (boolean): Customer has been flagged as National Account - **createdOn** (string): DateTime (UTC) that customer record was created - **createdById** (integer): User ID who created the record. - **modifiedOn** (string): Modified on (UTC) for the record. - **mergedToId** (integer): The customer ID of the record that this record was previously merged to. - **paymentTermId** (integer): The Payment Term ID. - **creditLimit** (number): Credit Limit for the customer. - **creditLimitBalance** (number): Credit Limit Balance for the customer. - **externalData** (array): List of external data attached to this Customer - **key** (string): Key of the external data - **value** (string): Value of the external data ``` -------------------------------- ### Business Unit Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-settings-v2/endpoints/BusinessUnits_Get Example JSON structure for a successful response when retrieving business unit details. Includes various properties related to the business unit's configuration and settings. ```json { "id": 0, "active": true, "name": "string", "officialName": "string", "email": "string", "currency": "string", "phoneNumber": "string", "invoiceHeader": "string", "invoiceMessage": "string", "defaultTaxRate": 0, "authorizationParagraph": "string", "acknowledgementParagraph": "string", "address": { "street": "string", "unit": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "latitude": 0, "longitude": 0, "isManualCoordinates": true, "isMilitary": true }, "materialSku": "string", "quickbooksClass": "string", "accountCode": "string", "franchiseId": "string", "conceptCode": "string", "corporateContractNumber": "string", "trade": { "id": 0, "name": "string" }, "division": { "id": 0, "name": "string" }, "tagTypeIds": [ 0 ], "tenant": { "id": 0, "name": "string", "accountCode": "string", "franchiseId": "string", "conceptCode": "string", "modifiedOn": "string" }, "createdOn": "string", "modifiedOn": "string", "externalData": [ { "key": "string", "value": "string" } ], "certifiedSentriconSpecialistCode": "string" } ``` -------------------------------- ### Export Technicians Request Example Source: https://developer.servicetitan.io/docs/apis/tenant-settings-v2/endpoints/Export_Technicians Use this GET request to retrieve a feed of technician data. Include the 'tenant' path parameter. Optional query parameters 'from' and 'includeRecentChanges' can be used to control the export process. ```http GET https://api.servicetitan.io/settings/v2/tenant/{tenant}/export/technicians ``` ```http GET https://api-integration.servicetitan.io/settings/v2/tenant/{tenant}/export/technicians ``` -------------------------------- ### 200 OK Response Body Example Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Bookings_GetList This is an example of a successful response body for a booking request, showing the structure of paginated data. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "id": 0, "source": "string", "createdOn": "string", "name": "string", "address": { "street": "string", "unit": "string", "city": "string", "state": "string", "zip": "string", "country": "string" }, "customerType": {}, "start": "string", "campaignId": 0, "businessUnitId": 0, "isFirstTimeClient": true, "uploadedImages": [ "string" ], "isSendConfirmationEmail": true, "status": {}, "dismissingReasonId": 0, "jobId": 0, "externalId": "string", "priority": {}, "jobTypeId": 0, "bookingProviderId": 0, "modifiedOn": "string", "summary": "string" } ] } ``` -------------------------------- ### Employee Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-settings-v2/endpoints/Employees_GetList Example structure for a successful response when retrieving employee data. Includes details like ID, user ID, name, role, business unit, contact information, and custom fields. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "id": 0, "userId": 0, "name": "string", "firstName": "string", "lastName": "string", "managerId": 0, "role": {}, "roleIds": [ 0 ], "businessUnitId": 0, "createdOn": "string", "modifiedOn": "string", "email": "string", "phoneNumber": "string", "loginName": "string", "active": true, "aadUserId": "string", "accountLocked": true, "home": { "street": "string", "unit": "string", "country": "string", "city": "string", "state": "string", "zip": "string" }, "agentId": 0, "startDate": "string", "terminationDate": "string", "hourlyRate": 0, "overtimeProfileId": 0, "customFields": [ { "typeId": 0, "name": "string", "value": "string" } ], "permissions": [ { "id": 0, "value": "string" } ] } ] } ``` -------------------------------- ### Submit Lead Form Request Example Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Leads_SubmitLeadForm This JSON object represents an example request body for submitting a lead form. It includes fields for customer name, contact information, address, and a summary. ```json { "name": "string", "email": "string", "phoneNumber": "string", "address": { "street": "string", "unit": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "latitude": 0, "longitude": 0 }, "summary": "string" } ``` -------------------------------- ### Report Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-reporting-v2/endpoints/ReportCategoryReports_Get Example JSON structure for a successful report response (200 OK). It includes report metadata, parameters, and fields. ```json { "id": 0, "name": "string", "description": "string", "modifiedOn": "string", "parameters": [ { "name": "string", "label": "string", "dataType": {}, "isArray": true, "isRequired": true, "acceptValues": { "fields": [ { "name": "string", "label": "string" } ], "dynamicSetId": "string", "values": [ [ {} ] ] } } ], "fields": [ { "name": "string", "label": "string", "dataType": {} } ] } ``` -------------------------------- ### Activity Type Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-timesheets-v2/endpoints/ActivityTypes_Get Example JSON structure for a successful response when retrieving an activity type. Includes details like ID, code, category, description, and various association and configuration flags. ```json { "id": 0, "code": "string", "categoryId": 0, "description": "string", "icon": "string", "businessUnitId": 0, "isUsersHomeBusinessUnit": true, "laborTypeId": 0, "isTechnicianProfileLaborType": true, "visibleToRoles": [ 0 ], "defaultTagTypeIds": [ 0 ], "tagAssociation": {}, "jobAssociation": {}, "projectAssociation": {}, "projectLabelAssociation": {}, "budgetCodeAssociation": {}, "laborTypeAssociation": {}, "memoAssociation": {}, "defaultMemo": "string", "dontAllowToChangeMemo": true, "dontAllowToChangeTag": true, "isArchived": true, "isDraft": true, "isDefault": true, "isInUse": true, "active": true, "createdOn": "string", "modifiedOn": "string" } ``` -------------------------------- ### ActivityCategoryResponse Example Source: https://developer.servicetitan.io/docs/apis/tenant-timesheets-v2/endpoints/ActivityCategories_Get This is an example of a successful response when retrieving an activity category. It includes details like ID, name, creation/modification dates, and active status. ```json { "id": 0, "name": "string", "type": {}, "allowEdit": true, "isDefault": true, "createdOn": "string", "modifiedOn": "string", "active": true } ``` -------------------------------- ### Timesheets V2 Activities Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-timesheets-v2/endpoints/ActivitiesControllers_GetList Example structure for a successful response when retrieving a list of activities. Includes pagination details and an array of activity objects. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "id": 0, "employeeId": 0, "activityTypeId": 0, "employeeType": {}, "startTime": "string", "endTime": "string", "jobId": 0, "appointmentId": 0, "projectId": 0, "projectLabel": "string", "laborTypeId": 0, "budgetCodeId": 0, "memo": "string", "tagTypes": [ 0 ], "startCoordinate": { "latitude": 0, "longitude": 0 }, "endCoordinate": { "latitude": 0, "longitude": 0 }, "active": true, "modifiedById": 0, "createdOn": "string", "modifiedOn": "string" } ] } ``` -------------------------------- ### Error Response Examples Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Customers_Get Examples of error responses for bad requests and not found scenarios. ```APIDOC ## Error Responses ### 400 Bad Request #### Description The request cannot be processed, check validation errors or request format. #### Response Body Media Type| Schema Type ---|--- application/json| ApiErrorResponseExample ```json { "type": "string", "title": "string", "status": 0, "traceId": "string", "errors": {}, "data": {} } ``` ### 404 Not Found #### Description Customer not found. #### Response Body Media Type| Schema Type ---|--- application/json| ApiErrorResponseExample ```json { "type": "string", "title": "string", "status": 0, "traceId": "string", "errors": {}, "data": {} } ``` ### ApiErrorResponse Object #### Description Detailed error response, following RFC 7807 recommendations. #### Properties - **type** (string): A URI reference that identifies the problem type - **title** (string): A short, human-readable summary of the problem type - **status** (integer): The HTTP status code generated by server - **traceId** (string): Internal trace ID for advanced diagnostics - **errors** (object): Provides more details about errors occurred, which can potentially be used for visual display - **data** (object): Provides additional data, intended for programmatical usage ``` -------------------------------- ### Intacct Business Unit Mapping Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-settings-v2/endpoints/IntacctBusinessUnitMappings_Get Example JSON response body for a successful retrieval of Intacct business unit mappings. Includes pagination details and a list of mappings. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "id": 0, "name": "string", "active": true, "tradeName": "string", "intacctLocationName": "string", "intacctLocationId": "string", "intacctDepartment": "string", "intacctClass": "string" } ] } ``` -------------------------------- ### Activity Categories Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-timesheets-v2/endpoints/ActivityCategories_GetList Example JSON structure for a successful response when retrieving a list of activity categories. Includes pagination details and a list of category objects. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "id": 0, "name": "string", "type": {}, "allowEdit": true, "isDefault": true, "createdOn": "string", "modifiedOn": "string", "active": true } ] } ``` -------------------------------- ### ServiceTitan API Access Token Response Example Source: https://developer.servicetitan.io/docs/getting-started/first-api-call This is an example of a successful JSON response when retrieving an access token. The `access_token` is crucial for subsequent API calls. ```json { "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkM2QTRDMjA2MjE3OEYyMEI4NzkyNjg2MTJGNkMwNEE1NzUwRjU3Nz...", "expires_in": 900, "token_type": "Bearer", "scope": "tn.acc.invoices:r" } ``` -------------------------------- ### 200 OK Response Body Example Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Leads_CreateFollowUp Example of a successful response body for a follow-up operation. This JSON structure includes details about the lead, follow-up date, text, and pin status. ```json { "leadId": 0, "followUpDate": "string", "text": "string", "pinToTop": true } ``` -------------------------------- ### Export Employees Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-settings-v2/endpoints/Export_Employees This is an example of a successful response (200 OK) when requesting employee export data. It includes pagination information ('hasMore', 'continueFrom') and an array of employee records, each with detailed fields. ```json { "hasMore": true, "continueFrom": "string", "data": [ { "customFields": [ { "typeId": 0, "name": "string", "value": "string" } ], "permissions": [ { "id": 0, "value": "string" } ], "id": 0, "userId": 0, "name": "string", "firstName": "string", "lastName": "string", "managerId": 0, "role": {}, "roleIds": [ 0 ], "businessUnitId": 0, "createdOn": "string", "modifiedOn": "string", "email": "string", "phoneNumber": "string", "loginName": "string", "active": true, "aadUserId": "string", "accountLocked": true, "home": { "street": "string", "unit": "string", "country": "string", "city": "string", "state": "string", "zip": "string" }, "agentId": 0, "startDate": "string", "terminationDate": "string", "hourlyRate": 0, "overtimeProfileId": 0 } ] } ``` -------------------------------- ### GET /leads Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Leads_Create Retrieves a list of all leads. ```APIDOC ## GET /leads ### Description Retrieves a list of all leads. ### Method GET ### Endpoint /leads ``` -------------------------------- ### 200 OK Response Body Example Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Customers_CreateContact Example JSON structure for a successful response, detailing customer contact information with modification and creation timestamps, phone settings, and preferences. This schema is used for successful retrieval or creation of customer contact data. ```json { "id": 0, "type": {}, "value": "string", "memo": "string", "modifiedOn": "string", "phoneSettings": { "phoneNumber": "string", "doNotText": true }, "createdOn": "string", "preferences": { "jobRemindersEnabled": true, "marketingUpdatesEnabled": true, "invoiceStatementNotification": true } } ``` -------------------------------- ### GET /customers Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Leads_Create Retrieves a list of all customers. ```APIDOC ## GET /customers ### Description Retrieves a list of all customers. ### Method GET ### Endpoint /customers ``` -------------------------------- ### Get Attributed Leads Response Example Source: https://developer.servicetitan.io/docs/apis/tenant-marketing-ads-v2/endpoints/AttributedLeads_Get Example response body for the GET attributed-leads endpoint. It outlines the structure for paginated lead data, including details on lead type, attribution sources, and associated job or customer information. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "dateTime": "string", "leadType": 1, "attribution": { "utmSource": "string", "utmMedium": "string", "utmCampaign": "string", "landingPageUrl": "string", "referrerUrl": "string", "clickId": "string", "gbraid": "string", "wbraid": "string", "stCampaignId": 0, "originalCampaign": "string", "attributionOverwriteType": {}, "attributionOverwriteId": 0, "overwrittenBookingJobId": 0, "adGroupId": "string", "adGroupName": "string", "keywordId": "string", "keywordName": "string" }, "job": { "id": 0, "name": "string" }, "customer": { "id": 0, "name": "string" }, "call": { "duration": "string", "id": 0, "type": "string", "source": "string", "callerNumber": "string", "trackingNumber": "string", "excusedReason": "string" }, "leadForm": { "leadNumber": 0, "leadStatus": "string", "notes": "string" }, "booking": { "id": 0 } } ] } ``` -------------------------------- ### ServiceTitan Resource API Response Example Source: https://developer.servicetitan.io/docs/getting-started/first-api-call An example JSON response from a successful GET request to the ServiceTitan Resource API. This typically contains paginated data relevant to the requested endpoint. ```json { "page": 1, "pageSize": 50, "totalCount": 1, "hasMore": false, "data": [ { "id": 1679, "syncStatus": "Pending", "summary": null, "referenceNumber": "1676", "invoiceDate": "2021-07-19T00:00:00Z", "dueDate": "2021-07-19T00:00:00Z", "subTotal": "0.00", "salesTax": "0.00", "salesTaxCode": null, "total": "0.00", "balance": "0.00", "customer": { "id": 1673, "name": "Customer" }, "customerAddress": { "street": "801 North Brand Boulevard", "unit": null, "city": "Glendale", "state": "CA", "zip": "91203", "country": "USA" }, "locationAddress": { "street": "801 North Brand Boulevard", "unit": null, "city": "Glendale", "state": "CA", "zip": "91203", "country": "USA" }, "businessUnit": { "id": 319, "name": "Plumbing - Service" }, "termName": "Due Upon Receipt", "createdBy": "admin", "batch": null, "modifiedOn": "2021-07-19T20:35:38.2876004Z", "adjustmentToId": null, "job": null, "projectId": null, "royalty": { "status": "Pending", "date": null, "sentOn": null, "memo": null }, "employeeInfo": { "id": 21, "name": "admin", "modifiedOn": "2021-06-22T16:23:12.9688553Z" }, "commissionEligibilityDate": null, "items": null, "customFields": null } ] } ``` -------------------------------- ### ServiceTitan App Key Authentication Header Source: https://developer.servicetitan.io/docs/apis/tenant-reporting-v2/endpoints/ReportCategoryReports_Get Example of the ServiceTitan App Key header required for authentication. Ensure your application key starts with 'ak1.'. ```http Header name: `ST-App-Key` Header value: Application key (starts with “`ak1.`”) ``` -------------------------------- ### POST /customers Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Leads_Create Creates a new customer. ```APIDOC ## POST /customers ### Description Creates a new customer. ### Method POST ### Endpoint /customers ``` -------------------------------- ### Example Response Body for GET /location-findings Source: https://developer.servicetitan.io/docs/apis/tenant-findings-v2/endpoints/Findings_GetList This JSON structure represents a successful response when retrieving a paginated list of findings. It includes metadata about the pagination and an array of finding objects. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "id": 0, "locationId": 0, "name": "string", "description": "string", "recommendedSolution": "string", "internalNotes": "string", "installedEquipmentId": 0, "urgencyLevel": {}, "sourceJobId": 0, "archived": true, "active": true, "createdBy": 0, "modifiedBy": 0, "createdOn": "string", "modifiedOn": "string" } ] } ``` -------------------------------- ### POST /settings/v2/tenant/{tenant}/technicians Source: https://developer.servicetitan.io/docs/apis/tenant-settings-v2/endpoints/Technicians_Create Creates a new technician within the specified tenant. Requires 'Settings → Technicians (Write)' scope for authentication. ```APIDOC ## POST /settings/v2/tenant/{tenant}/technicians ### Description Creates a new technician. ### Method POST ### Endpoint `https://api.servicetitan.io/settings/v2/tenant/{tenant}/technicians` (Production) `https://api-integration.servicetitan.io/settings/v2/tenant/{tenant}/technicians` (Integration) ### Authentication and Authorization Requires authentication via ServiceTitan App Key Header (`ST-App-Key`) or OAuth 2.0 Client Credentials Flow with scope `Settings → Technicians (Write)`. ### Parameters #### Path Parameters - **tenant** (integer (int64)) - Required - Tenant ID ### Request Body Media Type| Schema Type ---|--- application/json| TenantSettings.V2.TechnicianCreateRequestExample ```json { "name": "string", "phoneNumber": "string", "email": "string", "login": "string", "password": "string", "accountCreationMethod": {}, "businessUnitId": 0, "roleId": 0, "positions": [ "Installer" ], "aadUserId": "string", "licenseType": {}, "team": "string", "dailyGoal": 0, "burdenRate": 0, "bio": "string", "memo": "string", "jobFilter": {}, "jobHistoryDateFilter": {}, "home": { "unit": "string", "street": "string", "city": "string", "state": "string", "country": "string", "zip": "string", "latitude": 0, "longitude": 0 }, "customFields": [ { "typeId": 0, "value": "string" } ] } ``` ### Response #### Success Response (200 OK) Media Type| Schema Type ---|--- application/json| TenantSettings.V2.TechnicianCreateResponseExample ```json { "id": 0 } ``` #### Error Response (400 Bad Request) Media Type| Schema Type ---|--- application/json| ApiErrorResponseExample ```json { "type": "string", "title": "string", "status": 0, "traceId": "string", "errors": {}, "data": {} } ``` ``` -------------------------------- ### Get Performance Data Example Source: https://developer.servicetitan.io/docs/apis/tenant-marketing-ads-v2/endpoints/Performance_Get Retrieves performance data for marketing campaigns, ad groups, or keywords. Requires 'Marketing Ads → Performance (Read)' scope. Specify date range and segmentation type. ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "campaign": { "id": 0, "externalId": 0, "name": "string", "category": "string", "launchDate": "string", "status": "None" }, "adGroup": { "id": "string", "name": "string", "status": {} }, "keyword": { "id": "string", "name": "string", "status": {} }, "digitalStats": { "impressionShare": 0, "impressions": 0, "clicks": 0, "averageCPC": 0, "conversions": 0, "allConversions": 0, "cost": 0, "clickRate": 0, "costPerConversion": 0, "conversionRate": 0 }, "leadStats": { "leads": 0, "leadCalls": 0, "onlineBooking": 0, "manualBooking": 0, "bookedJobs": 0, "ranJobs": 0, "soldJobs": 0, "revenue": 0, "potentialRevenue": 0, "bookingRate": 0, "avgTicket": 0 }, "returnOnInvestment": 0 } ] } ``` -------------------------------- ### Export Employees Data Source: https://developer.servicetitan.io/docs/apis/tenant-settings-v2/endpoints/Export_Employees Use this endpoint to retrieve an export feed for employees. It requires the 'Settings → Employees (Read)' scope for authorization. You can specify a 'from' date to start the export from a specific point in time or use 'includeRecentChanges' to get the latest updates more quickly, though this may result in duplicate entries. ```http GET https://api.servicetitan.io/settings/v2/tenant/{tenant}/export/employees ``` ```http GET https://api-integration.servicetitan.io/settings/v2/tenant/{tenant}/export/employees ``` -------------------------------- ### Get Technician Ratings Source: https://developer.servicetitan.io/docs/apis/tenant-customer-interactions-v2/endpoints Gets a list of technician ratings. ```APIDOC ## Get Technician Ratings ### Description Gets a list of technician ratings. ### Method GET ### Endpoint /technician-ratings ``` -------------------------------- ### GET /marketingreputation/v2/tenant/{tenant}/reviews Source: https://developer.servicetitan.io/docs/apis/tenant-marketing-reputation-v2/endpoints/reviews Retrieves a list of marketing reviews for a given tenant. Supports filtering, sorting, and pagination. ```APIDOC ## GET /marketingreputation/v2/tenant/{tenant}/reviews ### Description Retrieves a list of marketing reviews for a given tenant. This endpoint supports various query parameters for filtering, sorting, and pagination. ### Method GET ### Endpoint `https://api.servicetitan.io/marketingreputation/v2/tenant/{tenant}/reviews` (Production) `https://api-integration.servicetitan.io/marketingreputation/v2/tenant/{tenant}/reviews` (Integration) ### Authentication and Authorization This endpoint requires authentication via an API key (`ST-App-Key` header) or OAuth 2.0 Client Credentials Flow. ### Parameters #### Path Parameters - **tenant** (string) - Required - The unique identifier for the tenant. #### Query Parameters - **page** (integer (int32)) - Optional - The page number for pagination. - **pageSize** (integer (int32)) - Optional - The number of items per page. - **includeTotal** (boolean) - Optional - Whether to include the total count of items. - **search** (string) - Optional - A search term to filter reviews. - **reportType** (ServiceTitan.Marketing.ReviewEngine.Services.Models.Reviews.ReviewsReportType) - Optional - The type of report to retrieve. - **sort** (string) - Optional - The field to sort the results by. - **createdOnOrAfter** (string (date-time)) - Optional - Filter reviews created on or after this date. - **createdBefore** (string (date-time)) - Optional - Filter reviews created before this date. - **modifiedOnOrAfter** (string (date-time)) - Optional - Filter reviews modified on or after this date. - **modifiedBefore** (string (date-time)) - Optional - Filter reviews modified before this date. - **fromDate** (string (date-time)) - Optional - Filter reviews from this date. - **toDate** (string (date-time)) - Optional - Filter reviews to this date. - **responseTypes** (array of ServiceTitan.Marketing.ReviewEngine.Services.Models.Reviews.ResponseType) - Optional - Filter by response types. - **locationIds** (array of integer (int64)) - Optional - Filter by location IDs. - **sources** (array of string) - Optional - Filter by review sources. - **reviewStatuses** (array of ServiceTitan.Marketing.ReviewEngine.Services.Models.Reviews.ReviewMatchConfidenceLevel) - Optional - Filter by review statuses. - **technicianIds** (array of integer (int64)) - Optional - Filter by technician IDs. - **campaignIds** (array of integer (int64)) - Optional - Filter by campaign IDs. - **fromRating** (number (float)) - Optional - Filter by minimum rating. - **toRating** (number (float)) - Optional - Filter by maximum rating. - **includeReviewsWithoutLocation** (boolean) - Optional - Include reviews without a location. - **includeReviewsWithoutCampaign** (boolean) - Optional - Include reviews without a campaign. - **includeReviewsWithoutTechnician** (boolean) - Optional - Include reviews without a technician. - **internalId** (integer (int64)) - Optional - Filter by internal ID. - **externalId** (string) - Optional - Filter by external ID. ### Response #### Success Response (200 OK) - **data** (array of object) - The list of reviews. - **address** (string) - The address associated with the review. - **platform** (string) - The platform where the review was posted. - **authorEmail** (string) - The email of the author. - **authorName** (string) - The name of the author. - **review** (string) - The content of the review. - **reviewType** (integer) - The type of review. - **reviewResponse** (string) - The response to the review. - **publishDate** (string (date-time)) - The date the review was published. - **rating** (number) - The rating given in the review. - **recommendationStatus** (integer) - The recommendation status. - **verificationStatus** (boolean) - Indicates if the review is verified. - **jobId** (integer) - The ID of the associated job. - **verifiedByUserId** (integer) - The ID of the user who verified the review. - **verifiedOn** (string (date-time)) - The date the review was verified. - **isAutoVerified** (boolean) - Indicates if the review was auto-verified. - **businessUnitId** (integer) - The ID of the business unit. - **completedDate** (string (date-time)) - The completion date of the associated job. - **customerName** (string) - The name of the customer. - **customerId** (integer) - The ID of the customer. - **dispatchedDate** (string (date-time)) - The dispatch date of the associated job. - **jobStatus** (integer) - The status of the job. - **jobTypeName** (string) - The name of the job type. - **technicianFullName** (string) - The full name of the technician. - **technicianId** (integer) - The ID of the technician. - **externalId** (string) - The external ID of the review. - **internalId** (integer) - The internal ID of the review. - **createdOn** (string (date-time)) - The date the review was created. - **modifiedOn** (string (date-time)) - The date the review was last modified. - **page** (integer) - The current page number. - **pageSize** (integer) - The number of items per page. - **hasMore** (boolean) - Indicates if there are more pages. - **totalCount** (integer) - The total number of reviews. #### Response Example ```json { "page": 0, "pageSize": 0, "hasMore": true, "totalCount": 0, "data": [ { "address": "string", "platform": "string", "authorEmail": "string", "authorName": "string", "review": "string", "reviewType": 0, "reviewResponse": "string", "publishDate": "string", "rating": 0, "recommendationStatus": 0, "verificationStatus": true, "jobId": 0, "verifiedByUserId": 0, "verifiedOn": "string", "isAutoVerified": true, "businessUnitId": 0, "completedDate": "string", "customerName": "string", "customerId": 0, "dispatchedDate": "string", "jobStatus": 0, "jobTypeName": "string", "technicianFullName": "string", "technicianId": 0, "externalId": "string", "internalId": 0, "createdOn": "string", "modifiedOn": "string" } ] } ``` ``` -------------------------------- ### Create Booking Request Body Example Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Bookings_Create JSON payload for creating a new booking. Includes customer details, address, contact information, and booking specifics. Ensure all required fields are populated. ```json { "source": "string", "name": "string", "address": { "street": "string", "unit": "string", "city": "string", "state": "string", "zip": "string", "country": "string" }, "contacts": [ { "type": "Phone", "value": "string", "memo": "string" } ], "customerType": "string", "start": "string", "summary": "string", "campaignId": 0, "businessUnitId": 0, "jobTypeId": 0, "priority": {}, "isFirstTimeClient": true, "uploadedImages": [ "string" ], "isSendConfirmationEmail": true, "externalId": "string" } ``` -------------------------------- ### GET /marketingads/v2/tenant/{tenant}/capacity-warnings Source: https://developer.servicetitan.io/docs/apis/tenant-marketing-ads-v2/endpoints/CapacityAwarenessWarning_Get Retrieves all capacity awareness warnings for a given tenant. Requires authentication and specific scopes. ```APIDOC ## GET /marketingads/v2/tenant/{tenant}/capacity-warnings ### Description Returns all capacity awareness warnings for a specified tenant. ### Method GET ### Endpoint `/marketingads/v2/tenant/{tenant}/capacity-warnings` ### Parameters #### Path Parameters - **tenant** (integer) - Required - Tenant ID ### Authentication and Authorization This endpoint requires authentication via an API key (ST-App-Key header) or OAuth 2.0 Client Credentials Flow with the 'Marketing Ads → Capacity Warnings (Read)' scope. ### Response #### Success Response (200 OK) - **tenantId** (integer) - The ID of the tenant. - **tenantName** (string) - The name of the tenant. - **totalCount** (integer) - The total number of capacity warnings. - **data** (array of objects) - An array of capacity warning objects. - **campaignName** (string) - The name of the campaign. - **warningType** (string) - The type of warning. - **businessUnits** (array of string) - The business units associated with the warning. - **lookaheadWindow** (integer) - The lookahead window for the warning. - **thresholdValue** (integer) - The threshold value for the warning. #### Response Example (200 OK) ```json { "tenantId": 0, "tenantName": "string", "totalCount": 0, "data": [ { "campaignName": "string", "warningType": "string", "businessUnits": [ "string" ], "lookaheadWindow": 0, "thresholdValue": 0 } ] } ``` #### Error Response (400 Bad Request) - **type** (string) - A URI reference that identifies the problem type. - **title** (string) - A short, human-readable summary of the problem type. - **status** (integer) - The HTTP status code generated by the server. - **traceId** (string) - Internal trace ID for advanced diagnostics. - **errors** (object) - Provides more details about errors occurred. - **data** (object) - Provides additional data, intended for programmatic usage. #### Response Example (400 Bad Request) ```json { "type": "string", "title": "string", "status": 0, "traceId": "string", "errors": {}, "data": {} } ``` ``` -------------------------------- ### POST /leads Source: https://developer.servicetitan.io/docs/apis/tenant-crm-v2/endpoints/Leads_Create Creates a new lead. ```APIDOC ## POST /leads ### Description Creates a new lead. ### Method POST ### Endpoint /leads ``` -------------------------------- ### Example of owners query parameter Source: https://developer.servicetitan.io/docs/apis/tenant-forms-v2/endpoints/FormSubmission_GetFormSubmissions Demonstrates how to format the 'owners' query parameter for filtering submissions by associated entities like Job, Customer, or Location. ```http owners[0].type=Location&owners[0].id=2689281& owners[1].type=Customer&owners[1].id=2703496 ```