---
title: "ServiceTitan"
description: "Connect ServiceTitan, obtain the required access and configure permitted actions."
url: "https://documentation.verbatik.com/integrations/servicetitan/"
---

# ServiceTitan

Connect ServiceTitan, obtain the required access and configure permitted actions.

The API adapter is implemented. Validate your own account and authorized actions before routing production calls.

## Before you start

Connect the account belonging to this business and workspace. Vendor subscriptions, API limits and role permissions still apply.

**API:** ServiceTitan API v2, Job Planning and Management (JPM)

**Authentication:** Bearer OAuth access token plus ST-App-Key and tenant ID

## Get access and connect

1. Register a ServiceTitan developer application, select required API scopes and obtain its app key.
2. Ask the clinic/business tenant admin to authorize the app and provide the tenant ID.
3. Use ServiceTitan's client-credentials OAuth flow to obtain an access token for the selected production or integration environment.
4. Save access token and ST-App-Key privately in Verbatik, set tenantId and environment, and test the JPM jobs read route.
5. Map existing customer, service location, business unit, job type and campaign IDs before creating a job with its appointment. Use an authorized dispatch-capacity workflow before promising a time.
6. Reconnect when the access token expires. Automated OAuth exchange/refresh is not implemented for this connection.

## Account requirements

- ServiceTitan API application and tenant approval
- App key, authorized tenant ID and fresh access token
- Existing tenant customer/location and job configuration IDs
- Integration sandbox validation before production writes

## Permissions

- `JPM jobs read`
- `JPM jobs write/create`
- `JPM job notes write`
- `CRM customer/location access is needed separately for customer onboarding. The public CRM reference/schema was unavailable during implementation; an authorized current CRM specification is needed before adding those writes.`

Grant the subset needed for the actions you enable. API scopes do not override the connected user’s record permissions or vendor validation rules.

## Connection fields

- `accessToken` — API key or authorized access token (required). Secret fields are saved as workspace credentials.
- `appKey` — ServiceTitan ST-App-Key (required). Secret fields are saved as workspace credentials.
- `tenantId` — Tenant ID (required).
- `environment` — Environment (production or integration) (optional).

## Available actions

- `test_connection` — **Read**. Read a single job to verify the configured tenant/app credentials and JPM read scope.
- `list_jobs` — **Read**. Read service jobs for a customer with bounded pagination.
- `create_job` — **Write**. Create a job for an existing customer/location with its first appointment. Check dispatch capacity through the tenant's approved workflow before offering the time.
- `add_job_note` — **Write**. Append a call summary to an existing service job.

## Provider-specific behavior

The current job action works with an existing customer and location. Customer creation requires a current accessible CRM specification. Creating a job does not reserve dispatch capacity.

## Verify before going live

Run Test connection and one read action against a known permitted record. Then test each intended write in an authorized sandbox. Check the provider’s own record and the Verbatik receipt. Publish the agent after assigning its tools. If a write has an unknown outcome, reconcile it with the vendor before trying again.

## Vendor documentation

- [Setup and API documentation](https://developer.servicetitan.io/)
- [Additional provider reference](https://developer.servicetitan.io/docs/getting-started/)
- [Additional provider reference](https://developer.servicetitan.io/docs/apis/tenant-jpm-v2/overview)
- [Additional provider reference](https://help.servicetitan.com/docs/get-started-with-api-dev-portal-v2)
