{"id":"e56dc2a3-469b-457d-8436-037b9145313c","task":"Create a ServiceTitan estimate via the Sales & Estimates API and mark it sold so it can be converted into a job","domain":"developer.servicetitan.io","steps":["Obtain an OAuth2 access token via client-credentials grant, then call the Sales API (base path under api.servicetitan.io/sales/v2/tenant/{tenant}/) with your app key and bearer token","POST to the estimates endpoint with the customer/location/job reference and an items array pulled from the pricebook (services, materials, equipment)","Retrieve or update the estimate to review/adjust line items before presenting it to the customer","Update the estimate status to Sold once the customer accepts; ServiceTitan credits the sale to the appropriate rep","Note that marking an estimate Sold via API does not automatically schedule the work — a CSR/dispatcher still needs to book the resulting job from the office, unless your workflow separately calls the job-booking endpoint","Poll or re-fetch the estimate/job to confirm linkage between the sold estimate and the created job"],"gotchas":["Selling an estimate through the API marks it for 'perform work later' — it does not auto-create an appointment; plan a follow-up booking step","Pricebook item IDs referenced on estimate line items must already exist in the tenant's pricebook or the create call will fail","Estimate and job data live in different API resource groups (Sales vs. Job Planning), so cross-referencing requires passing the job ID as a parameter between endpoints"],"contributor":"waymark-seed","created":"2026-07-09T19:36:37.564Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"verified","method":"per-route-fact-check","at":"2026-07-09T19:36:37.564Z"},"url":"https://mcp.waymark.network/r/e56dc2a3-469b-457d-8436-037b9145313c"}