Skip to content

Accounts API Reference ​

List Accounts ​

GET /api/v1/websites

Retrieve a list of accounts based on various filter criteria.

Query Parameters ​

ParameterTypeDescription
pageNumberPage number (default: 1)
limitNumberNumber of items per page (default: 20, max: 100)
sStringSearch term for name, link, hostname, folderName, or address
idNumberWebsite ID
nameStringAccount name (case-insensitive, partial match)
linkStringAccount link (case-insensitive, partial match)
hostnameStringAccount hostname (case-sensitive, exact match)
primaryIDNumberMain website ID for sub-accounts
typeStringType of listings ('forsale', 'forrent', or 'both')
agencyTypeStringType of agency account
mainNumberMain website ID for filtering sub-accounts
statusBoolean/StringAccount status (true/false, 1/0, 'live'/'active')
iswebsiteclientBoolean/Stringfilter to if account is a website client (true/false, 1/0)
fullSuburbStringFull suburb for location-based filtering
suburbStringSuburb for location-based filtering
stateStringState for location-based filtering
postcodeStringPostcode for location-based filtering
regionStringRegion Names(s), can be comma-separated
areanameStringArea Names(s), can be comma-separated

Example Request ​

javascript
const headers = {
  "x-access-key": "your_access_key_here",
  "x-secret-key": "your_secret_key_here",
};

fetch("https://agencyhubapi.stepps.net/api/v1/websites?name=Real&type=forsale&status=true", { headers })
  .then((response) => response.json())
  .then((data) => console.log(data));

Example Response ​

json
{
  "total": 352,
  "totalPage": 36,
  "data": [
    {
      "websiteID": 123,
      "logo": {
        "light": "",
        "dark": "",
        "override": "https://assets-agencyhub.stepps.net/realestatwebsite/account-logo.png"
      },
      "favicon": "https://assets-agencyhub.stepps.net/realestatwebsite/fav.jpg",
      "name": "Real Estat Website",
      "link": "https://www.realestatwebsite.com.au/",
      "hostname": "realestatwebsite.com.au",
      "isWebsiteClient": false,
      "config": {
        "primaryColor": "#000000",
        "secondaryColor": "#f2f2f2",
        "tertiaryColor": "",
        "video": "",
        "cloudFrontCDN": "",
        "cloudFlareCDN": "",
        "listingTypes": {
          "hasForSale": true,
          "hasForRent": true
        }
      }
    }
    // ... more accounts
  ]
}

Get a Single Account ​

GET /api/v1/websites/{id}

Retrieve details of a specific account by its ID.

Path Parameters ​

ParameterTypeDescription
idString/NumberUnique identifier of the account (can be MongoDB ObjectId or websiteID)

Example Request ​

javascript
const headers = {
  "x-access-key": "your_access_key_here",
  "x-secret-key": "your_secret_key_here",
};

fetch("https://agencyhubapi.stepps.net/api/v1/websites/123", { headers })
  .then((response) => response.json())
  .then((data) => console.log(data));

Example Response ​

json
{
  "websiteID": 364,
  "logo": {
    "light": "",
    "dark": "",
    "override": "https://assets-agencyhub.stepps.net/realestatwebsite/logo.png"
  },
  "favicon": "https://assets-agencyhub.stepps.net/realestatwebsite/fav.jpg",
  "address": {
    "streetAddress": "370 Glen Huntly Road",
    "fullSuburb": "Elsternwick, VIC 3185",
    "fullAddress": "370 Glen Huntly Road, Elsternwick, VIC 3185",
    "subNumber": "",
    "lotNumber": "",
    "streetNumber": "370",
    "street": "Glen Huntly Road",
    "suburb": "Elsternwick",
    "state": "VIC",
    "postcode": "3185",
    "latitude": "",
    "longitude": ""
  },
  "name": "Real Estat Website",
  "link": "https://www.realestatwebsite.com.au/",
  "hostname": "realestatwebsite.com.au",
  "isWebsiteClient": false,
  "type": "primary-account",
  "subsiteDetails": {
    "mainWebsiteID": ,
    "listingSource": "",
    "listingOfficeIDs": []
  },
  "config": {
    "primaryColor": "#000000",
    "secondaryColor": "#f2f2f2",
    "tertiaryColor": "",
    "video": "",
    "cloudFrontCDN": "",
    "cloudFlareCDN": "",
    "listingTypes": {
      "hasForSale": true,
      "hasForRent": true
    }
  },
  "about": "office description",
  "contacts": {
    "email": {
      "office": "info@realestatwebsite.com.au",
      "sales": "",
      "pm": ""
    },
    "phone": {
      "office": "",
      "sales": "",
      "pm": ""
    },
    "fax": {
      "office": "",
      "sales": "",
      "pm": ""
    }
  },
  "socialMedia": {
    "facebook": "",
    "twitter": "",
    "instagram": "",
    "linkedIn": "",
    "youtube": ""
  },
  "integrations": {
    "reviews": "",
    "offmarketLink": "",
    "propertyEstimateLink": "",
    "propertyAppraisalLink": "",
    "switchToUsLink": "",
    "suburbProfileLink": "https://www.realestatwebsite.com.au/suburb/",
    "privacyPolicyLink": "https://www.realestatwebsite.com.au/privacy-policy/"
  }
}

Accounts API Reference ​

Create an Account ​

POST /api/v1/accounts

Create a new account.

Request Body ​

The request body should contain the account details based on the following fields:

FieldTypeDescriptionExample
nameStringName of the account (required)Real Estate Experts
linkStringWebsite link (required)https://realestateexperts.com
statusBooleanAccount statustrue
typeStringType of accountprimary-account
logoObjectLogo URLs for light and dark themesSee detailed example below
faviconStringFavicon URLhttps://example.com/favicon.png
accessKeyStringAccess key for the account"abc123xyz789"
secretKeyStringSecret key for the account"secretkey123"
sendToWPBooleanWordPress integration statustrue
isDisplayToFrontEndBooleanDisplay status on front endtrue
showOnListdBubbleBooleanShow on ListdBubbletrue
isWebsiteClientBooleanIs a website clienttrue
configObjectConfiguration detailsSee detailed example below
aboutStringAbout information"Real Estate Experts has been serving the community for over 20 years..."
contactsObjectContact informationSee detailed example below
socialMediaObjectSocial media linksSee detailed example below
integrationsObjectIntegration linksSee detailed example below
subsiteDetailsObjectSubsite DetailsSee detailed example below
addressObjectOffice AddressSee detailed example below
hooksArrayAPI Integrations for managing listing updatesSee detailed example below
enabledSlugBooleanSet true if want to use the listing slug formattrue, default is false
slugsArrayPlotted slug format for each postypesSee detailed example below

Detailed examples for complex fields: ​

  1. logo
json
{
  "light": "https://example.com/logo-light.png",
  "dark": "https://example.com/logo-dark.png",
  "override": "https://example.com/logo-override.png"
}
  1. config
json
{
  "primaryColor": "#FF5733",
  "secondaryColor": "#33FF57",
  "tertiaryColor": "#5733FF",
  "video": "https://youtube.com/watch?v=abcdefghijk",
  "cloudFrontCDN": "https://d1234abcd.cloudfront.net",
  "cloudFlareCDN": "https://your-domain.com",
  "suburbProfileLink": "https://realestateexperts.com/suburbs/{{suburb}}",
  "listingTypes": {
    "hasForSale": true,
    "hasForRent": true
  }
}
  1. contacts
json
{
  "email": {
    "office": "info@realestateexperts.com",
    "sales": "sales@realestateexperts.com",
    "pm": "propertymanagement@realestateexperts.com"
  },
  "phone": {
    "office": "+61 2 1234 5678",
    "sales": "+61 2 8765 4321",
    "pm": "+61 2 1357 9024"
  },
  "fax": {
    "office": "+61 2 9876 5432"
  }
}
  1. socialMedia
json
{
  "facebook": "https://facebook.com/realestateexperts",
  "twitter": "https://twitter.com/realestateexp",
  "instagram": "https://instagram.com/realestateexperts",
  "linkedIn": "https://linkedin.com/company/real-estate-experts",
  "youtube": "https://youtube.com/c/realestateexperts"
}
  1. integrations
json
{
  "reviews": "https://reviews.realestateexperts.com",
  "offmarketLink": "https://realestateexperts.com/off-market",
  "propertyEstimateLink": "https://realestateexperts.com/estimate",
  "propertyAppraisalLink": "https://realestateexperts.com/appraisal",
  "switchToUsLink": "https://realestateexperts.com/switch-to-us",
  "suburbProfileLink": "https://realestateexperts.com/suburbs/{{suburb}}",
  "privacyPolicyLink": "https://realestateexperts.com/privacy-policy"
}
  1. subsiteDetails
json
{
  "mainWebsiteID": 12345,
  "listingSource": "officeID",
  "listingOfficeIDs": ["OFF001", "OFF002"]
}
  1. address
json
{
  "streetAddress": "123 Main Street",
  "suburb": "Sydney",
  "state": "NSW",
  "postcode": "2000",
  "country": "Australia"
}
  1. hooks
json
[
  {
    "name": "New Current Listings",
    "url": "https://example.com/webhook",
    "trigger": "new-current-listing"
  }
]
  1. slugs
json
[
  {
    "listingType": "residential",
    "slug": "/property/{category}-{address.state}-{address.suburb}-{uniqueID}"
  },
  {
    "listingType": "rental",
    "slug": "/rental/{category}-{address.state}-{address.suburb}-{uniqueID}"
  }
]

Example Request ​

javascript
const headers = {
  "x-access-key": "your_access_key_here",
  "x-secret-key": "your_secret_key_here",
  "Content-Type": "application/json",
};

const body = JSON.stringify({
  name: "Real Estate Experts",
  link: "https://realestateexperts.com",
  status: true,
  type: "sub-account",
  logo: {
    light: "https://example.com/logo-light.png",
    dark: "https://example.com/logo-dark.png",
    override: "https://example.com/logo-override.png",
  },
  favicon: "https://example.com/favicon.png",
  accessKey: "abc123xyz789",
  secretKey: "secretkey123",
  sendToWP: true,
  isDisplayToFrontEnd: true,
  showOnListdBubble: true,
  isWebsiteClient: true,
  config: {
    primaryColor: "#FF5733",
    secondaryColor: "#33FF57",
    listingTypes: {
      hasForSale: true,
      hasForRent: true,
    },
  },
  about: "Real Estate Experts has been serving the community for over 20 years...",
  contacts: {
    email: {
      office: "info@realestateexperts.com",
      sales: "sales@realestateexperts.com",
    },
    phone: {
      office: "+61 2 1234 5678",
    },
  },
  socialMedia: {
    facebook: "https://facebook.com/realestateexperts",
    instagram: "https://instagram.com/realestateexperts",
  },
  integrations: {
    reviews: "https://reviews.realestateexperts.com",
    propertyEstimateLink: "https://realestateexperts.com/estimate",
  },
  subsiteDetails: {
    mainWebsiteID: 12345,
    listingSource: "officeID",
    listingOfficeIDs: ["OFF001", "OFF002"],
  },
  address: {
    streetAddress: "123 Main Street",
    suburb: "Sydney",
    state: "NSW",
    postcode: "2000",
  },
  hooks: [
    {
      name: "New Current Listings",
      url: "https://example.com/webhook",
      trigger: "new-current-listing",
    },
  ],
  slugs: [
    {
      listingType: "residential",
      slug: "/property/{category}-{address.state}-{address.suburb}-{uniqueID}",
    },
    {
      listingType: "rental",
      slug: "/rental/{category}-{address.state}-{address.suburb}-{uniqueID}",
    },
  ],
});

fetch("https://agencyhubapi.stepps.net/api/v1/accounts", {
  method: "POST",
  headers: headers,
  body: body,
})
  .then((response) => response.json())
  .then((data) => console.log(data));

Example Response ​

json
{
  "message": "Account created successfully",
  "account": {
    "websiteID": 12346,
    "name": "Real Estate Experts",
    "link": "https://realestateexperts.com",
    "status": true,
    "type": "sub-account",
    "logo": {
      "light": "https://example.com/logo-light.png",
      "dark": "https://example.com/logo-dark.png",
      "override": "https://example.com/logo-override.png"
    },
    "favicon": "https://example.com/favicon.png",
    "accessKey": "abc123xyz789",
    "secretKey": "secretkey123",
    "sendToWP": true,
    "isDisplayToFrontEnd": true,
    "showOnListdBubble": true,
    "isWebsiteClient": true,
    "config": {
      "primaryColor": "#FF5733",
      "secondaryColor": "#33FF57",
      "listingTypes": {
        "hasForSale": true,
        "hasForRent": true
      }
    },
    "about": "Real Estate Experts has been serving the community for over 20 years...",
    "contacts": {
      "email": {
        "office": "info@realestateexperts.com",
        "sales": "sales@realestateexperts.com"
      },
      "phone": {
        "office": "+61 2 1234 5678"
      }
    },
    "socialMedia": {
      "facebook": "https://facebook.com/realestateexperts",
      "instagram": "https://instagram.com/realestateexperts"
    },
    "integrations": {
      "reviews": "https://reviews.realestateexperts.com",
      "propertyEstimateLink": "https://realestateexperts.com/estimate"
    },
    "subsiteDetails": {
      "mainWebsiteID": 12345,
      "listingSource": "officeID",
      "listingOfficeIDs": ["OFF001", "OFF002"]
    },
    "address": {
      "streetAddress": "123 Main Street",
      "suburb": "Sydney",
      "state": "NSW",
      "postcode": "2000"
    }
  }
}

Update an Account ​

PUT /api/v1/websites/{id}

Update an existing account's information.

Path Parameters ​

ParameterTypeDescription
idString/NumberUnique identifier of the account (can be MongoDB ObjectId or websiteID)

Request Body ​

Include any fields from the IWebsite interface that you want to update.

Example Request ​

javascript
const headers = {
  "x-access-key": "your_access_key_here",
  "x-secret-key": "your_secret_key_here",
  "Content-Type": "application/json",
};

const body = JSON.stringify({
  config: {
    primaryColor: "#00FF00",
    listingTypes: {
      hasForRent: true,
    },
  },
  contacts: {
    email: {
      sales: "sales@newrealestatecompany.com",
    },
  },
});

fetch("https://agencyhubapi.stepps.net/api/v1/websites/12346", {
  method: "PUT",
  headers: headers,
  body: body,
})
  .then((response) => response.json())
  .then((data) => console.log(data));

Example Response ​

json
{
  "name": "Real Estate Experts",
  "link": "https://realestateexperts.com",
  "status": true,
  "type": "primary-account",
  "logo": {
    "light": "https://example.com/logo-light.png",
    "dark": "https://example.com/logo-dark.png",
    "override": "https://example.com/logo-override.png"
  },
  "favicon": "https://example.com/favicon.png",
  "accessKey": "abc123xyz789",
  "secretKey": "secretkey123",
  "sendToWP": true,
  "isDisplayToFrontEnd": true,
  "showOnListdBubble": true,
  "isWebsiteClient": true,
  "config": {
    "primaryColor": "#00FF00",
    "secondaryColor": "#33FF57",
    "listingTypes": {
      "hasForSale": true,
      "hasForRent": true
    }
  },
  "about": "Real Estate Experts has been serving the community for over 20 years...",
  "contacts": {
    "email": {
      "office": "info@realestateexperts.com",
      "sales": "sales@newrealestatecompany.com"
    },
    "phone": {
      "office": "+61 2 1234 5678"
    }
  },
  "socialMedia": {
    "facebook": "https://facebook.com/realestateexperts",
    "instagram": "https://instagram.com/realestateexperts"
  },
  "integrations": {
    "reviews": "https://reviews.realestateexperts.com",
    "propertyEstimateLink": "https://realestateexperts.com/estimate"
  },
  "subsiteDetails": {
    "mainWebsiteID": 12345,
    "listingSource": "officeID",
    "listingOfficeIDs": ["OFF001", "OFF002"]
  },
  "address": {
    "streetAddress": "123 Main Street",
    "suburb": "Sydney",
    "state": "NSW",
    "postcode": "2000"
  },
  "hooks": [
    {
      "name": "New Current Listings",
      "url": "https://example.com/webhook",
      "trigger": "new-current-listing"
    }
  ],
  "slugs": [
    {
      "listingType": "residential",
      "slug": "/property/{category}-{address.state}-{address.suburb}-{uniqueID}"
    },
    {
      "listingType": "rental",
      "slug": "/rental/{category}-{address.state}-{address.suburb}-{uniqueID}"
    }
  ]
}

Delete an Account ​

DELETE /api/v1/websites/{id}

Delete an account from the system.

Path Parameters ​

ParameterTypeDescription
idString/NumberUnique identifier of the account (can be MongoDB ObjectId or websiteID)

Example Request ​

javascript
const headers = {
  "x-access-key": "your_access_key_here",
  "x-secret-key": "your_secret_key_here",
};

fetch("https://agencyhubapi.stepps.net/api/v1/websites/12346", {
  method: "DELETE",
  headers: headers,
})
  .then((response) => response.json())
  .then((data) => console.log(data));

Example Response ​

json
{
  "message": "Account deleted successfully",
  "deletedAccount": {
    "websiteID": 12346,
    "name": "New Real Estate Co"
    // ... other details of the deleted account
  }
}

Error Handling ​

The API uses conventional HTTP response codes to indicate the success or failure of an API request. Codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted), and codes in the 5xx range indicate an error with our servers.

CodeDescription
200OK - The request was successful
201Created - The request was successful and a resource was created
400Bad Request - The request was invalid or cannot be served
401Unauthorized - The request requires authentication
403Forbidden - The server understood the request but refuses to authorize it
404Not Found - The requested resource could not be found
500Internal Server Error - The server encountered an unexpected condition

For more information on using these endpoints, please refer to our Authentication Guide and Quick Start Guide.