{"endpoints":[{"id":1023,"name":"Address Autocomplete","order":1,"identifier":"auto_complete","credits":0,"url":"https://developers.homesage.ai/api/properties/auto-complete/","method":"GET","description":"\n        <p>Search for property addresses with typeahead autocomplete suggestions. Returns matching address suggestions for a partial address string — ideal for building address search UIs.</p>\n        <p><strong>Credit Cost:</strong> Free (0 credits)</p>\n        <h4>Notes:</h4>\n        <ul>\n            <li>Minimum input length is 2 characters</li>\n            <li>Case insensitive — \"dubuque\" and \"DUBUQUE\" return the same results</li>\n            <li>Requires street-level input — city names, state abbreviations, or ZIP codes alone return empty results</li>\n            <li>All apartment/unit formats supported: #38, Apt 38, Unit 38</li>\n        </ul>\n        "},{"id":3,"name":"Property Info","order":2,"identifier":"info","credits":2,"url":"https://developers.homesage.ai/api/properties/info/","method":"GET","description":"\n        <p>Comprehensive property information including listing details, valuation, features, history, and school ratings. This is the primary property data endpoint.</p>\n        <p><strong>Credit Cost:</strong> 2 credits per request</p>\n        <h4>Response includes:</h4>\n        <ul>\n            <li>Address, coordinates, listing status and price</li>\n            <li>Square footage, price per sqft, days on market</li>\n            <li>Property features (beds, baths, stories)</li>\n            <li>Building info, lot, parking, utilities</li>\n            <li>Property history, school ratings</li>\n        </ul>\n        <p><strong>Note:</strong> Address format is flexible — commas, periods, and case variations all accepted.</p>\n        <p><em>Some fields may be null when source data is incomplete: <code>listing_price</code> is null unless the property is for sale; <code>estimated_value</code> is null when no AVM has been computed; numeric fields under <code>property_features</code> may be null per-property.</em></p>\n        "},{"id":1024,"name":"Updated Property Info","order":3,"identifier":"updated_info","credits":1,"url":"https://developers.homesage.ai/api/properties/updated-info/","method":"GET","description":"\n        <p>Always-fresh property information. Same schema as Property Info but fetches the latest valuation data. Recommended over Property Info for most use cases — cheaper (1 credit vs 2) and returns a fresher estimated value.</p>\n        <p><strong>Credit Cost:</strong> 1 credit per request</p>\n        <p><strong>Tip:</strong> Calling this endpoint refreshes the cache that Property Info reads from. Call Updated Info first to ensure subsequent Property Info calls return fresh data.</p>\n        <p><em>Same response schema as Property Info. Some fields may be null when source data is incomplete.</em></p>\n        "},{"id":27,"name":"Property Search (Bulk)","order":4,"identifier":"bulk_property_info","credits":10,"url":"https://developers.homesage.ai/api/properties/bulk-info/","method":"GET","description":"\n        <p>Search for properties by location with optional filters. Returns a paginated list of properties matching your criteria. This is a location-based search endpoint, not a batch address lookup.</p>\n        <p><strong>Credit Cost:</strong> 10 credits per search (regardless of result count)</p>\n        <h4>Supported filters:</h4>\n        <ul>\n            <li>Location: city, state, zip (at least one required)</li>\n            <li>Price: price_min, price_max</li>\n            <li>Features: beds_min, baths_min</li>\n            <li>Type: property_type, property_status</li>\n        </ul>\n        <p><strong>Note:</strong> Use <code>page_size</code> to control results per page (default: 10, max: 100) and <code>page</code> for pagination.</p>\n        <p><em>All 36 per-property fields are always present. Several may be <code>null</code> when underlying data has not been computed: <code>avm</code>, <code>avm_low</code>, <code>avm_high</code>, <code>avm_confidence</code>, <code>avm_disagreement</code> (computed by the comps refresh job), and <code>final_property_condition</code>, <code>is_tlc</code>, <code>neighborhood</code> (depend on per-property data availability).</em></p>\n        "},{"id":1000,"name":"Square Footage Per Floor","order":5,"identifier":"sqft_per_floor","credits":1,"url":"https://developers.homesage.ai/api/properties/sqft-per-floor/","method":"GET","description":"\n        <p>AI-powered square footage breakdown by floor. Uses a 7-stage analysis to determine per-floor square footage distribution.</p>\n        <p><strong>Credit Cost:</strong> 1 credit per request</p>\n        <p><strong>Note:</strong> Use a 45-second timeout for this endpoint.</p>\n        "},{"id":1005,"name":"Current Property Estimate","order":6,"identifier":"current_estimate","credits":2,"url":"https://developers.homesage.ai/api/properties/current-estimate/","method":"GET","description":"\n        <p>Current property value estimate powered by our valuation engine.</p>\n        <p><strong>Credit Cost:</strong> 2 credits per request</p>\n        "},{"id":2,"name":"Investment Potential","order":7,"identifier":"investment_potential","credits":3,"url":"https://developers.homesage.ai/api/properties/investment_potential/","method":"GET","description":"\n        <p>Investment potential score for a property.</p>\n        <p><strong>Credit Cost:</strong> 3 credits per request</p>\n        "},{"id":1,"name":"Price Flexibility Score (PFS)","order":8,"identifier":"pfs","credits":2,"url":"https://developers.homesage.ai/api/properties/pfs/","method":"GET","description":"\n        <p>Price Flexibility Score (PFS) — a composite score indicating how flexible the listing price is. Lower scores suggest the seller may be more open to price negotiation.</p>\n        <p><strong>Credit Cost:</strong> 2 credits per request</p>\n        "},{"id":6,"name":"Home Value History","order":9,"identifier":"home_value_graph","credits":1,"url":"https://developers.homesage.ai/api/properties/home_value_graph/","method":"GET","description":"\n        <p>Historical home value data points for charting. Returns monthly value estimates in reverse-chronological order (most recent first).</p>\n        <p><strong>Credit Cost:</strong> 1 credit per request</p>\n        <p><strong>Note:</strong> Data points are returned most-recent-first. Sort client-side if you need chronological order.</p>\n        "},{"id":5,"name":"Flip Return Analysis","order":10,"identifier":"flip_return","credits":3,"url":"https://developers.homesage.ai/api/properties/flip_return/","method":"GET","description":"\n        <p>Flip/resale return analysis including total project cost, profit, ROI, and maximum recommended renovation budget.</p>\n        <p><strong>Credit Cost:</strong> 3 credits per request</p>\n        <p><strong>Note:</strong> Requires property size (sqft) and price data in the database. Returns 400 for properties missing this data.</p>\n        "},{"id":4,"name":"Renovation Return","order":11,"identifier":"renovation_return","credits":3,"url":"https://developers.homesage.ai/api/properties/renovation_return/","method":"GET","description":"\n        <p>Rental income projections including daily/monthly/annual gross and net income, IRR, cap rate, NOI, and cash-on-cash return.</p>\n        <p><strong>Credit Cost:</strong> 3 credits per request</p>\n        <p><strong>Note:</strong> Requires property size (sqft) data. Returns 400 for properties without sqft in the database.</p>\n        "},{"id":12,"name":"Renovation Cost Estimate","order":12,"identifier":"renovation_cost","credits":5,"url":"https://developers.homesage.ai/api/properties/renovation/cost/","method":"GET","description":"\n        <p>Quick renovation cost estimate with value gap analysis. For detailed room-by-room breakdown, use the Renovation Cost Breakdown (POST) endpoint instead.</p>\n        <p><strong>Credit Cost:</strong> 5 credits per request</p>\n        "},{"id":9,"name":"Needs TLC Check","order":13,"identifier":"tlc","credits":1,"url":"https://developers.homesage.ai/api/properties/tlc/","method":"GET","description":"\n        <p>Quick check whether a property needs TLC (Tender Loving Care). Returns a simple boolean indicator.</p>\n        <p><strong>Credit Cost:</strong> 1 credit per request</p>\n        "},{"id":10,"name":"Long-Term Rental Analysis","order":14,"identifier":"rental_long_term","credits":5,"url":"https://developers.homesage.ai/api/properties/rental/long_term/","method":"GET","description":"\n        <p>Long-term rental income projections including daily/monthly/annual gross and net income, IRR, cap rate, NOI, and cash-on-cash return.</p>\n        <p><strong>Credit Cost:</strong> 5 credits per request</p>\n        <p><strong>Note:</strong> Requires property size (sqft) and price data.</p>\n        "},{"id":11,"name":"Short-Term Rental Analysis","order":15,"identifier":"rental_short_term","credits":5,"url":"https://developers.homesage.ai/api/properties/rental/short_term/","method":"GET","description":"\n        <p>Short-term (Airbnb-style) rental income projections including daily/monthly/annual revenue, cap rate, NOI, and cash flow.</p>\n        <p><strong>Credit Cost:</strong> 5 credits per request</p>\n        "},{"id":14,"name":"Property Condition","order":16,"identifier":"property_condition","credits":2,"url":"https://developers.homesage.ai/api/properties/property-condition/","method":"GET","description":"\n        <p>AI-powered property condition assessment. Returns a condition label based on database analysis using ResNet50 and LLM models.</p>\n        <p><strong>Credit Cost:</strong> 2 credits per request</p>\n        <p><strong>Condition values:</strong> Excellent, Good, Outdated, Poor, Very Poor, Unpredictable</p>\n        "},{"id":999,"name":"Property Condition with Custom Photos","order":17,"identifier":"property_condition_custom_photos","credits":3,"url":"https://developers.homesage.ai/api/properties/property-condition-custom-photos/","method":"POST","description":"\n        <p>Advanced property condition analysis using custom photos. Combines database lookup with Gemini AI vision analysis of your property images for a more accurate assessment.</p>\n        <p><strong>Credit Cost:</strong> 3 credits per request</p>\n        <p><strong>Supports both GET and POST.</strong></p>\n        <h4>Input modes:</h4>\n        <ul>\n            <li><strong>Address only:</strong> Database lookup (same as Property Condition endpoint)</li>\n            <li><strong>Image URLs:</strong> Pass image_urls parameter with comma-separated URLs (up to 25)</li>\n            <li><strong>File upload:</strong> POST multipart/form-data with images field (up to 15 files)</li>\n            <li><strong>Combined:</strong> Address + images for the most accurate result</li>\n        </ul>\n        "},{"id":15,"name":"Comparable Properties (Comps)","order":18,"identifier":"comps","credits":5,"url":"https://developers.homesage.ai/api/properties/comps/","method":"GET","description":"\n        <p>Find comparable recently sold properties for valuation analysis. Returns up to 5 comparable properties with adjusted prices and confidence scores.</p>\n        <p><strong>Credit Cost:</strong> 5 credits per request</p>\n        <p><strong>Note:</strong> ARV (After Repair Value) may be null in non-disclosure states where sale prices are not publicly recorded.</p>\n        "},{"id":1025,"name":"Market Outlook","order":19,"identifier":"market_outlook","credits":2,"url":"https://developers.homesage.ai/api/properties/market-outlook/","method":"GET","description":"\n        <p>Local market outlook and trends for a ZIP code area. Returns market health indicators including outlook score, forecast bars, market velocity metrics, and source breakdown.</p>\n        <p><strong>Credit Cost:</strong> 2 credits per request</p>\n        <h4>Response shape notes</h4>\n        <p>When upstream data sources are unavailable for a ZIP code, optional sections may be omitted from the response: <code>outlook_score</code>, <code>forecast_bars</code>, <code>market_velocity</code>, <code>micro_stats</code>, and <code>source_breakdown</code>.</p>\n        <p>The fields <code>zip_code</code>, <code>metro_name</code>, <code>timestamp</code>, <code>weights_used</code>, and <code>credits_charged</code> are always present.</p>\n        <p>Note: <code>micro_stats.absorption_rate_pct</code> and <code>source_breakdown.internal.absorption_rate</code> express the same metric under different field names — this is a known inconsistency in the upstream data structure.</p>\n        "},{"id":1019,"name":"Solar & Roof Analysis","order":20,"identifier":"solar_analysis","credits":4,"url":"https://developers.homesage.ai/api/solar/analysis/","method":"GET","description":"\n        <p>Comprehensive solar potential and AI-powered roof condition analysis. Returns panel recommendations, energy projections, cost savings, federal incentives, and roof condition assessment.</p>\n        <p><strong>Credit Cost:</strong> 4 credits per request</p>\n        <p><strong>Important:</strong> Use a 90-second client timeout. Cache responses — this is an expensive, slow endpoint.</p>\n        <h4>Response shape notes</h4>\n        <p>The response shape varies based on optional query parameters:</p>\n        <ul>\n            <li><code>?detailed=true</code> — adds the raw <code>solar_potential.data</code> blob and includes both <code>roof_image_url</code> and <code>roof_image_base64</code> in <code>roof_condition.imagery</code></li>\n            <li><code>?agent=false</code> — sets <code>roof_condition.analysis</code> to <code>null</code> (skips the AI roof analysis)</li>\n        </ul>\n        <p>If S3 image upload fails, <code>roof_condition.imagery</code> contains <code>roof_image_base64</code> (raw base64 PNG) instead of <code>roof_image_url</code>. Individual entries in <code>solar_layers</code> may be missing if a particular Google data layer was unavailable for the address.</p>\n        "},{"id":13,"name":"Full Property Report","order":21,"identifier":"full_report","credits":15,"url":"https://developers.homesage.ai/api/properties/full-report/","method":"GET","description":"\n        <p>The most comprehensive property analysis endpoint. Aggregates data from 11 internal sources into a single response with 292 data fields. Costs 15 credits — 25% cheaper than calling individual endpoints separately (~20 credits).</p>\n        <p><strong>Credit Cost:</strong> 15 credits per request</p>\n        <h4>Includes:</h4>\n        <ul>\n            <li>Property photos (exclusive to this endpoint)</li>\n            <li>Property info, valuation, condition</li>\n            <li>Investment potential, flip/resale analysis</li>\n            <li>Rental projections, renovation cost</li>\n            <li>Home value history, school ratings, local data</li>\n            <li>Comparable properties</li>\n        </ul>\n        <h4>Does NOT include:</h4>\n        <ul>\n            <li>Solar analysis (call separately: 4 credits)</li>\n            <li>Mortgage/lien data</li>\n            <li>Skip tracing / owner information</li>\n        </ul>\n        <p><em>This endpoint aggregates data from multiple internal sources. Sub-fields may be <code>null</code>, <code>0</code>, or empty arrays when the underlying data is unavailable for the property — e.g., <code>comps</code> may be empty in rural areas, <code>last_sold_price</code> is <code>0</code> in non-disclosure states, and <code>photos</code> can be empty for unlisted properties.</em></p>\n        "},{"id":1010,"name":"Renovation Cost Breakdown","order":22,"identifier":"advanced_renovation_cost_breakdown","credits":5,"url":"https://developers.homesage.ai/api/properties/renovation-cost-breakdown/","method":"POST","description":"\n        <p>AI-powered room-by-room renovation cost breakdown with confidence scores, red flags, and non-visible area estimates. The most detailed renovation analysis available — 158 data fields.</p>\n        <p><strong>Credit Cost:</strong> 5 credits per request</p>\n        <h4>Response includes:</h4>\n        <ul>\n            <li>Property summary with overall condition score (0-10) and confidence (0-100)</li>\n            <li>Room-by-room renovation breakdowns with cost ranges (min/max/estimate)</li>\n            <li>Non-visible areas (plumbing, electrical)</li>\n            <li>Systems and exterior (roof, HVAC, foundation)</li>\n            <li>Additional costs (permits, labor, contingency)</li>\n            <li>Red flags and estimation notes</li>\n        </ul>\n        <h4>Response shape notes</h4>\n        <p>This endpoint is AI-powered, so a few fields vary by property:</p>\n        <ul>\n            <li><code>rooms</code> array length varies with property size (typically 3–8 entries)</li>\n            <li><code>non_visible_areas</code> is empty <code>[]</code> when all rooms are photographed; populated when the AI extrapolates from bedroom/bathroom counts</li>\n            <li><code>major_red_flags</code> is empty <code>[]</code> for properties in good condition; populated when issues are detected</li>\n        </ul>\n        <p><em>Cost values and text descriptions may vary slightly between calls for the same property. Structural keys and types remain consistent.</em></p>\n        "},{"id":1011,"name":"Property Owner Information","order":23,"identifier":"skip_tracing_property_owner","credits":4,"url":"https://developers.homesage.ai/api/properties/skip-tracing/property-owner-information/","method":"POST","description":"\n        <p>Retrieve property owner contact information including name, phone numbers, email addresses, and ownership details from third-party data providers.</p>\n        <p><strong>Credit Cost:</strong> 4 credits per request</p>\n        <h4>Response shape notes</h4>\n        <p>Each per-person field is conditional — the proxy strips it from the response when the upstream service did not return it for that person. <code>emails</code> may be absent if no email addresses are associated; <code>bankruptcy</code> and <code>involuntaryLien</code> appear only when public records exist for the person.</p>\n        <p>When zero matches are found, the response shape changes to:</p>\n        <pre><code>{\n  \"count\": 0,\n  \"persons\": [],\n  \"credits_charged\": false,\n  \"no_results\": true,\n  \"message\": \"No owner information found for the provided address. No credits were charged.\",\n  \"summary\": { \"requestCount\": 1, \"matchCount\": 0, \"noMatchCount\": 1, \"errorCount\": 0 }\n}</code></pre>\n        <p><strong>Credits are not charged when no matches are found.</strong></p>\n        "},{"id":1012,"name":"Associated People","order":24,"identifier":"skip_tracing_associated_people","credits":1,"url":"https://developers.homesage.ai/api/properties/skip-tracing/associated-people/","method":"POST","description":"\n        <p>Find people associated with a property address — residents, relatives, and prior occupants.</p>\n        <p><strong>Credit Cost:</strong> 1 credit per request</p>\n        "},{"id":1009,"name":"Person Details","order":25,"identifier":"skip_tracing_person_details","credits":1,"url":"https://developers.homesage.ai/api/properties/skip-tracing/person-details/","method":"POST","description":"\n        <p>Detailed person information lookup by person ID. Requires a <code>person_id</code> obtained from internal systems.</p>\n        <p><strong>Credit Cost:</strong> 1 credit per request</p>\n        <p><strong>Note:</strong> This endpoint requires a <code>person_id</code> which is not currently available from other developer API endpoints. Contact support for access.</p>\n        "},{"id":1026,"name":"Sold Properties by ZIP","order":26,"identifier":"sold_by_zip","credits":51,"url":"https://developers.homesage.ai/api/properties/sold/by-zip/","method":"GET","description":"\n        <p>Retrieve all sold properties in a ZIP code area. Returns a full list of recently sold properties with details.</p>\n        <p><strong>Credit Cost:</strong> ~51 credits per request (scales with result count, ~0.05 per property)</p>\n        <p><strong>Important:</strong> This is the most expensive endpoint. Use <code>limit</code> to cap results, or call Sold Properties Count first to estimate cost.</p>\n        "},{"id":1027,"name":"Sold Properties Count","order":27,"identifier":"sold_count_by_zip","credits":1,"url":"https://developers.homesage.ai/api/properties/sold/count-by-zip/","method":"GET","description":"\n        <p>Get the count of sold properties in a ZIP code area. Use this before calling Sold Properties by ZIP to estimate credit cost.</p>\n        <p><strong>Credit Cost:</strong> 1 credit per request</p>\n        "},{"id":1018,"name":"Mortgage & Lien Analysis","order":28,"identifier":"mortgage_lien","credits":5,"url":"https://developers.homesage.ai/api/mortgage-lien/analysis/","method":"GET","description":"\n        <p>Mortgage and lien data for a property including lien amounts, lender information, and equity estimates.</p>\n        <p><strong>Credit Cost:</strong> 5 credits per fresh request (cached responses within 7 days are free)</p>\n        <p><strong>Caching:</strong> Successful lookups are cached for 7 days. Repeat requests for the same address within that window do not consume credits.</p>\n        <p><strong>Note:</strong> Coverage varies by market. Returns 404 with a clear message for addresses without data.</p>\n        "},{"id":1031,"name":"Skip Tracing - Property Owner Information","order":29,"identifier":"skip_tracing_owner_name","credits":4,"url":"https://developers.homesage.ai/api/properties/skip-tracing/property-owner-information/","method":"POST","description":"<p>Retrieve property owner names and contact information using skip tracing services.</p><p><strong>Returns:</strong></p><ul><li>Owner names and contact details</li><li>Phone numbers with metadata (type, carrier, DNC status)</li><li>Email addresses</li><li>Mailing addresses</li><li>Bankruptcy, lien, and deceased status</li></ul><p><strong>Supports batch requests:</strong> Up to 100 properties per request</p><p><strong>Cost:</strong> 4 credits per request</p>"},{"id":1032,"name":"Updated Property Info","order":30,"identifier":"updated_property_info","credits":1,"url":"https://developers.homesage.ai/api/properties/updated-info/","method":"GET","description":"<p>Get comprehensive property information with always-fresh data. This endpoint always fetches the latest property data from the source before returning a response, ensuring you receive the most current information available.</p><p><strong>Key Features:</strong></p><ul><li>Always returns the most up-to-date property data</li><li>Comprehensive property details including address, coordinates, pricing, features, and more</li><li>Property history and school ratings</li><li>Listing office information</li><li>Home value estimates</li></ul>"},{"id":1033,"name":"Credit Balance","order":31,"identifier":"credit_balance","credits":0,"url":"https://developers.homesage.ai/api/usage/credits/","method":"GET","description":"\n        <p>Retrieve your account's current API credit balance and plan/billing context.</p>\n        <p>This endpoint is intended for usage monitoring — call it before a session to confirm\n        you have credits available, or poll it to drive your own low-balance alerts.</p>\n        <p><strong>Authentication:</strong> API key only. Pass your key as a Bearer token in the\n        <code>Authorization</code> header. The endpoint returns the balance for the account that\n        owns the key; no email address or other identifier is needed.</p>\n        <p><strong>Cost:</strong> This call is free — it does not consume any credits.</p>\n        "},{"id":1034,"name":"Location Red Flags","order":32,"identifier":"location_red_flags","credits":5,"url":"https://developers.homesage.ai/api/properties/red-flags/stream/","method":"POST","description":"<p>Analyze a property address for nearby location red flags (liquor stores, industrial sites, etc.) using Google Places and AI vision analysis. Returns a risk score and ranked list of nearby negative externalities.</p><p><strong>Cost:</strong> 5 credits per request</p>"},{"id":1035,"name":"Skip Tracing - Associated People","order":33,"identifier":"skip_tracing_associated_persons","credits":1,"url":"https://developers.homesage.ai/api/properties/skip-tracing/associated-people/","method":"POST","description":"<p>Retrieve people associated with a given property address.</p><p><strong>Returns:</strong></p><ul><li>List of people associated with the address</li><li>Demographics (name, age)</li><li>Current and previous residences</li><li>Related persons</li><li>Pagination support</li></ul><p><strong>Cost:</strong> 1 credit per request</p>"},{"id":1036,"name":"Renovation Cost Breakdown","order":34,"identifier":"renovation_cost_breakdown","credits":5,"url":"https://developers.homesage.ai/api/properties/renovation-cost-breakdown/","method":"POST","description":"<p>Get a detailed AI-powered renovation cost breakdown by analyzing property images using Google Gemini Vision API.</p><p><strong>Returns:</strong></p><ul><li>Detailed renovation cost breakdown by category</li><li>Overall condition score and assessment</li><li>Cost estimates (min, max, and midpoint)</li><li>Major red flags and recommendations</li></ul><p><strong>Cost:</strong> 5 credits per request</p>"}]}