canonical: https://jentic.com/apis/houzz.com/houzz

# Houzz Pro API v1

The Houzz Pro API gives verified partners access to the records remodelers, builders, and designers run their business on in Houzz Pro: projects, leads, contacts, tasks, milestones, daily logs, punchlists, files, vendors, subcontractors, and team members. A lead moves through phases and converts into a project with one call, and each project carries its own milestones, tasks, punchlist, and notes. Custom fields, entity assignments, and webhook subscriptions let an integration extend records, assign work to people, and react to changes, with list endpoints paged by limit (up to 300) and offset.

## For AI agents

Create and track Houzz Pro leads, convert them to projects, and manage project tasks, milestones, daily logs, files, contacts, and vendors for a contracting business.

## Scope

Does not handle homeowner design browsing, product shopping, or payment processing. Use for running a contractor's Houzz Pro leads, projects, tasks, and records only.

## Capabilities

- Capture a lead, move it through lead phases with updatePhase, and convert it into a project
- Add tasks and milestones to a project or lead, mark tasks done, and read a project's punchlist
- Record daily logs against a project with content, logDate, and logEndDate
- Upload, copy, move, archive, and organise files in folders for a project or lead context
- Keep contacts, contact groups, vendors, and subcontractors current, including vendor archive and unarchive
- Assign projects, leads, or tasks to team members and list who is assigned
- Subscribe a webhook url to Houzz Pro triggers and set custom field values on records

## Use cases

### Agent-run job admin for contractors

A remodeling contractor's AI agent turns a site visit summary into Houzz Pro records. Through Jentic it finds the project task and daily log operations by intent, writes a daily log for the day's work, and adds follow-up tasks to the same project, while a rule keeps it to those operations so it cannot delete projects or team members.

Example prompt: Call POST `/v1/daily-logs` with projectId and content describing today's framing work, then POST `/v1/projects/{projectId}/tasks` with title set to 'Order drywall' and a dueDate

### Lead intake to project conversion

Inquiries from a website or ad form need to land in Houzz Pro without retyping. The lead operations create a lead with a contactId, budget, and source, move it through the lead phases listed by the lead-phases endpoint, and convert it to a project when the client signs, keeping the history together.

Example prompt: Call POST `/v1/contacts` with name set to the client's name, POST `/v1/leads` with that contactId and a budget, then POST `/v1/leads/{id}/convertToProject` once the client signs

### Project schedule and punchlist tracking

A project manager wants a weekly view of what is due. Milestones carry startDate and dueDate per project, tasks carry dueDate and done, and the punchlist endpoint returns the closing items for a project, so an agent can compile a status report or flag overdue work.

Example prompt: Call GET `/v1/projects/{projectId}/milestones` and GET `/v1/projects/{projectId}/tasks`, then list items whose dueDate falls in the next 7 days

### Syncing vendors and files with back-office tools

Purchasing and document work often lives in other systems. The vendor operations hold companyName, defaultPaymentTerms, and chargesTax for suppliers, and the file operations upload, move, and archive documents within a project context, so a sync job can keep supplier lists and plans in step.

Example prompt: Call GET `/v1/vendors` with companyName set to the supplier's name, and if none is found POST `/v1/vendors` with companyName and defaultPaymentTerms

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v1/leads` | Create a lead |
| POST | `/v1/leads/{id}/convertToProject` | Convert a lead to a project |
| GET | `/v1/projects` | List projects |
| POST | `/v1/projects/{projectId}/tasks` | Create a project task |
| POST | `/v1/projects/{projectId}/milestones` | Create a project milestone |
| POST | `/v1/daily-logs` | Create a daily log |
| POST | `/v1/files/upload` | Upload a file |
| POST | `/v1/webhookSubscriptions` | Create a webhook subscription |

## Key resources

- **Projects** — Projects with statuses and types, plus their milestones, tasks, punchlist, and notes
- **Leads** — Leads with phases, retire and reactivate, and conversion to a project
- **Daily logs and files** — Daily site logs and project or lead files with folders, copy, move, and archive
- **People** — Contacts, contact groups, team members, subcontractors, vendors, and entity assignments
- **Extensibility** — Custom field definitions and entries, webhook subscriptions, and webhook triggers

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 54 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 49 / 100
  - Developer Experience & Jentic Compatibility: 63 / 100
  - AI-Readiness & Agent Experience: 33 / 100
  - Agent Usability: 84 / 100
  - Security: 85 / 100
  - AI Discoverability: 65 / 100
- **View full report:** https://jentic.com/apis/houzz.com/houzz/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Houzz Pro by hand means running the OAuth 2.0 client credentials exchange, requesting the right per-operation scopes such as write:projects or admin:leads, and paging list calls with limit and offset. Through Jentic you install once, import Houzz Pro from the API Directory, store the client credentials once, and your agent calls it.
- **Permission scoping:** Houzz Pro puts the project id in the URL path for tasks, milestones, notes, and the punchlist (`/v1/projects/{projectId}/...`), so a rule can pin your agent to one project and the operations you pick. You choose the operations it may call, so destructive ones like project deletion or team member removal are not included unless you add them.
- **Credential handling:** Your Houzz Pro client credentials are stored once, encrypted, by your own Jentic One instance and used to fetch tokens at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'convert a lead to a project' or 'log site work', and Jentic returns the matching Houzz Pro operation with its input schema so the agent sends the right projectId and fields without browsing the reference docs.

## Related APIs

- **Procore API** — Construction project management with RFIs, submittals, change orders, and daily logs
- **CompanyCam API** — Job-site photo documentation for construction crews

## FAQ

### What authentication does the Houzz Pro API use?

Per its OpenAPI spec, the Houzz Pro API uses OAuth 2.0 with the client credentials flow: you exchange your client id and secret at the auth.houzz.com token endpoint for a bearer token. Tokens are issued per scope such as read:projects, write:leads, or admin:projects, and each operation lists the scope it requires. Through Jentic the client credentials are stored by your own instance, which handles the token exchange at call time.

### Can I convert a lead into a project with the Houzz Pro API?

Yes. POST `/v1/leads/{id}/convertToProject` turns a lead into a project and requires both the write:projects and write:leads scopes. Before that, POST `/v1/leads/{id}/updatePhase` moves the lead to a phaseId from GET `/v1/lead-phases`, and retire or reactivate change whether the lead is active.

### What are the rate limits for the Houzz Pro API?

The OpenAPI spec does not specify rate limits. Check https://developer.houzz.com for current limits; list endpoints page with limit and offset, so large exports should page rather than repeat full reads.

### Is there a Houzz Pro MCP server?

You don't need an MCP server to give your agent Houzz Pro. Jentic connects it directly from the API Directory: import it, store your client credentials once, and your agent calls the lead, project, and task operations it needs, discovered on demand rather than loaded into its context up front.

### How do I add a task to a project through Jentic?

Search Jentic for 'add a task to a Houzz Pro project', load POST `/v1/projects/{projectId}/tasks`, and pass a title with an optional dueDate and milestoneId. The token is attached by your instance. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the Houzz Pro API?

Yes. For example, allow only the task list and task create operations under `/v1/projects/123/tasks` plus POST `/v1/daily-logs`, and the agent can plan work and log site days for that one job but cannot delete leads, remove team members, or touch other projects, and every call it makes is logged.

### Can I get notified when Houzz Pro records change?

Yes. GET `/v1/webhookTriggers` lists the available triggers, and POST `/v1/webhookSubscriptions` registers a url with the triggers you want, optional headers, and a maxAttempts retry setting. Subscriptions can be paused or edited later with PATCH `/v1/webhookSubscriptions/{id}.`
