Developer API

Manage your listings programmatically - webhooks, agents, integrations.

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.

REST + JSONOpenAPI 3 specPer-key audit logNo CORS restrictions
Quick start

Three steps to your first request

1

Create a key

Sign in → Account → API Keys → Create. Copy the full key once and store it securely.

2

Send the header

Add Authorization: Bearer <your_key> (or X-API-Key) to every request.

3

Call any endpoint

Start with GET /v1/public/lots to list your listings, then create / update / delete as needed.

Endpoints

Public API reference

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

Authentication

Send your API key on every request

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.

Examples

Copy / paste in any language

cURL - create a lot

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
  }'

Node.js - list your lots

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;
}

Python - update a lot price

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"]

Error response shape

{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "API key is invalid, revoked or expired."
  }
}
FAQ

Common questions

Who is this API for?
Sellers, agents, builders and developers who want to manage their listings programmatically - direct CRM integrations, Zapier-style automations, custom dashboards, AI agents, and inbound webhooks from your own systems.
How do I get an API key?
Sign in to InvestOrFirstHome → Account → API KeysCreate new key. The full key is shown only once. Copy it immediately and store it in a secrets manager (1Password, AWS Secrets Manager, Doppler, etc.). If you lose it, revoke and create a new one.
How do I authenticate requests?
Send your key in the Authorization header as a Bearer token, or as the X-API-Key header. Both work identically.
What can I do with one key?
Each key is bound to a single user account and can only read/write lots owned by that user. You cannot access other sellers’ listings. Scopes default to lots:read,lots:write.
Is there a rate limit?
Yes. Default usage plan: 60 requests / minute, 10,000 requests / day per key. If you need higher quotas for a webhook integration, contact support.
Will my requests be blocked by CORS?
No. The public API responds with 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.
Are requests audited?
Every request is recorded with timestamp, key id, IP, user-agent, status code and latency. You can request an export of your key’s audit log from support.
How do I rotate or revoke a key?
Revoke from Account → API Keys. Revocation takes effect immediately. Always create the replacement key first, deploy it, then revoke the old one.
Interactive reference

Swagger UI - try it live

Click Authorize, paste your ifh_live_... key, then expand any endpoint and hit Try it out.

Generate your first API key

Free to use during the promotional period. Sign in to your account and head to API Keys.