Authentication
Generate an API key in Propera under Account Settings → API Keys (Pro or Business plan). Send it on every request as an X-API-Key header. Authorization: Bearer YOUR_KEY also works.
X-API-Key: YOUR_PROPERA_API_KEY
Content-Type: application/json
Verify a key with a quick GET to the ping endpoint:
GET https://getpropera.com/api/v1/ping
X-API-Key: YOUR_PROPERA_API_KEY
200 OK
{ "ok": true, "email": "you@example.com", "plan_key": "pro", "api_enabled": true }
Run an analysis
POST a property to the ARV endpoint:
POST https://getpropera.com/api/v1/arv
Request body
| Field | Value | Required |
|---|---|---|
address | Full address (street, city, state, ZIP), or structured street/city/state/zip | Always |
property_type | sfh, condo, townhouse, manufactured, or land (case-insensitive) | Always |
bedrooms | Number of bedrooms | Residential |
bathrooms | Number of bathrooms | Residential |
year_built | Year the property was built | Residential |
sqft | Living area for residential, or lot size for land | Always |
comp_radius | Search radius in miles (residential up to 15, land up to 50) | Always |
lot_size_unit | sqft or acres | Land only |
soft_errors | true to receive every failure as HTTP 200 with success: false (the real status is returned in http_status). Use it when your automation tool stops the flow on a non-200 response | Optional |
curl -X POST https://getpropera.com/api/v1/arv \
-H "X-API-Key: YOUR_PROPERA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"address": "123 Main St, Austin, TX 78704",
"property_type": "sfh",
"bedrooms": 4,
"bathrooms": 2.5,
"sqft": 2200,
"year_built": 2005,
"comp_radius": 5
}'
Response
A successful run returns 200 with success: true:
{
"success": true,
"id": 1024,
"run_url": "https://getpropera.com/comps_run?id=1024",
"normalized_address": "123 Main Street, Austin, TX 78704",
"arv": 330000,
"arv_confidence": "high",
"comps_radius_miles": 5,
"comp_count": 5,
"price_per_sqft": 150.00,
"summary_text": "ARV: $330,000 (high confidence) from 5 comparables within 5 mi.",
"dom": { "quick_sale_days": 30, "market_days": 45, "top_dollar_days": 60 },
"comps": [
{
"address": "456 Oak Ave, Austin, TX 78704",
"price": 318000, "sqft": 2120, "beds": 4, "baths": 2.5,
"price_per_sqft": 150.00, "distance_mi": 0.8, "sold_date": "2026-05-02",
"verification": "Confirmed sale", "condition": "Partially Updated",
"zillow_url": "https://www.zillow.com/homes/..._rb/"
}
],
"comps_text": "456 Oak Ave, Austin, TX 78704 | $318,000 | 2,120 sqft | 4bd/2.5ba | $150.00/sqft | 0.80 mi | sold 2026-05-02 | Confirmed sale | Partially Updated | https://www.zillow.com/homes/..._rb/\n\n...",
"generated_at": "2026-06-07T17:46:47Z",
"arv_fast": 336000,
"arv_source": "verified",
"verification": {
"status": "verified",
"steps": ["Checking 7 comps against records", "Checked 6 of 7, 5 confirmed, 1 dropped", "..."],
"reason_counts": { "confirmed": 5, "corrected": 1, "dropped_never_sold": 1 },
"evidence": { "total_weight": 4.95, "spread": 0.069, "avm_share": 0.65 },
"comps": [ { "address": "456 Oak Ave, Austin, TX 78704", "status": "corrected",
"status_label": "Confirmed sale", "condition": "updated",
"verified_sold_price": 318000, "verified_sold_date": "2026-05-02" } ]
}
}
The arv_fast / arv_source / verification fields appear when comp
verification runs: each comp the ARV used is checked against public listing records (actual sale,
recorded price, condition) and arv is the verified number. When verification is
unavailable, arv is the standard estimate and verification.status is
"unavailable".
A failure returns a 4xx with success: false and a reason:
{
"success": false,
"error": "No recent comparable sales were found within 5 mi of this address. Widen comp_radius and try again.",
"error_code": "INSUFFICIENT_COMPS"
}
success: on true, write arv and summary_text back to the lead; on false, write error to a notes field. Each successful run consumes one ARV credit on your plan.Error codes
Failures return the HTTP status below with success: false, error, and error_code. If your tool aborts on non-200 responses (Podio GlobiFlow does), send "soft_errors": true and every failure arrives as HTTP 200 with the original code in http_status.
| error_code | HTTP | Meaning & fix |
|---|---|---|
UNAUTHORIZED | 401 | Missing/invalid key. Check the X-API-Key header. |
PLAN_NOT_ELIGIBLE | 403 | Plan has no API access. Upgrade to Pro or Business. |
LIMIT_REACHED | 402 | Monthly ARV limit hit. Resets next billing cycle. |
INSUFFICIENT_COMPS | 422 | Not enough comps at that radius. Widen comp_radius. |
NO_USABLE_COMPS | 422 | Comps found but none passed the filters. Widen comp_radius. |
ALL_COMPS_UNVERIFIED | 422 | Every comp failed verification against public listing records (never sold, off-market, etc.). No run is saved and no credit is consumed. Retry with a larger comp_radius. |
ADDRESS_NOT_FOUND | 422 | Propera could not resolve the address it received. error names that address (also returned as address_received). Fix the street number, city, state or ZIP and retry. |
INVALID_COMP_RADIUS | 422 | comp_radius is missing or out of range. |
INVALID_PROPERTY_DETAILS | 422 | A required property field is missing or out of range. |
Questions people ask
Which Propera plans include API access?
Pro and Business. Requests authenticated with a Starter plan key return 403 with a message saying API access is available on the Pro and Business plans.
What do the error codes mean in practice?
401 means the key is missing or invalid. 403 means the key is valid but the plan has no API access. 402 means the monthly ARV limit is exhausted and resets on your next billing cycle. 422 means the request was understood but could not be fulfilled, most often an address that could not be matched or a required field missing for the property type.
Does every call consume one of my monthly ARVs?
Every completed analysis does. Requests that fail with 401, 403 or 422 do not produce an estimate. Because the allowance is monthly rather than per-day, an unfiltered high-volume integration can exhaust it early in the cycle.
How wide can the comp search radius go?
Up to 15 miles for residential and up to 50 miles for land. A wider radius is the usual fix when a response mentions that it could not find closely matching comparable sales, though a result found at the edge of the range will carry a lower confidence score.
Which fields are required?
The address and the radius are always required. Bedrooms, bathrooms, year built and living area are required for residential property types, and lot size is used in place of living area for land. Sending a residential payload without those fields returns a 422 rather than a partial estimate.