OfferWise API
Integrate OfferWise property analysis into your inspection software, real estate platform, or buyer portal. One API call returns a complete risk assessment, repair cost breakdown, and offer strategy from seller disclosure and inspection documents.
Overview
The OfferWise API is a REST API. All requests must use HTTPS. Responses are JSON. The base URL is https://www.getofferwise.ai.
Four endpoints serve different use cases:
| Endpoint | Purpose | Input |
|---|---|---|
POST /api/v1/analyze | Full document intelligence — risk score, offer strategy, repair costs | Disclosure + inspection + price |
POST /api/v1/research | Property intelligence — AVM, hazards, schools, permits | Address only |
POST /api/v1/screen | Batch screening — fast risk flags for portfolio screening | Address + optional price |
GET /api/v1/usage | Check API key usage and remaining quota | API key only |
Authentication
Authenticate using your API key as a Bearer token in the Authorization header, or as an X-API-Key header.
# Bearer token (preferred) curl -X POST https://www.getofferwise.ai/api/v1/analyze \ -H "Authorization: Bearer ow_live_xxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"disclosure_text": "...", "inspection_text": "...", "property_price": 950000}' # X-API-Key header (alternative) curl -X POST https://www.getofferwise.ai/api/v1/analyze \ -H "X-API-Key: ow_live_xxxxxxxxxxxx" \ ...
Quickstart
import requests response = requests.post( "https://www.getofferwise.ai/api/v1/analyze", headers={ "Authorization": "Bearer ow_live_xxxxxxxxxxxx", "Content-Type": "application/json", }, json={ "disclosure_text": disclosure_text, # extracted from TDS / SPDS / etc. "inspection_text": inspection_text, # extracted from inspection report "property_price": 950000, "property_address": "123 Oak Ave, Austin TX 78701", } ) result = response.json() print(f"OfferScore: {result['offer_score']}") print(f"Recommended offer: ${result['offer_strategy']['recommended_offer']:,.0f}") print(f"Total repair cost: ${result['repair_cost_estimate']:,.0f}")
POST /api/v1/analyze
Run a full property analysis. Returns a complete PropertyAnalysis object. Analysis typically takes 15–60 seconds depending on document length.
Request Body
| Field | Type | Description |
|---|---|---|
| disclosure_text required | string | Full text extracted from seller disclosure form (TDS, SPDS, PCDS, etc.) |
| inspection_text required | string | Full text extracted from home inspection report |
| property_price required | number | Asking price in USD (e.g. 950000) |
| property_address optional | string | Full property address — used for public records lookups (FEMA flood, permits, etc.) |
| buyer_profile optional | object | Buyer preferences — see Buyer Profile below |
Buyer Profile Object
| Field | Type | Values |
|---|---|---|
| max_budget | number | Max purchase price buyer will consider |
| repair_tolerance | string | low · moderate · high |
| biggest_regret | string | hidden_issues · overpaying · missing_out |
| ownership_duration | string | under_3 · 3-5 · 5-10 · 10+ |
Response
{
"offer_score": 62, // 0–100. 70+ is strong, 40– is risky.
"risk_grade": "C+", // Letter grade summary
"overall_assessment": "...", // Plain-English 2–3 sentence summary
"repair_cost_estimate": 47500, // Total estimated repair cost in USD
"offer_strategy": {
"recommended_offer": 902500, // Suggested offer price
"aggressive_offer": 880000, // Low-end aggressive offer
"conservative_offer": 925000, // Conservative offer
"repair_credit_request": 25000, // Suggested repair credit to ask for
"rationale": "..."
},
"deal_breakers": [ // Issues that could kill the deal
{
"title": "Foundation settlement cracks",
"description": "...",
"severity": "critical", // critical | high | medium | low
"cost_estimate": "$18K–$35K"
}
],
"repair_cost_breakdown": { // Cost by system
"roof": 14000,
"hvac": 8500,
"foundation": 25000
},
"risk_dna": { // 6-axis risk profile
"structural": 72,
"systems": 45,
"environmental": 30,
"disclosure_quality": 58,
"market_risk": 40,
"buyer_fit": 65
},
"leverage_points": ["..."], // Negotiation items to request
"red_flags": ["..."], // High-risk items from cross-reference
"api_version": "v1",
"calls_remaining": 487
}
POST /api/v1/research
Property intelligence from public data sources. No documents needed — just an address. Returns AVM, comps, flood zone, seismic risk, schools, walk score, permits, and AI synthesis.
Request Body
{
"address": "1234 Oak Street, San Jose, CA 95123" // Required — full street address with ZIP
}
Response
{
"success": true,
"address": "1234 Oak Street, San Jose, CA 95123",
"avm": {
"estimated_value": 985000,
"price_range_low": 935000,
"price_range_high": 1035000,
"confidence": "high"
},
"market": {
"days_on_market": 18,
"price_per_sqft": 612,
"comparable_sales": [...]
},
"hazards": {
"flood_zone": "X",
"seismic_risk": "moderate",
"wildfire_risk": "low",
"air_quality_index": 42
},
"neighborhood": {
"walk_score": 72,
"transit_score": 45,
"school_ratings": [...]
},
"permits": [...],
"synthesis": { "brief": "AI-generated property intelligence summary..." },
"tools_succeeded": 8,
"research_time_ms": 3200,
"usage": { "calls_used": 14, "calls_remaining": 486 }
}
POST /api/v1/screen
Lightweight property screening for batch and portfolio use. Fast risk flag assessment without documents — designed for institutional buyers, lenders, and appraisal management companies screening hundreds of properties.
Request Body
{
"address": "1234 Oak Street, San Jose, CA 95123", // Required
"asking_price": 1050000 // Optional — enables overpriced flag
}
Response
{
"success": true,
"address": "1234 Oak Street, San Jose, CA 95123",
"estimated_value": 985000,
"asking_price": 1050000,
"price_gap_pct": 6.6, // Asking vs AVM gap percentage
"risk_flags": [
{ "flag": "overpriced", "severity": "medium", "detail": "Asking $1,050,000 is 7% above AVM $985,000" },
{ "flag": "flood_zone", "severity": "high", "detail": "FEMA zone: AE" }
],
"risk_flag_count": 2,
"flood_zone": "AE",
"walk_score": 72,
"days_on_market": 18,
"research_time_ms": 2800,
"usage": { "calls_used": 15, "calls_remaining": 485 }
}
GET /api/v1/usage
Check your API key usage, limits, and remaining quota.
{
"key_prefix": "ow_live_ab3f",
"tier": "standard",
"calls_month": 15,
"monthly_limit": 500,
"calls_remaining": 485,
"calls_total": 247,
"last_used": "2026-04-07T15:30:00"
}
Error Codes
| Status | Code | Meaning |
|---|---|---|
| 401 | unauthorized | Missing or invalid API key |
| 400 | missing_fields | disclosure_text, inspection_text, or property_price missing |
| 429 | rate_limited | Monthly call limit reached. Upgrade or wait for reset. |
| 500 | analysis_error | Analysis failed — retry or contact support |
Rate Limits
Rate limit status is returned in every response as calls_remaining. Limits depend on your plan — see Pricing below.
Spectora Integration
OfferWise integrates with Spectora via webhook. When an inspector marks a report as delivered, Spectora can POST the report text to your OfferWise API key and the buyer receives an instant OfferWise analysis link.
Contact support@getofferwise.ai to set up a Spectora webhook configuration.
ISN / ISPPI Integration
For ISN users, OfferWise supports direct report forwarding via ISN's third-party delivery integrations. Contact us for setup instructions specific to your ISN account.
Plans & Pricing
All plans include the full PropertyAnalysis response. No setup fees, no per-seat charges. Cancel anytime.
Enterprise
High-volume integrations, white-label deployments, or custom contracts — tell us what you are building.
Your API Keys
Checking authentication...