---
title: Housecall Pro API Integration on Truto
slug: housecallpro
category: CRM
canonical: "https://truto.one/integrations/detail/housecallpro/"
---

# Housecall Pro API Integration on Truto



**Category:** CRM  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 95 tools for Housecall Pro that AI agents can call directly.

- **create_a_housecall_pro_customer_address** — Create a new address on a Housecall Pro customer. Returns the created address record with id, type, street, street_line_2, city, state, zip, and country. Required: customer_id, street, city, state, zip, country.
- **get_single_housecall_pro_customer_address_by_id** — Get a customer's address via customer ID and address ID. Returns: id, type, street, street_line_2, city, state, zip, country. Required: customer_id, id.
- **list_all_housecall_pro_customer_addresses** — List addresses for a Housecall Pro customer. Returns address records with id, type, street, street_line_2, city, state, zip, and country. Note: the vendor spec leaves the 200 response empty and shows this list shape only under a request body, so the shape is inferred and unconfirmed. Required: customer_id.
- **create_a_housecall_pro_customer** — Create a customer in Housecall Pro with name, email, phone numbers, lead source, tags, and addresses. Returns the created customer including id, first_name, last_name, email, tags, and addresses.
- **get_single_housecall_pro_customer_by_id** — Get a single Housecall Pro customer by id. Returns the customer including id, first_name, last_name, email, tags, addresses, and created_at; pass expand to include attachments or do_not_service. Required: id.
- **list_all_housecall_pro_customers** — List Housecall Pro customers. Returns each customer's id, first_name, last_name, email, mobile_number, tags, and addresses.
- **update_a_housecall_pro_customer_by_id** — Update an existing Housecall Pro customer by id. Returns the updated customer with id, first_name, last_name, email, mobile_number, tags, and addresses. Required: id.
- **housecall_pro_jobs_bulk_lock** — Lock Housecall Pro jobs whose schedule start or completion time falls within a time range. Returns jobs with id and locked_at. statuses must include at least one of scheduled, in_progress, completed. Required: starting_at, ending_at, statuses.
- **create_a_housecall_pro_job** — Create a job in Housecall Pro from an existing customer and address. Returns the created job including id, invoice_number, work_status, schedule, customer, and totals. Required: customer_id, address_id.
- **housecall_pro_jobs_dispatch** — Dispatch a Housecall Pro job to employees. Returns assigned_employees including each employee's id, first_name, last_name, email, role, and permissions. Required: job_id, dispatched_employees.
- **get_single_housecall_pro_job_by_id** — Get a single Housecall Pro job by id. Returns the full job including id, invoice_number, work_status, schedule, customer, assigned_employees, and totals. Required: id.
- **list_all_housecall_pro_jobs** — List Housecall Pro jobs, sorted by created_at descending by default. Returns jobs with id, invoice_number, work_status, schedule, customer, and totals.
- **housecall_pro_jobs_lock** — Lock a single Housecall Pro job by id. Returns the locked job, including locked_at. Required: job_id.
- **housecall_pro_job_line_items_bulk_update** — Bulk create, update, and replace a Housecall Pro job's line items in a single request. Returns: url, data. Required: job_id. Entries without an id are treated as new line items; append_line_items defaults to false, which deletes existing items omitted from the request.
- **create_a_housecall_pro_job_line_item** — Add a line item to a Housecall Pro job. Returns the created line item including id, name, unit_price, quantity, kind, and taxable. Required: job_id, name. Creating multiple items for the same job is rate limited — use bulk_update instead.
- **delete_a_housecall_pro_job_line_item_by_id** — Delete a single line item from a Housecall Pro job. Returns: id, deleted. Required: job_id, id.
- **list_all_housecall_pro_job_line_items** — List all line items for a Housecall Pro job. Returns each line item's id, name, description, unit_price, unit_cost, quantity, kind, taxable, amount, and order_index. Required: job_id.
- **update_a_housecall_pro_job_line_item_by_id** — Update a single line item on a Housecall Pro job. Returns the updated line item including id, name, unit_price, quantity, kind, and taxable. Required: job_id, id, name.
- **create_a_housecall_pro_job_note** — Add a note to a Housecall Pro job. Returns the created note including its id and content. Required: job_id, content.
- **delete_a_housecall_pro_job_note_by_id** — Deletes a specific job note. Returns no documented response body. Required: job_id, id.
- **get_single_housecall_pro_invoice_by_id** — Get a single Housecall Pro invoice by id (UUID). Returns the full invoice object including id, status, invoice_number, amount, subtotal, due_amount, due_at, items, taxes, discounts, payments, and job_id. Required: id.
- **list_all_housecall_pro_invoices** — List Housecall Pro invoices. Returns: id, status, invoice_number, amount, subtotal, due_amount, due_at, display_due_concept, due_concept, paid_at, sent_at, service_date, invoice_date, taxes, discounts, payments, job_id. Filter and sort results via query parameters.
- **housecall_pro_invoices_preview** — Preview a Housecall Pro invoice as HTML by its id. Returns the rendered invoice as an HTML document (text/html), not a JSON object. Required: invoice_id.
- **create_a_housecall_pro_estimate** — Create an estimate in Housecall Pro for a customer (customer_id), optionally including options with line items, tax, a schedule, and estimate fields. Returns the created estimate including id, estimate_number, work_status, customer, schedule, and options.
- **get_single_housecall_pro_estimate_by_id** — Get a single estimate by id from Housecall Pro. Returns the full estimate including id, estimate_number, work_status, customer, address, schedule, assigned_employees, and options. Required: id.
- **list_all_housecall_pro_estimates** — List Housecall Pro estimates, filterable by customer, assigned employees, locations, work status, and schedule window; sortable by created_at, updated_at, or id. Returns id, estimate_number, work_status, customer, address, schedule, assigned_employees, and options.
- **housecall_pro_estimate_options_approve** — Approve one or more estimate options in Housecall Pro. Returns: status, last_updated_at, copied_on_approval_to_job_id. Required: option_ids.
- **housecall_pro_estimate_options_bulk_update** — Update the schedule of a Housecall Pro estimate option. Returns the updated schedule with start_time, end_time, arrival_window_minutes, and assigned_employees. Required: estimate_id, option_id, start_time.
- **create_a_housecall_pro_estimate_option** — Create a new option on an existing Housecall Pro estimate. Returns the created option with id, name, option_number, total_amount, approval_status, status, notes, created_at, and updated_at. Required: estimate_id, name.
- **housecall_pro_estimate_options_decline** — Decline one or more estimate options in Housecall Pro. Returns: status, last_updated_at. Required: option_ids.
- **create_a_housecall_pro_estimate_option_attachment** — Create a new estimate option attachment in Housecall Pro by uploading a file to an estimate option. Returns: estimate_url. Required: estimate_id, option_id, file.
- **housecall_pro_estimate_option_line_items_bulk_update** — Bulk update line items for a Housecall Pro estimate option in a single request; entries without an id are added as new line items for the option. Returns: line_items. Required: estimate_id, option_id.
- **list_all_housecall_pro_estimate_option_line_items** — List line items for a Housecall Pro estimate option. Returns each line item's id, name, description, unit_price, unit_cost, quantity, kind, taxable, amount, and order_index. Required: estimate_id, option_id.
- **create_a_housecall_pro_estimate_option_link** — Create a new link attached to a Housecall Pro estimate option. Returns the created link's id, title, and url. Required: estimate_id, option_id, title, url.
- **create_a_housecall_pro_estimate_option_note** — Create a new note on a Housecall Pro estimate option. Returns: id, content. Required: estimate_id, option_id, content.
- **delete_a_housecall_pro_estimate_option_note_by_id** — Delete a specific note on a Housecall Pro estimate option. Returns an empty 204 response on success. Required: estimate_id, option_id, id.
- **list_all_housecall_pro_company** — Get the Housecall Pro company profile for the authenticated account, including child locations for multi-location businesses. Returns id, name, support_email, phone_number, address, website, time_zone, and locations. Takes no parameters.
- **create_a_housecall_pro_lead_source** — Create a new lead source in Housecall Pro for categorizing where leads originate. Returns the created lead source with id, name, and editable. Required: name.
- **list_all_housecall_pro_lead_sources** — List Housecall Pro lead sources, optionally searched by name (q). Returns each lead source with id, name, and editable.
- **update_a_housecall_pro_lead_source_by_id** — Update a specific lead source. Only lead sources marked as editable can be updated. Returns: id, name, editable. Required: id.
- **housecall_pro_leads_convert** — Convert a Housecall Pro lead into an estimate or job. Returns job_id when the lead was converted to a job, or estimate_id when it was converted to an estimate. Required: lead_id.
- **create_a_housecall_pro_lead** — Create a new Housecall Pro lead. Returns the created lead including id, number, customer, address, status, tags, assigned_employee, lost_at, and total_amount. An associated customer (customer_id or a customer object) must be provided.
- **get_single_housecall_pro_lead_by_id** — Get a single Housecall Pro lead by id. Returns the lead including id, number, customer, address, lead_source, tags, assigned_employee, status, pipeline_status, company_id, lost_at, total_amount, conversions, and job_fields. Required: id.
- **list_all_housecall_pro_leads** — List Housecall Pro leads, filterable by customer_id, employee_ids, lead_source, location_ids, status, and tag_ids; sorted by created_at descending by default. Returns lead records including id, number, customer, address, status, pipeline_status, lost_at, total_amount, conversions, and job_fields.
- **housecall_pro_job_schedules_bulk_delete** — Delete the schedule from a Housecall Pro job. Returns a confirmation with object ("schedule") and deleted. Required: job_id.
- **housecall_pro_job_schedules_bulk_update** — Update a Housecall Pro job's schedule. Returns: start_time, end_time, arrival_window_minutes, assigned_employees, company_name, company_id, appointments. Required: job_id, start_time. Jobs with multi-day schedules containing more than 1 appointment cannot be updated here — use the appointments endpoints instead.
- **housecall_pro_applications_disable** — Disable the application for a company. Returns: name, state, organization_id.
- **housecall_pro_applications_enable** — Enable the application for a company. Returns: name, state, organization_id.
- **list_all_housecall_pro_applications** — Get the application for a company. Returns: name, state, organization_id.
- **list_all_housecall_pro_checklists** — List checklists that belong to a Housecall Pro job or estimate. Returns: id, title, job_uuid, estimate_uuid, sections. The vendor's parameter list marks both job_uuids and estimate_uuids as required, while its own text says at least one is enough; both are listed as required here to match the parameter list. Required: job_uuids, estimate_uuids.
- **list_all_housecall_pro_employees** — Get all of the active employees in an organization. Returns: id, first_name, last_name, email, mobile_number, color_hex, avatar_url, role.
- **create_a_housecall_pro_job_attachment** — Add an attachment to a job. Returns: job_url. Required: job_id, file.
- **create_a_housecall_pro_job_appointment** — Add an appointment to a job. Returns: id, start_date, start_time, end_time, anytime, arrival_window_minutes, dispatched_employees_ids. Required: job_id, start_time, end_time, dispatched_employees_ids.
- **delete_a_housecall_pro_job_appointment_by_id** — Delete a job appointment. Returns no documented response body. Required: job_id, id.
- **list_all_housecall_pro_job_appointments** — Get all of the appointments for a job. Returns: id, start_date, start_time, end_time, anytime, arrival_window_minutes, dispatched_employees_ids. Required: job_id.
- **update_a_housecall_pro_job_appointment_by_id** — Update job appointment. Returns: id, start_date, start_time, end_time, anytime, arrival_window_minutes, dispatched_employees_ids. Required: job_id, id, start_time, end_time, dispatched_employees_ids.
- **list_all_housecall_pro_job_invoices** — Lists all invoices for a job. Returns: id, status, invoice_number, amount, subtotal, due_amount, due_at, display_due_concept. Required: job_id.
- **housecall_pro_job_input_materials_bulk_update** — Bulk update a job's job inputs materials. If uuid not define for a job input material it will be consider as a new entry. Returns: job_input_materials. Required: job_id.
- **list_all_housecall_pro_job_input_materials** — Lists all job input materials for a job. Returns: uuid, name, description, part_number, unit_cost, quantity. Required: job_id.
- **create_a_housecall_pro_job_tag** — Add a tag to a job. Returns: tags. Required: job_id, tag_id.
- **delete_a_housecall_pro_job_tag_by_id** — Remove a tag from a job. Returns: tags. Required: job_id, id.
- **create_a_housecall_pro_job_link** — Create a new job link. Returns: id, title, url. Required: job_id, title, url.
- **create_a_housecall_pro_webhook_subscription** — Create a Housecall Pro webhook subscription for the company. Webhooks are disabled by default and must be subscribed per company; once subscribed, events are sent to your webhook endpoint. Returns no documented response body.
- **delete_a_housecall_pro_webhook_subscription_by_id** — Delete a company's Housecall Pro webhook subscription to stop receiving events for that company. Returns no documented response body.
- **housecall_pro_company_franchise_info_bulk_update** — Update organization franchise information. Returns: id, name, support_email, phone_number, logo_url, address, website, default_arrival_window.
- **housecall_pro_company_schedule_availability_bulk_update** — Update a company's schedule windows. Returns: availability_buffer_in_days, daily_availabilities. Required: availability_buffer_in_days, daily_schedule_windows.
- **list_all_housecall_pro_company_schedule_availability** — See how an organization has configured their business hours and bookable windows. Returns: availability_buffer_in_days, daily_availabilities.
- **list_all_housecall_pro_company_booking_windows** — Get available windows to book a Housecall Pro job or estimate for a time range (default 7 days), based on Online Booking settings and open employee slots. Window size is service_duration, else the service's configured duration (service_id), else 30 minutes.
- **get_single_housecall_pro_event_by_id** — Get the event via ID. Returns: id, name, note, tags, recurrence_rule, address, assigned_employees, schedule. Required: id.
- **list_all_housecall_pro_events** — Get a list of events. Returns: id, name, note, tags, recurrence_rule, address, assigned_employees, schedule.
- **create_a_housecall_pro_tag** — Create a tag. Returns: id, name.
- **list_all_housecall_pro_tags** — Get a list of tags. Returns: id, name.
- **update_a_housecall_pro_tag_by_id** — Update a tag value. Returns: id, name. Required: id.
- **list_all_housecall_pro_lead_line_items** — Lists all line items for a lead. Returns: id, name, description, unit_price, unit_cost, unit_of_measure, quantity, kind. Required: lead_id.
- **create_a_housecall_pro_job_type** — Create a job type. Returns: id, name. Required: name.
- **list_all_housecall_pro_job_types** — Get a list of job types. Returns: id, name.
- **update_a_housecall_pro_job_type_by_id** — Update a job type. Returns: id, name. Required: id, name.
- **create_a_housecall_pro_price_book_material** — Create a new price book material. Returns: object, uuid, material_category_uuid, name, description, image, cost, unit_of_measure. Required: material_category_uuid, name, price, cost.
- **delete_a_housecall_pro_price_book_material_by_id** — Delete an existing price book material. Returns no documented response body. Required: id.
- **list_all_housecall_pro_price_book_materials** — Get all price book materials under a parent category. Returns: object, uuid, material_category_uuid, name, description, image, cost, unit_of_measure. Required: material_category_uuid.
- **update_a_housecall_pro_price_book_material_by_id** — Update information of an existing price book material. Returns: object, uuid, material_category_uuid, name, description, image, cost, unit_of_measure. Required: id.
- **create_a_housecall_pro_price_book_material_category** — Create a new price book material category. Returns: object, uuid, parent_uuid, name, image. Required: name.
- **delete_a_housecall_pro_price_book_material_category_by_id** — Delete an existing price book material category. Returns no documented response body. Required: id.
- **list_all_housecall_pro_price_book_material_categories** — Get all price book material categories from root or under a parent category. Returns: object, uuid, parent_uuid, name, image.
- **update_a_housecall_pro_price_book_material_category_by_id** — Update information of an existing price book material category. Returns: object, uuid, parent_uuid, name, image. Required: id.
- **create_a_housecall_pro_price_book_price_form** — Create a new price book price form. Returns: id, name, automatically_add_to_new_job, olb_enabled, duration_in_minutes, taxable, template_type, description. Required: name.
- **delete_a_housecall_pro_price_book_price_form_by_id** — Delete a price form. Returns no documented response body. Required: id.
- **get_single_housecall_pro_price_book_price_form_by_id** — Get a single price book price form by ID. Returns: id, name, automatically_add_to_new_job, olb_enabled, duration_in_minutes, taxable, template_type, description. Required: id.
- **list_all_housecall_pro_price_book_price_forms** — Get a list of active price book price forms. Returns: id, name, automatically_add_to_new_job, olb_enabled, duration_in_minutes, taxable, template_type, description.
- **update_a_housecall_pro_price_book_price_form_by_id** — Updates price form. Returns: id, name, automatically_add_to_new_job, olb_enabled, duration_in_minutes, taxable, template_type, description. Required: id.
- **list_all_housecall_pro_price_book_services** — Get a list of price book services. Returns: object, uuid, name, description, task_number, image, flat_rate_enabled, service_materials.
- **list_all_housecall_pro_service_zones** — Get a list of service zones. Returns: id, name, coverage_type, trip_charge, fee_name, zip_codes, cities, service_pros.
- **list_all_housecall_pro_routes** — Get a list of routes for the company. A route groups employees and their job appointments, events, and estimates for a given date. Returns: id, name, color_hex, date, employee_ids, job_appointments, event_ids, estimate_ids.
- **housecall_pro_pipeline_statuses_bulk_update** — Updates pipeline status for lead, job, or estimate. The Pipeline domain only allows forward movement to statuses with equal or higher order values. Returns: status_id, resource_id, resource_type, name. Required: resource_type, resource_id, status_id.
- **list_all_housecall_pro_pipeline_statuses** — List Housecall Pro pipeline statuses for a resource type (lead, job, or estimate); empty for organizations without pipeline enabled. Returns: id, name, status_type. Required: resource_type. Required: resource_type.

## How it works

1. **Link your customer's Housecall Pro account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Housecall Pro.** The Proxy API is a 1-to-1 mapping of the Housecall Pro API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Automate lead-to-job conversion for home service businesses** — SaaS platforms offering lead generation, booking widgets, or AI receptionists can push leads and auto-book jobs directly into their users' Housecall Pro accounts, eliminating manual data entry and reducing lead response time.
- **Trigger post-job marketing and review workflows** — Reputation management, email marketing, and customer retention tools can listen for job completions and paid invoices via webhooks, then automatically fire personalized review requests, maintenance reminders, or upsell campaigns.
- **Embed consumer financing into field estimates** — POS financing platforms can inject pre-approval links into Housecall Pro estimate options and auto-approve options when customers complete financing, letting technicians close high-ticket repairs without juggling apps.
- **Sync supplier catalogs and track materials consumption** — Inventory and supplier platforms can keep their customers' Housecall Pro Price Book continuously updated with current material pricing, and pull consumed job materials nightly to drive automated reordering.
- **Power specialized accounting, payroll, and commission tools** — Vertical finance SaaS can pull invoices, estimate approvals, job appointments, and employee data to calculate commissions, process payroll, or reconcile revenue inside their own systems.

## What you can build

- **Real-time booking widget with slot availability** — Query company booking windows and schedule availability to show open slots, then create jobs and appointments the moment a customer books.
- **Two-way lead pipeline sync** — Create leads with custom lead sources, convert them into jobs or estimates, and advance pipeline statuses in bulk from your own sales CRM.
- **Multi-option estimate builder (Good/Better/Best)** — Programmatically create estimates with multiple options, bulk-update line items, attach documents, and approve or decline options based on customer actions.
- **Price Book catalog sync** — Create, update, and delete materials, material categories, and price forms to keep technicians working from accurate, up-to-date pricing in the field.
- **Event-driven automation via webhooks** — Subscribe to Housecall Pro events to react instantly to job dispatches, completions, or invoice payments without polling, and route them into your workflow engine.
- **Job-level enrichment and tagging** — Add notes, attachments, tags, and links to jobs to surface context from your platform — such as call recordings, financing status, or customer sentiment — directly inside Housecall Pro.

## FAQs

### How does authentication work for Housecall Pro?

Truto handles the full OAuth connection flow with Housecall Pro on behalf of your end users. You don't manage tokens, refreshes, or credential storage — users click connect in your product and Truto returns an authenticated connection you can use immediately.

### Can we react to Housecall Pro events in real time?

Yes. Truto exposes create and delete endpoints for Housecall Pro webhook subscriptions, and you can also list events via the events API. This lets you subscribe to job, estimate, and invoice lifecycle changes instead of polling.

### What customer and job data can we read and write?

You can fully manage customers and their addresses, jobs (including appointments, line items, notes, attachments, tags, schedules, and dispatching), estimates and estimate options, invoices (read and preview), and leads. Both read and write operations are supported across these core resources.

### Does Truto support bulk operations for Housecall Pro?

Yes. Truto exposes Housecall Pro's native bulk endpoints for job locking, job schedules, job input materials, job line items, estimate options, estimate option line items, pipeline statuses, company franchise info, and schedule availability — so you can push large updates efficiently.

### How is pagination handled across list endpoints?

Truto normalizes Housecall Pro's pagination behind a consistent cursor interface across all list endpoints (customers, jobs, invoices, estimates, price book, employees, etc.), so you can iterate large datasets without writing API-specific pagination logic.

### Can we sync the Price Book, including custom materials and services?

Yes. You can list, create, update, and delete price book materials and material categories, manage price forms, and read price book services. This covers the common use cases around catalog sync and dynamic pricing.
