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')
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.