Getting Started
The Houzz Pro API gives verified partners programmatic access to the data and workflows that pros use every day — projects, leads, contacts, tasks, scheduling, files, and more.
It is a REST API over HTTPS that speaks JSON. Every request is
authenticated with an OAuth 2.0 Bearer token, every list is paged with
limit/offset, and every error uses a single predictable envelope.
Base URL
The Houzz Pro API is served from a single production base URL:
https://pro-api.houzz.com/api.
All endpoints are versioned and prefixed with /v1 — for example,
https://pro-api.houzz.com/api/v1/projects.
The base URL ends in /api, but the OAuth audience you request a token for is
https://pro-api.houzz.com — without it. The audience identifies the API; the base
URL is the address you call.
Quickstart
Get your first successful API call in three steps.
1. Get credentials
Partner integrations authenticate with a service account — a
client_id and client_secret scoped to a single Houzz Pro company. Service
accounts are provisioned by Houzz; there is no self-serve signup yet.
To request access, contact your Houzz representative. You will receive a
client_id, a client_secret, and the set of scopes granted to your account.
Add the help-article link for requesting API access.
See Authentication for the full credential and token model.
2. Get an access token
Exchange your credentials for a short-lived access token at the Houzz token endpoint. Request only the scopes you need.
curl --request POST \
--url https://auth.houzz.com/oauth/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data client_id=YOUR_CLIENT_ID \
--data client_secret=YOUR_CLIENT_SECRET \
--data audience=https://pro-api.houzz.com \
--data 'scope=read:projects'
The response contains an access_token you send as a Bearer credential:
{
"access_token": "eyJhbGciOi...",
"token_type": "Bearer",
"expires_in": 86400,
"scope": "read:projects"
}
3. Make your first call
Send the token in the Authorization header to list projects:
curl --request GET \
--url https://pro-api.houzz.com/api/v1/projects \
--header 'Authorization: Bearer eyJhbGciOi...'
A list response wraps results in a pagination envelope:
{
"data": [
{
"id": 12345,
"name": "Maple Street Remodel",
"status": { "id": 1, "name": "In Progress" },
"client": { "id": 987, "name": "Jordan Rivera" }
}
],
"limit": 20,
"offset": 0,
"total": 1
}
That's it — you have made an authenticated Houzz Pro API call.
End-to-end example
The two steps chained together: request a token, then use it to list projects.
# 1. Request an access token and extract it.
ACCESS_TOKEN=$(curl --silent --request POST \
--url https://auth.houzz.com/oauth/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data client_id=YOUR_CLIENT_ID \
--data client_secret=YOUR_CLIENT_SECRET \
--data audience=https://pro-api.houzz.com \
--data 'scope=read:projects' \
| python3 -c 'import sys, json; print(json.load(sys.stdin)["access_token"])')
# 2. Call the API with the token.
curl --request GET \
--url https://pro-api.houzz.com/api/v1/projects \
--header "Authorization: Bearer ${ACCESS_TOKEN}"
Next steps
- Authentication — the full OAuth 2.0 client-credentials flow, token lifetime, and 401 vs 403.
- API Reference — every endpoint, parameter, and schema.
- Scopes — the complete permission catalog.
- Pagination — paging through list endpoints.
- Errors — the error envelope and status codes.
- Webhooks — subscribe to real-time events.