API Reference
ZoneWise.AI gives you programmatic access to Florida parcel data, zoning intelligence, and AI-powered property analysis. Available on Pro and Enterprise plans.
Overview
All API responses include standard HTTP status codes. Successful responses return 200 OK with a JSON body. Errors return 4xx or 5xx codes with a structured error body.
Authentication
All API requests must include your API key in the Authorization header as a Bearer token. Get your API key from the account dashboard.
Authorization: Bearer zw_live_xxxxxxxxxxxxxxxxxxxxEndpoints
/api/v1/parcels/{parcel_id}Retrieve full parcel data for a given parcel ID. Includes zoning, owner, assessed value, and land use.
{
"parcel_id": "2412345",
"address": "123 Main St, Melbourne, FL 32901",
"owner": "Smith, John A",
"zoning": "RU-1-9",
"land_use": "Single Family Residential",
"assessed_value": 245000,
"lot_size_sqft": 8500,
"zip": "32901",
"county": "brevard"
}/api/v1/zoning/{zone_code}Get zoning district definition: permitted uses, dimensional standards, setbacks.
{
"zone_code": "RU-1-9",
"name": "Single-Family Residential District",
"county": "brevard",
"permitted_uses": ["single_family", "accessory_structures"],
"min_lot_size_sqft": 9000,
"max_height_ft": 35,
"front_setback_ft": 25,
"rear_setback_ft": 20,
"side_setback_ft": 7.5
}/api/v1/chatSend a natural language query to the ZoneWise AI. Returns a streaming or non-streaming response with property and zoning intelligence.
/api/v1/kpisReturns all 298 auction KPI definitions across 17 categories. Used to power the InsightWise report.
Rate Limits
| Plan | Requests/min | Requests/day | Chat queries/day |
|---|---|---|---|
| Free | — | — | 3 |
| Starter ($39/mo) | 30 | 1,000 | 20 |
| Pro ($99/mo) | 120 | Unlimited | Unlimited |
| Enterprise | Custom | Custom | Custom |
When rate limited, the API returns 429 Too Many Requests with a Retry-After header.
Code Examples
cURL
curl -X GET \
"https://zonewise.ai/api/v1/parcels/2412345" \
-H "Authorization: Bearer zw_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json"Python
import requests
API_KEY = "zw_live_xxxxxxxxxxxxxxxxxxxx"
BASE_URL = "https://zonewise.ai/api/v1"
headers = {
"Authorization": "Bearer " + API_KEY,
"Content-Type": "application/json",
}
# Fetch parcel data
response = requests.get(BASE_URL + "/parcels/2412345", headers=headers)
parcel = response.json()
print("Zoning:", parcel["zoning"])
print("Assessed value:", parcel["assessed_value"])
# Send a chat query
chat_response = requests.post(
BASE_URL + "/chat",
headers=headers,
json={
"messages": [
{"role": "user", "content": "What are the setbacks for RU-1-9 zoning?"}
],
"stream": False
}
)
print(chat_response.json()["content"])JavaScript / TypeScript
const API_KEY = process.env.ZONEWISE_API_KEY!
const BASE_URL = 'https://zonewise.ai/api/v1'
// Fetch parcel data
async function getParcel(parcelId: string) {
const res = await fetch(`${BASE_URL}/parcels/${parcelId}`, {
headers: {
Authorization: `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
})
if (!res.ok) throw new Error(`API error: ${res.status}`)
return res.json()
}
// Chat query
async function askZoneWise(question: string) {
const res = await fetch(`${BASE_URL}/chat`, {
method: 'POST',
headers: {
Authorization: `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
messages: [{ role: 'user', content: question }],
stream: false,
}),
})
return res.json()
}
// Usage
const parcel = await getParcel('2412345')
console.log('Zoning:', parcel.zoning)
const answer = await askZoneWise('What can I build on RU-1-9 land?')
console.log(answer.content)Error Codes
400401403404429500Ready to integrate?
Get your API key on the Pro plan. Unlimited requests, full parcel database, AI chat.
View Pricing — From $39/mo