Documentation Index
Fetch the complete documentation index at: https://docs.homelogs.io/llms.txt
Use this file to discover all available pages before exploring further.
What you’ll build
A basic flow that takes user text like Seattle and returns:
- a stable
geo_id
- current permits for that geo
- permit-scoped leads and stats for that geo
- active geo-scoped signals for that geo
For a complete signal list and timing guide, see Signals Catalog.
Prerequisites
0. Set environment variables
export BASE_URL="https://api.homelogs.io"
export API_KEY="YOUR_API_KEY"
curl -sS -G "$BASE_URL/v1/locations/resolve" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "query=Seattle" \
--data-urlencode "state=WA" \
--data-urlencode "limit=5"
Pick one candidates[].geo_id.
For permit-scoped signals, pick a non-property geo_id such as a city, county, zip, jurisdiction, or state.
2. Fetch permits for that geo
export GEO_ID="<paste candidates[0].geo_id>"
curl -sS -G "$BASE_URL/v1/permits/search" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "geo_id=$GEO_ID" \
--data-urlencode "limit=25" \
--data-urlencode "sort=desc"
If next_cursor is not null, request the next page:
curl -sS -G "$BASE_URL/v1/permits/search" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "geo_id=$GEO_ID" \
--data-urlencode "limit=25" \
--data-urlencode "cursor=CURSOR_TOKEN"
3. Fetch permit-scoped leads for that geo
Use the same geo_id for permit signal reads.
curl -sS -G "$BASE_URL/v1/signals/permit/leads" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "geo_id=$GEO_ID" \
--data-urlencode "signal_keys=site_prep_issued_nowcast,new_construction_issued_nowcast" \
--data-urlencode "limit=25"
By default, permit leads return only rows inside the freshness window. Add include_stale=true to include older rows.
4. Fetch permit-scoped stats for that geo
curl -sS -G "$BASE_URL/v1/signals/permit/stats" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "geo_id=$GEO_ID" \
--data-urlencode "signal_keys=framing_nowcast_early,rough_in_nowcast_early"
If you want the more conservative timing variants, swap in:
framing_window_late
rough_in_window_late
5. Fetch active geo-scoped signals for that geo
curl -sS -G "$BASE_URL/v1/signals/geo/location/$GEO_ID" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "signal_keys=roofing_activity_hotspot,hvac_activity_hotspot"
6. Search geo-scoped signals across a state
curl -sS -G "$BASE_URL/v1/signals/geo/search" \
-H "X-API-Key: $API_KEY" \
--data-urlencode "state=WA" \
--data-urlencode "geo_type=city" \
--data-urlencode "signal_keys=roofing_activity_hotspot" \
--data-urlencode "decision=positive" \
--data-urlencode "min_score=0.5" \
--data-urlencode "limit=25"
Common first-run issues
403: missing/invalid API key
422: invalid query format, unsupported permit-scoped geo type, or bad cursor
404: valid request but no matching resource
See Troubleshooting.
Want more detail on signal fields and scoring behavior? See Signals Catalog and Signals & Methodology.