A simple REST API for sellers, agents, builders and developers to create, update and delete lots they own. Hook it into your CRM, Zapier, AI agents, or any system that speaks HTTPS. Generate a key in your account and start in under 5 minutes.
Sign in → Account → API Keys → Create. Copy the full key once and store it securely.
Add Authorization: Bearer <your_key> (or X-API-Key) to every request.
Start with GET /v1/public/lots to list your listings, then create / update / delete as needed.
| Method | Path | What it does |
|---|---|---|
| GET | /v1/public/lots | List the lots you own (paginated, filterable). |
| POST | /v1/public/lots | Create a new lot. Status defaults to PENDING admin approval. |
| GET | /v1/public/lots/{id} | Fetch a single lot by id (must be owned by your key). |
| PATCH | /v1/public/lots/{id} | Partial update - send only the fields you want to change. |
| PUT | /v1/public/lots/{id} | Full replacement of editable lot fields. |
| DELETE | /v1/public/lots/{id} | Delete a lot you own. Irreversible. |
| GET | /v1/public/openapi.json | Machine-readable OpenAPI 3 spec (no auth required). |
| GET | /v1/public/health | Uptime probe (no auth required). |
Base URL (production): https://investorfirsthome.com.au/api/v1/public
Base URL (dev): https://dev.investorfirsthome.com.au/api/v1/public
Choose either header style. Both authenticate the same way and are checked
against the SHA-256 hash of your key in our database. Revoked or expired
keys return 401 INVALID_API_KEY.
Authorization: Bearer ifh_live_<32-hex-secret>
# - or -
X-API-Key: ifh_live_<32-hex-secret>
Never expose your key in browser-facing code. Use it from a server, serverless function, mobile background task or trusted CRM only.
curl -X POST https://investorfirsthome.com.au/api/v1/public/lots \
-H "Authorization: Bearer ifh_live_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \
-H "Content-Type: application/json" \
-d '{
"lotNumber": "42",
"size": 450,
"price": 525000,
"streetAddress": "12 Example St, Tarneit VIC 3029",
"packageType": "LAND_ONLY",
"estateName": "Riverlea",
"stage": "Stage 7",
"isPublished": true
}'
import fetch from 'node-fetch';
const API_KEY = process.env.IFH_API_KEY; // never hard-code
const BASE = 'https://investorfirsthome.com.au/api/v1/public';
async function listMyLots() {
const res = await fetch(`${BASE}/lots?limit=50`, {
headers: { Authorization: `Bearer ${API_KEY}` }
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { data } = await res.json();
return data.lots;
}
import os, requests
API_KEY = os.environ["IFH_API_KEY"]
BASE = "https://investorfirsthome.com.au/api/v1/public"
def update_lot_price(lot_id, price):
r = requests.patch(
f"{BASE}/lots/{lot_id}",
headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
json={"price": price}
)
r.raise_for_status()
return r.json()["data"]["lot"]
{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "API key is invalid, revoked or expired."
}
}
Authorization header as a Bearer token, or as the X-API-Key header. Both work identically.lots:read,lots:write.Access-Control-Allow-Origin: * and accepts requests from any browser origin or server. Webhooks and server-to-server clients don’t use CORS at all.
Click Authorize, paste your ifh_live_... key, then expand any
endpoint and hit Try it out.
Free to use during the promotional period. Sign in to your account and head to API Keys.