โ–ธ Documentation

Components

AsanagiIDX

Turnkey RESO Web API MLS syndication engine. Synchronizes MLS listing feeds into AsanagiDB graph storage, caches property media, and exposes high-throughput REST and GraphQL APIs for client applications.

Overview

AsanagiIDX bridges RESO Web API listing data providers to web and mobile real estate applications. Rather than maintaining custom ETL workers and relational SQL schemas, AsanagiIDX ingests listing feeds directly into AsanagiDB property graphs.

RESO Web API Feed โ”€โ”€โ–บ AsanagiIDX Sync Daemon โ”€โ”€โ–บ AsanagiDB Engine
                                                          โ”‚
                                                REST / GraphQL APIs
                                                          โ”‚
                                                          โ–ผ
                                             Web & Mobile App Clients

Installation & Setup

Install asanagi-idx via Homebrew or using your platform's native installer:

# Install via Homebrew (macOS & Linux)
brew install asanagi-idx

# Start the AsanagiIDX daemon with your config file
asanagi-idx server --config /etc/asanagi/idx.yaml

Configuration (idx.yaml)

Create your configuration file at /etc/asanagi/idx.yaml:

# AsanagiIDX Configuration (/etc/asanagi/idx.yaml)
server:
  port: 8090
  db_path: "/var/lib/_asanagi/asanagi/data"

reso_feed:
  url: "https://api.realtor-mls.org/reso/v1"
  client_id: "YOUR_RESO_CLIENT_ID"
  client_secret: "YOUR_RESO_CLIENT_SECRET"
  sync_interval_sec: 300

REST API Endpoints

AsanagiIDX exposes standard HTTP endpoints for property search and listing detail retrieval:

GET /v1/listings Query active MLS listings with filtering (price, beds, baths, city, property type, pagination)
GET /v1/listings/:id Fetch detailed property record with graph-linked media, listing agent, and office
GET /v1/agents/:id Fetch listing agent profile and active listings
GET /v1/offices/:id Fetch brokerage office profile and associated roster/listings
GET /v1/search Fuzzy-match keyword search across address, city, agent name, and MLS ID
# Example listing query: active 3+ bed homes in Austin under $750k
curl -X GET "http://localhost:8090/v1/listings?city=Austin&minBeds=3&maxPrice=750000"

Client Integration

TypeScript / JavaScript Client

import { AsanagiIDXClient } from "@asanasoft/idx-sdk";

const idx = new AsanagiIDXClient({
  endpoint: "https://idx.yourdomain.com",
});

// Fetch active residential listings
const { listings, total } = await idx.listings.search({
  city: "Austin",
  minPrice: 500000,
  bedrooms: 3,
  limit: 20,
});

Flutter / Dart Client

import 'package:asanagi_idx/asanagi_idx.dart';

final idx = AsanagiIDXClient(baseUrl: 'https://idx.yourdomain.com');

final results = await idx.searchListings(
  city: 'Austin',
  minPrice: 500000,
  bedrooms: 3,
);

Licensing

AsanagiIDX requires AsanagiDB. Both components share your single license key issued from Sigil โ€” no separate registration or secondary license keys are required. Simply run asanagidb activate <LICENSE_KEY> to license both services on your host.