AI Voice Agent + ServiceTitan: HVAC Booking and Dispatch Pro Integration
ServiceTitan's Atlas, Dispatch Pro, and Adaptive Capacity make HVAC the most native AI voice agent vertical of 2026. We walk through Job, Appointment, and Technician APIs for a CallSphere build.
ServiceTitan made AI dispatch native in 2026 with Dispatch Pro, Atlas, and Adaptive Capacity. CallSphere's HVAC deployment integrates the same primitives, so independent voice agents now book directly to the dispatch board without a middleware layer.
What the integration unlocks
flowchart TD
Client[MCP client · Claude Desktop] --> MCP[MCP server]
MCP --> Tool1[Tool: Calendar]
MCP --> Tool2[Tool: CRM]
MCP --> Tool3[Tool: KB search]
Tool1 --> SaaS1[(Calendly)]
Tool2 --> SaaS2[(Salesforce)]
Tool3 --> SaaS3[(Notion)]A homeowner calls at 7:42pm with a no-heat emergency in 18°F weather. The CallSphere voice agent identifies the customer by phone in ServiceTitan, sees prior service history, classifies the call as Emergency Heat, checks Adaptive Capacity for the next on-call technician, books a 9pm window, and texts the customer the technician's name and ETA. Total time: 2 minutes 14 seconds. The dispatcher sees the booked job appear on the board and never has to touch it.
How the ServiceTitan API exposes it
ServiceTitan namespaces resources by domain. CallSphere uses Dispatch (/dispatch/v2/tenant/{tenantId}) for jobs, appointments, and capacity; CRM (/crm/v2/tenant/{tenantId}) for customers and locations; Settings (/settings/v2/tenant/{tenantId}) for technicians; Job Booking (/jpm/v2/tenant/{tenantId}) for the booking flow itself.
Key endpoints: GET /jpm/v2/tenant/{tenantId}/job-types (callable services), POST /jpm/v2/tenant/{tenantId}/jobs (book a job), GET /dispatch/v2/tenant/{tenantId}/capacity (Adaptive Capacity availability), GET /dispatch/v2/tenant/{tenantId}/appointments (current schedule), PUT /dispatch/v2/tenant/{tenantId}/appointments/{id}/assignments (assign a technician).
Hear it before you finish reading
Talk to a live CallSphere AI voice agent in your browser — 60 seconds, no signup.
Auth is OAuth client credentials with a tenant-scoped App Key. Required scopes vary by endpoint.
How CallSphere implements it
CallSphere ships an HVAC tool pack mirroring the Healthcare 14-tool pattern: lookup_customer, create_new_customer, get_available_slots, book_job, reschedule_job, get_technician_eta, request_callback, escalate_to_dispatcher, add_job_note, request_invoice, plus emergency_triage, upsell_membership, book_maintenance_visit, and survey_post_job. All 14 wrap ServiceTitan endpoints one-to-one.
CallSphere runs 37 specialist agents and 90+ tools across 6 verticals. Pricing $149 / $499 / $1499. 14-day trial. 22% affiliate program.
Build steps
- Get a ServiceTitan Developer account and request API access for your customer's tenant. They generate the App Key.
- Implement OAuth client credentials flow. Token TTL is short — refresh proactively.
- At call connect, normalize the caller's E.164 phone and search Customers via
/crm/v2/customers?phone={e164}. - If matched, fetch active service contracts and last 3 jobs to seed agent context. If unmatched, prompt for address and create a Location plus Customer.
- For booking: call Adaptive Capacity to get bookable windows, present 2-3 to the caller, and POST to
/jpm/v2/jobswith selected window, job type, and customer ID. - Use
PUT /assignmentsonly if the dispatcher's policy is to assign at booking time; most teams let Dispatch Pro auto-assign. - Subscribe to ServiceTitan webhooks for
job.scheduled,job.cancelled,technician.dispatchedso the voice agent can confirm or rebook out-of-band changes.
Code snippet
// Book an HVAC job in ServiceTitan from a CallSphere voice agent
const job = await fetch(
`https://api.servicetitan.io/jpm/v2/tenant/${tenantId}/jobs`,
{
method: "POST",
headers: {
Authorization: `Bearer ${stAccessToken}`,
"ST-App-Key": stAppKey,
"Content-Type": "application/json",
},
body: JSON.stringify({
customerId: matchedCustomer.id,
locationId: matchedLocation.id,
jobTypeId: 12, // "Emergency No Heat"
priority: "Urgent",
campaignId: 4501, // "Inbound Voice Agent"
summary: "No heat reported. CallSphere voice agent diagnosis: possible ignition issue.",
appointments: [{
start: chosenSlot.startIso,
end: chosenSlot.endIso,
}],
}),
}
);
FAQ
Does ServiceTitan support third-party voice agents? Yes via the public API. ServiceTitan also offers their own AI Voice Agent in Contact Center Pro, which is fully native; CallSphere is the right pick when you want a multi-vertical voice provider that integrates with ServiceTitan rather than replaces parts of it.
Still reading? Stop comparing — try CallSphere live.
CallSphere ships complete AI voice agents per industry — 14 tools for healthcare, 10 agents for real estate, 4 specialists for salons. See how it actually handles a call before you book a demo.
How does Adaptive Capacity work over the API? GET /dispatch/v2/capacity returns time-windowed booking availability accounting for technician shifts, drive time, and skill matching. CallSphere caches 60s.
What about V1 vs V2 API? Use V2. V1 is in deprecation. The V2 namespace structure (dispatch, crm, settings, etc.) is what current docs cover.
Can the agent reschedule mid-call? Yes via PUT /jpm/v2/jobs/{id} for the date and PUT /dispatch/v2/appointments/{id} for the appointment window.
How do I demo this? Start a trial. Pick HVAC during onboarding or contact us for an HVAC walkthrough.
Sources
Try CallSphere AI Voice Agents
See how AI voice agents work for your industry. Live demo available -- no signup required.