200 analyzed response consumes credits.Quickstart
Create a key in the Atlas developer console, then send your first address:
curl https://api.atlasproptech.com/v1/property-distress/analyze \
-H "x-api-key: $ATLAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"property": {"address": "123 Main St, Tampa, FL"}}' Authentication
Send your API key in the x-api-key header. Keys are shown only once when created. Keep them on your server, never expose them in browser or mobile-app code, and revoke a key immediately if it is disclosed.
x-api-keyRequired. Your Atlas API key.Create an analysis
Provide exactly one locator: a complete postal address or a latitude/longitude pair. Supplying both returns a 400.
Address
{
"property": {
"address": "123 Main St, Tampa, FL"
}
} Coordinates
{
"property": {
"coordinates": {
"lat": 27.9506,
"lng": -82.4572
}
}
} JavaScript example
const response = await fetch("https://api.atlasproptech.com/v1/property-distress/analyze", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.ATLAS_API_KEY
},
body: JSON.stringify({
property: { address: "123 Main St, Tampa, FL" }
})
});
const analysis = await response.json(); Python example
import os
import requests
response = requests.post(
"https://api.atlasproptech.com/v1/property-distress/analyze",
headers={
"x-api-key": os.environ["ATLAS_API_KEY"],
},
json={"property": {"address": "123 Main St, Tampa, FL"}},
timeout=30,
)
response.raise_for_status()
analysis = response.json() Successful response
{
"id": "31bdb62f-6a19-4a22-91d6-d43f05c2869b",
"status": "analyzed",
"location": {
"address": "123 Main St, Tampa, FL 33602, USA",
"coordinates": { "lat": 27.9506, "lng": -82.4572 }
},
"analysis": {
"score": 62.5,
"signals": ["damaged siding", "overgrown yard"],
"reasoning": "Visible deferred exterior maintenance."
},
"imagery": {
"date": "2025-03",
"distance_m": 12.4,
"quality_score": 91.2
},
"credits_used": 1,
"api_version": "2026-08-01",
"model_version": "gemini-2.5-flash-lite"
} | Field | Meaning |
|---|---|
| analysis.score | A 0–100 exterior-distress screening score. Higher indicates more visible distress. |
| analysis.signals | Normalized visible conditions contributing to the result. |
| analysis.reasoning | A concise explanation of the visual evidence. |
| imagery | Capture date, distance to the property, and image-quality score. |
| credits_used | Credits charged for this completed analysis. |
Errors
Error bodies use a stable machine-readable code and a human-readable message:
{
"error": {
"code": "NO_PANORAMA",
"message": "No Street View panorama was found near this property."
},
"id": "31bdb62f-6a19-4a22-91d6-d43f05c2869b"
} | HTTP | Code | Meaning |
|---|---|---|
| 400 | INVALID_REQUEST | Malformed JSON, invalid coordinates, or both property locators supplied. |
| 401 | UNAUTHORIZED | The API key is missing or invalid. |
| 402 | BILLING_REQUIRED | The Atlas account does not have an active subscription plan. |
| 403 | KEY_DISABLED | The API key has been disabled or revoked. |
| 422 | NO_PANORAMA | The address, usable imagery, or a visible building could not be found. |
| 429 | RATE_LIMITED | The request rate for this key was exceeded. |
| 503 | ANALYSIS_UNAVAILABLE | An analysis dependency is temporarily unavailable. |
| 504 | PROVIDER_TIMEOUT | A provider did not respond before the request deadline. |
Billing and limits
The API is available on Atlas subscription plans. It is not available on the pay-as-you-go plan. Each completed analysis consumes one shared Atlas credit, the same as a property in an area search or a row in a CSV upload. Validation errors, missing or stale imagery, invisible buildings, and provider failures consume zero credits. The default limit is 5 requests per second per key, with a burst of 10. There is no separate monthly request quota: your credit balance is the monthly control.
Retry transient 429, 503, and 504 responses with exponential backoff. Only a completed 200 analysis is billed, so failed attempts never consume credits.
Using the result responsibly
Atlas analyzes visible exterior signals in available imagery. Results are intended for property screening and workflow prioritization. They are not an appraisal, inspection, code-compliance determination, or guarantee of a property’s condition or ownership circumstances.