Manage Housecall Pro customers, jobs, estimates and leads; schedule and dispatch jobs.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Add a text note to a job. Housecall Pro: POST /jobs/{job_id}/notes.
The job id.
The note text.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Add a text note to a job. Housecall Pro: POST /jobs/{job_id}/notes.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job id. |
| content* | string | The note text. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id",
"content"
],
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id."
},
"content": {
"type": "string",
"minLength": 1,
"description": "The note text."
}
}
}Create a new customer, optionally with one or more addresses. Housecall Pro: POST /customers.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tag names. |
| string | ||
| notes | string | |
| company | string | The customer's company name. |
| addresses | array | Addresses to create with the customer. |
| last_name | string | |
| first_name | string | |
| home_number | string | |
| lead_source | string | |
| work_number | string | |
| mobile_number | string | |
| notifications_enabled | boolean | Whether the customer receives notifications. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag names."
},
"email": {
"type": "string"
},
"notes": {
"type": "string"
},
"company": {
"type": "string",
"description": "The customer's company name."
},
"addresses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"street": {
"type": "string"
},
"country": {
"type": "string"
},
"street_line_2": {
"type": "string"
}
}
},
"description": "Addresses to create with the customer."
},
"last_name": {
"type": "string"
},
"first_name": {
"type": "string"
},
"home_number": {
"type": "string"
},
"lead_source": {
"type": "string"
},
"work_number": {
"type": "string"
},
"mobile_number": {
"type": "string"
},
"notifications_enabled": {
"type": "boolean",
"description": "Whether the customer receives notifications."
}
}
}Add a service address to an existing customer. Returns the address id to use when creating a job or estimate. Housecall Pro: POST /customers/{customer_id}/addresses.
| Argument | Type | Description |
|---|---|---|
| zip* | string | |
| city* | string | |
| state* | string | |
| street* | string | |
| country* | string | Country, e.g. US. |
| customer_id* | string | The customer id. |
| street_line_2 | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id",
"street",
"city",
"state",
"zip",
"country"
],
"properties": {
"zip": {
"type": "string",
"minLength": 1
},
"city": {
"type": "string",
"minLength": 1
},
"state": {
"type": "string",
"minLength": 1
},
"street": {
"type": "string",
"minLength": 1
},
"country": {
"type": "string",
"minLength": 1,
"description": "Country, e.g. US."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "The customer id."
},
"street_line_2": {
"type": "string"
}
}
}Create an estimate for a customer with one or more options (e.g. Good / Better / Best), each with line items priced in cents. Give an existing address_id or a new address. Housecall Pro: POST /estimates.
| Argument | Type | Description |
|---|---|---|
| note | string | |
| address | object | A new address, if no address_id. |
| message | string | Message to the customer. |
| options | array | The estimate's options. |
| schedule | object | When the estimate visit is scheduled. |
| address_id | string | An existing address of the customer. |
| customer_id* | string | The customer id. |
| job_type_id | string | From housecall_list_job_types. |
| lead_source | string | |
| estimate_number |
Create a job for an existing customer at one of their existing addresses, optionally scheduled, assigned, tagged and with line items (prices in cents). Get address ids from housecall_get_customer. Housecall Pro: POST /jobs.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tag names. |
| notes | string | |
| schedule | object | |
| address_id* | string | The customer address id. |
| line_items | array | |
| customer_id* | string | The customer id. |
| job_type_id | string | From housecall_list_job_types. |
| lead_source | string | |
| invoice_number | integer | Must be unique across the company's jobs; auto-assigned if omitted. |
| business_unit_id |
Create a lead, either for an existing customer (customer_id) or with a new customer inline (customer). Optionally with an address, lead source, assigned employee, tags, note and line items priced in cents. Housecall Pro: POST /leads.
| Argument | Type | Description |
|---|---|---|
| note | string | |
| tags | array | |
| address | object | A new address, if no address_id. |
| customer | object | A new customer to create with the lead. Give this or `customer_id`. |
| address_id | string | An existing address of the customer. |
| line_items | array | |
| customer_id | string | An existing customer. Give this or `customer`. |
| lead_source | string | |
| assigned_employee_id | string |
Set which employees a job is dispatched to. This REPLACES the current dispatch list — pass everyone who should be on the job. Housecall Pro: PUT /jobs/{job_id}/dispatch.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job id. |
| employee_ids* | array | Every employee who should be dispatched. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id",
"employee_ids"
],
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id."
},
"employee_ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Every employee who should be dispatched."
}
}
}Fetch the Housecall Pro company this key belongs to — name, contact details, address, time zone, service-area zip codes and (multi-location) its locations. A cheap way to confirm the key works. Housecall Pro: GET /company.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch a single customer by id, including their addresses (whose ids you need to create a job or estimate). Housecall Pro: GET /customers/{customer_id}.
| Argument | Type | Description |
|---|---|---|
| expand | array | Extras to include. |
| customer_id* | string | The customer id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"expand": {
"type": "array",
"items": {
"enum": [
"attachments",
"do_not_service"
],
"type": "string"
},
"description": "Extras to include."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "The customer id."
}
}
}Fetch a single estimate by id, including its options and each option's approval status. Housecall Pro: GET /estimates/{estimate_id}.
| Argument | Type | Description |
|---|---|---|
| estimate_id* | string | The estimate id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"estimate_id"
],
"properties": {
"estimate_id": {
"type": "string",
"minLength": 1,
"description": "The estimate id."
}
}
}Fetch a single job by id — customer, address, work status and timestamps, schedule, assigned employees, notes and totals. Housecall Pro: GET /jobs/{id}.
| Argument | Type | Description |
|---|---|---|
| expand | array | Extras to include. |
| job_id* | string | The job id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"expand": {
"type": "array",
"items": {
"enum": [
"attachments",
"appointments"
],
"type": "string"
},
"description": "Extras to include."
},
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id."
}
}
}Fetch a single lead by id — its customer, address, lead source, tags, assigned employee, status and pipeline status. Housecall Pro: GET /leads/{id}.
| Argument | Type | Description |
|---|---|---|
| lead_id* | string | The lead id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lead_id"
],
"properties": {
"lead_id": {
"type": "string",
"minLength": 1,
"description": "The lead id."
}
}
}List or search customers, with their phone numbers, tags and addresses. `q` searches name, email, mobile number and address. Housecall Pro: GET /customers.
| Argument | Type | Description |
|---|---|---|
| q | string | Search by name, email, mobile number or address. |
| page | integer | Page number, starting at 1. |
| expand | array | Extras to include in each customer. |
| sort_by | string | Customer attribute to sort by, e.g. created_at. |
| page_size | integer | Records per page. |
| location_ids | array | Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set). |
| sort_direction | string | Sort direction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"description": "Search by name, email, mobile number or address."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"expand": {
"type": "array",
"items": {
"enum": [
"attachments",
"do_not_service"
],
"type": "string"
},
"description": "Extras to include in each customer."
},
"sort_by": {
"type": "string",
"description": "Customer attribute to sort by, e.g. created_at."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Records per page."
},
"location_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set)."
},
"sort_direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
}
}
}List the company's active employees with their role, contact details and permissions. Use their ids to assign or dispatch jobs. Housecall Pro: GET /employees.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort_by | string | Employee attribute to sort by. |
| page_size | integer | Records per page. |
| location_ids | array | Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set). |
| sort_direction | string | Sort direction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort_by": {
"type": "string",
"description": "Employee attribute to sort by."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Records per page."
},
"location_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set)."
},
"sort_direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
}
}
}List estimates, filterable by scheduled window, customer, assigned employees and work status. Each carries its customer, address, schedule and options. Housecall Pro: GET /estimates.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort_by | string | Attribute to sort by. |
| page_size | integer | Records per page. |
| customer_id | string | Only this customer's estimates. |
| work_status | array | Only these work statuses. All statuses if omitted. |
| employee_ids | array | Only records assigned to these employee ids. |
| location_ids | array | Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set). |
| sort_direction | string | Sort direction. |
| scheduled_end_max | string | Only estimates ending at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
List invoices across the company, filterable by status, customer, and created / due / paid date ranges — e.g. everything open and overdue. Amounts are in cents. Housecall Pro: GET /invoices.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| status | array | Only these statuses. |
| sort_by | string | Attribute to sort by. |
| page_size | integer | Records per page. |
| due_at_max | string | Due at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| due_at_min | string | Due at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| paid_at_max | string | Paid at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| paid_at_min | string | Paid at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| location_ids | array | Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set). |
List the invoices raised for one job, with status, amounts, due and paid dates, items, taxes, discounts and payments. Housecall Pro: GET /jobs/{job_id}/invoices.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id."
}
}
}List the line items (services, materials, labor, discounts) on one job, with unit price, cost, quantity and amount in cents. Housecall Pro: GET /jobs/{job_id}/line_items.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id."
}
}
}List the company's job types (e.g. Repair, Install, Maintenance). Use an id as job_type_id when creating a job or estimate. Housecall Pro: GET /job_fields/job_types.
| Argument | Type | Description |
|---|---|---|
| name | string | Filter job types by name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Filter job types by name."
}
}
}List jobs, filterable by scheduled window, customer, assigned employees and work status. Each job carries its customer, address, notes, schedule, assigned employees and totals. Housecall Pro: GET /jobs.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| expand | array | Extras to include. |
| sort_by | string | Attribute to sort by. |
| page_size | integer | Records per page. |
| customer_id | string | Only this customer's jobs. |
| work_status | array | Only these work statuses. All statuses if omitted. |
| employee_ids | array | Only records assigned to these employee ids. |
| location_ids | array | Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set). |
| sort_direction | string | Sort direction. |
List leads, filterable by status (open / won / lost), customer, assigned employees, tags and lead source. Housecall Pro: GET /leads.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| status | string | Only leads in this status. |
| sort_by | string | Attribute to sort by. |
| tag_ids | array | Only leads with these tag ids. |
| page_size | integer | Records per page. |
| customer_id | string | Only this customer's leads. |
| lead_source | array | Only leads from these lead sources. |
| employee_ids | array | Only records assigned to these employee ids. |
| location_ids | array | Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set). |
List or search the price book's services — name, task number, price and cost (cents), taxable and online-booking flags; optionally with their materials and labor rates. Housecall Pro: GET /api/price_book/services.
| Argument | Type | Description |
|---|---|---|
| q | string | Search by name, description or task number. |
| page | integer | Page number, starting at 1. |
| expand | array | Populate these nested lists (empty by default). |
| sort_by | string | Service attribute to sort by. |
| page_size | integer | Records per page. |
| sort_direction | string | Sort direction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"description": "Search by name, description or task number."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"expand": {
"type": "array",
"items": {
"enum": [
"service_materials",
"service_labor_rates"
],
"type": "string"
},
"description": "Populate these nested lists (empty by default)."
},
"sort_by": {
"type": "string",
"description": "Service attribute to sort by."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Records per page."
},
"sort_direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
}
}
}List the tags defined in the company. Housecall Pro: GET /tags.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort_by | string | Attribute to sort by. |
| page_size | integer | Records per page. |
| sort_direction | string | Sort direction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort_by": {
"enum": [
"created_at",
"name"
],
"type": "string",
"description": "Attribute to sort by."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Records per page."
},
"sort_direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
}
}
}Change a customer's name, contact details, tags, lead source, notes or notification setting. Only the fields you pass are sent. Housecall Pro: PUT /customers/{customer_id}.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tag names. |
| string | ||
| notes | string | |
| company | string | The customer's company name. |
| last_name | string | |
| first_name | string | |
| customer_id* | string | The customer id. |
| home_number | string | |
| lead_source | string | |
| work_number | string | |
| mobile_number |
Set or change a job's scheduled start/end and arrival window, optionally dispatching employees and notifying the customer and/or the pro. Jobs with more than one appointment (multi-day) cannot be rescheduled here. Housecall Pro: PUT /jobs/{job_id}/schedule.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job id. |
| notify | boolean | Notify the customer of the new schedule. |
| end_time | string | ISO-8601 end time. |
| notify_pro | boolean | Notify the assigned employee(s). |
| start_time* | string | ISO-8601 start time. |
| dispatched_employee_ids | array | Employees to dispatch to the job. |
| arrival_window_in_minutes | integer | Arrival window in minutes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id",
"start_time"
],
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id."
},
"notify": {
"type": "boolean",
"description": "Notify the customer of the new schedule."
},
"end_time": {
"type": "string",
"description": "ISO-8601 end time."
},
"notify_pro": {
"type": "boolean",
"description": "Notify the assigned employee(s)."
},
"start_time": {
"type": "string",
"minLength": 1,
"description": "ISO-8601 start time."
},
"dispatched_employee_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Employees to dispatch to the job."
},
"arrival_window_in_minutes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Arrival window in minutes."
}
}
}| integer |
| Must be unique across the company's estimates; auto-assigned if omitted. |
| business_unit_id | string |
| assigned_employee_ids | array |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"note": {
"type": "string"
},
"address": {
"type": "object",
"properties": {
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"street": {
"type": "string"
},
"country": {
"type": "string"
},
"street_line_2": {
"type": "string"
}
},
"description": "A new address, if no address_id."
},
"message": {
"type": "string",
"description": "Message to the customer."
},
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Option name, e.g. 'Standard repair'."
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Line item name."
},
"quantity": {
"type": "number",
"description": "Quantity; up to two decimal places."
},
"unit_cost": {
"type": "number",
"description": "Direct cost of one unit to the company, in CENTS (job costing)."
},
"unit_price": {
"type": "number",
"description": "Selling price of one unit, in CENTS."
},
"description": {
"type": "string"
}
}
}
}
}
},
"description": "The estimate's options."
},
"schedule": {
"type": "object",
"properties": {
"end_time": {
"type": "string",
"description": "ISO-8601 end."
},
"start_time": {
"type": "string",
"description": "ISO-8601 start."
},
"notify_customer": {
"type": "boolean"
},
"arrival_window_in_minutes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
}
},
"description": "When the estimate visit is scheduled."
},
"address_id": {
"type": "string",
"description": "An existing address of the customer."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "The customer id."
},
"job_type_id": {
"type": "string",
"description": "From housecall_list_job_types."
},
"lead_source": {
"type": "string"
},
"estimate_number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Must be unique across the company's estimates; auto-assigned if omitted."
},
"business_unit_id": {
"type": "string"
},
"assigned_employee_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
}| string |
| assigned_employee_ids | array | Employees to assign. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id",
"address_id"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag names."
},
"notes": {
"type": "string"
},
"schedule": {
"type": "object",
"properties": {
"anytime": {
"type": "boolean",
"description": "Schedule for any time during the day."
},
"scheduled_end": {
"type": "string",
"description": "ISO-8601 end."
},
"arrival_window": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Arrival window in minutes."
},
"scheduled_start": {
"type": "string",
"description": "ISO-8601 start, e.g. 2026-03-23T15:30:00."
},
"anytime_start_date": {
"type": "string",
"description": "YYYY-MM-DD; required when anytime is true."
}
}
},
"address_id": {
"type": "string",
"minLength": 1,
"description": "The customer address id."
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Line item name."
},
"quantity": {
"type": "number",
"description": "Quantity; up to two decimal places."
},
"unit_cost": {
"type": "number",
"description": "Direct cost of one unit to the company, in CENTS (job costing)."
},
"unit_price": {
"type": "number",
"description": "Selling price of one unit, in CENTS."
},
"description": {
"type": "string"
}
}
}
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "The customer id."
},
"job_type_id": {
"type": "string",
"description": "From housecall_list_job_types."
},
"lead_source": {
"type": "string"
},
"invoice_number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Must be unique across the company's jobs; auto-assigned if omitted."
},
"business_unit_id": {
"type": "string"
},
"assigned_employee_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Employees to assign."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"note": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"address": {
"type": "object",
"properties": {
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"street": {
"type": "string"
},
"country": {
"type": "string"
},
"street_line_2": {
"type": "string"
}
},
"description": "A new address, if no address_id."
},
"customer": {
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"email": {
"type": "string"
},
"notes": {
"type": "string"
},
"company": {
"type": "string"
},
"addresses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"street": {
"type": "string"
},
"country": {
"type": "string"
},
"street_line_2": {
"type": "string"
}
}
}
},
"last_name": {
"type": "string"
},
"first_name": {
"type": "string"
},
"home_number": {
"type": "string"
},
"lead_source": {
"type": "string"
},
"work_number": {
"type": "string"
},
"mobile_number": {
"type": "string"
},
"notifications_enabled": {
"type": "boolean"
}
},
"description": "A new customer to create with the lead. Give this or `customer_id`."
},
"address_id": {
"type": "string",
"description": "An existing address of the customer."
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"kind": {
"enum": [
"labor",
"materials",
"fixed discount",
"percent discount"
],
"type": "string",
"description": "Line item kind."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Line item name."
},
"quantity": {
"type": "number",
"description": "Quantity; up to two decimal places."
},
"unit_cost": {
"type": "number",
"description": "Direct cost of one unit to the company, in CENTS (job costing)."
},
"unit_price": {
"type": "number",
"description": "Selling price of one unit, in CENTS."
},
"description": {
"type": "string"
}
}
}
},
"customer_id": {
"type": "string",
"description": "An existing customer. Give this or `customer`."
},
"lead_source": {
"type": "string"
},
"assigned_employee_id": {
"type": "string"
}
}
}| scheduled_end_min | string | Only estimates ending at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| scheduled_start_max | string | Only estimates starting at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| scheduled_start_min | string | Only estimates starting at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort_by": {
"enum": [
"created_at",
"updated_at",
"id"
],
"type": "string",
"description": "Attribute to sort by."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Records per page."
},
"customer_id": {
"type": "string",
"description": "Only this customer's estimates."
},
"work_status": {
"type": "array",
"items": {
"enum": [
"unscheduled",
"scheduled",
"in_progress",
"completed",
"canceled"
],
"type": "string"
},
"description": "Only these work statuses. All statuses if omitted."
},
"employee_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only records assigned to these employee ids."
},
"location_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set)."
},
"sort_direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"scheduled_end_max": {
"type": "string",
"description": "Only estimates ending at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"scheduled_end_min": {
"type": "string",
"description": "Only estimates ending at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"scheduled_start_max": {
"type": "string",
"description": "Only estimates starting at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"scheduled_start_min": {
"type": "string",
"description": "Only estimates starting at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
}
}
}| customer_uuid | array | Only these customers' invoices. |
| created_at_max | string | Created at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| created_at_min | string | Created at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| sort_direction | string | Sort direction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"status": {
"type": "array",
"items": {
"enum": [
"open",
"pending_payment",
"paid",
"voided",
"uncollectible",
"canceled"
],
"type": "string"
},
"description": "Only these statuses."
},
"sort_by": {
"enum": [
"amount",
"created_at",
"due_amount",
"due_at",
"invoice_number",
"paid_at",
"sent_at",
"status",
"updated_at"
],
"type": "string",
"description": "Attribute to sort by."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Records per page."
},
"due_at_max": {
"type": "string",
"description": "Due at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"due_at_min": {
"type": "string",
"description": "Due at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"paid_at_max": {
"type": "string",
"description": "Paid at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"paid_at_min": {
"type": "string",
"description": "Paid at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"location_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set)."
},
"customer_uuid": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only these customers' invoices."
},
"created_at_max": {
"type": "string",
"description": "Created at or before (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"created_at_min": {
"type": "string",
"description": "Created at or after (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"sort_direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
}
}
}| scheduled_end_max | string | Only jobs ending at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| scheduled_end_min | string | Only jobs ending at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| scheduled_start_max | string | Only jobs starting at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
| scheduled_start_min | string | Only jobs starting at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"expand": {
"type": "array",
"items": {
"enum": [
"attachments",
"appointments"
],
"type": "string"
},
"description": "Extras to include."
},
"sort_by": {
"enum": [
"created_at",
"updated_at",
"invoice_number",
"id",
"description",
"work_status"
],
"type": "string",
"description": "Attribute to sort by."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Records per page."
},
"customer_id": {
"type": "string",
"description": "Only this customer's jobs."
},
"work_status": {
"type": "array",
"items": {
"enum": [
"unscheduled",
"scheduled",
"in_progress",
"completed",
"canceled"
],
"type": "string"
},
"description": "Only these work statuses. All statuses if omitted."
},
"employee_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only records assigned to these employee ids."
},
"location_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set)."
},
"sort_direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"scheduled_end_max": {
"type": "string",
"description": "Only jobs ending at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"scheduled_end_min": {
"type": "string",
"description": "Only jobs ending at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"scheduled_start_max": {
"type": "string",
"description": "Only jobs starting at or before this time (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
},
"scheduled_start_min": {
"type": "string",
"description": "Only jobs starting at or after this time (ISO-8601, e.g. 2026-03-23T15:30:00Z)."
}
}
}| sort_direction |
| string |
| Sort direction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"status": {
"enum": [
"open",
"won",
"lost"
],
"type": "string",
"description": "Only leads in this status."
},
"sort_by": {
"enum": [
"created_at",
"updated_at",
"id",
"status"
],
"type": "string",
"description": "Attribute to sort by."
},
"tag_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only leads with these tag ids."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Records per page."
},
"customer_id": {
"type": "string",
"description": "Only this customer's leads."
},
"lead_source": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only leads from these lead sources."
},
"employee_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only records assigned to these employee ids."
},
"location_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multi-location accounts: only these location ids (ignored when HOUSECALL_PRO_COMPANY_ID is set)."
},
"sort_direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
}
}
}| string |
| notifications_enabled | boolean | Whether the customer receives notifications. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag names."
},
"email": {
"type": "string"
},
"notes": {
"type": "string"
},
"company": {
"type": "string",
"description": "The customer's company name."
},
"last_name": {
"type": "string"
},
"first_name": {
"type": "string"
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "The customer id."
},
"home_number": {
"type": "string"
},
"lead_source": {
"type": "string"
},
"work_number": {
"type": "string"
},
"mobile_number": {
"type": "string"
},
"notifications_enabled": {
"type": "boolean",
"description": "Whether the customer receives notifications."
}
}
}