Resources

SDKs

Typed clients for the REB API — create → poll → result, with a subscribe() helper that hides polling, typed errors and idempotency keys.

TypeScript · live#

@reelestateboss/sdk — zero-dependency, first-class types, works in Node 18+ and any modern runtime.

npm install @reelestateboss/sdk
import { REB } from "@reelestateboss/sdk";

const reb = new REB({ apiKey: process.env.REB_KEY! });

// submit → poll → result, the poll handled for you
const task = await reb.generate({ model: "flux-ultra", prompt: "a bright, airy living room, MLS-grade" });
const result = await reb.subscribe(task, { onProgress: (t) => console.log(t.status) });
console.log(result.output);

// one-call outcome recipes — listing kit is synchronous (photos + details in, kit out)
const { kit } = await reb.recipes.listingKit({
  photos: ["https://cdn.example.com/photo-1.jpg", "https://cdn.example.com/photo-2.jpg"],
  details: { address: "123 Main St", city: "Austin", price: "$750,000", beds: "4", baths: "3" },
});

Python · live#

reelestateboss — zero-dependency stdlib client, same shape as the TS SDK. Python 3.8+.

pip install reelestateboss
import os
from reelestateboss import REB

reb = REB(api_key=os.environ["REB_KEY"])

# submit -> poll -> result, the poll handled for you
task = reb.generate(model="flux-ultra", prompt="a bright, airy living room, MLS-grade")
result = reb.subscribe(task, on_progress=lambda t: print(t["status"]))
print(result["output"])

# one-call outcome recipes — listing kit is synchronous (photos + details in, kit out)
kit = reb.recipes.listing_kit(
    photos=["https://cdn.example.com/photo-1.jpg", "https://cdn.example.com/photo-2.jpg"],
    details={"address": "123 Main St", "city": "Austin", "price": "$750,000", "beds": "4", "baths": "3"},
)["kit"]
SDKs · REB Developers