Developer Documentation
Platform Overview
Authentication
API Services
Overview Accounts Accounts: Associations Accounts: Metadata Accounts: Profile Appstore: Users Broker Distributions Broker Tours Consumers Consumers: Linked Agents Contacts Contacts: Activity Contacts: Export Contacts: Tags Contacts: Portal Accounts Developers: Identities Developers: Keys Developers: Authorizations Developers: Billing Summary Developers: Change History Developers: Domains Developers: News Feed Webhooks Developers: Roles Developers: Syndications Developers: Templates Developers: Usage Detail Developers: Usage Summary Devices Flexmls: Email Links Flexmls: Listing Meta Origins Flexmls: Listing Meta Translations Flexmls: Listing Meta Field List Translations Flexmls: Listing Reports Flexmls: Listing Updates Flexmls: Mapping Layers Flexmls: Mapping Shapegen IDX IDX Links Listing Carts Listing Carts: Portal/VOW Carts Incomplete Listings Incomplete Listings: Documents Incomplete Listings: Documents Metadata Incomplete Listings: Document Uploads Incomplete Listings: FloPlans Incomplete Listings: Photos Incomplete Listings: Photos Metadata Incomplete Listings: Photo Uploads Incomplete Listings: Rooms Incomplete Listings: Tickets Incomplete Listings: Units Incomplete Listings: Videos Incomplete Listings: Videos Metadata Incomplete Listings: Virtual Tours Incomplete Listings: Virtual Tours Metadata Listings Listings: Clusters Listings: Documents Listings: Documents Metadata Listings: FloPlans Listings: Historical Listings: History Listings: Hot Sheet Parameters Listings: Notes Listings: Search Parameters Listings: Open Houses Listings: Photos Listings: Photos Metadata Listings: Photo Uploads Listings: Document Uploads Listings: Rental Calendar Listings: Rooms Listings: Rules Listings: Tour of Homes Listings: Tickets Listings: Units Listings: Validation Listings: Videos Listings: Videos Metadata Listings: Virtual Tours Listings: Virtual Tours Metadata Listing Meta: Custom Fields Listing Meta: Custom Field Groups Listing Meta: Field Order Listing Meta: Field Relations Listing Meta: Property Types Listing Meta: Rooms Listing Meta: Standard Fields Listing Meta: Units Registered Listings Market Statistics Messages News Feed News Feed: Curation News Feed: Events News Feed: Groups News Feed: Metadata News Feed: Restrictions News Feed: Schedule News Feed: Settings News Feed: Templates Notifications Open Houses Overlays Overlays: Shapes Portals Portal Groups Portal Groups: Current Portal Groups: Tags Portals: Listing Categories Portals: Metadata Preferences Properties Properties: Clusters Properties Meta: Standard Fields Saved Searches Saved Searches: Provided Saved Searches: Restrictions Saved Searches: Tags Search Templates: Quick Searches Search Templates: Views Search Templates: Sorts Shared Links System Info System Info: Languages System Info: Search Templates
API Explorer
Supporting Documentation
Examples
RESO Web API
RETS
FloPlan
Terms of Use

RESO Web API Overview

Built within the Spark® API is a /Reso/OData endpoint that implements the RESO Web API and provides data using the RESO Data Dictionary.

The documentation we provide does not fully document the RESO Web API itself; rather, it's meant to get you up and running on our implementation of the standard.

  1. Overview
  2. Authorization
  3. Making Requests
    1. Resources
    2. Retrieving Metadata
    3. Retrieving Data
    4. Request Parameters
  4. Response Description
  5. Replication
 

1. Overview

The RESO Web API endpoint is at:

https://sparkapi.com/Reso/OData
 

Because our RESO Web API shares the same authentication and authorization infrastructure as the Spark API, you can use the same API keys provided for the Spark API to access the RESO Web API endpoints.

 

2. Authorization

The method for obtaining authorization from end users and making authenticated requests is identical to accessing the Spark API directly. See our authentication documentation for more information.

 

3. Making Requests

  1. Resources
  2. Retrieving Metadata
  3. Retrieving Data
  4. Request Parameters
 

Resources

Our RESO Web API provides the following distinct endpoints:

 

Retrieving Metadata

Metadata is accessible at:

https://sparkapi.com/Reso/OData/$metadata
 

Retrieving Data

Using the Property resource as our example, all properties can be retrieved at:

https://sparkapi.com/Reso/OData/Property
 

An individual property can be retrieved at:

https://sparkapi.com/Reso/OData/Property('<PropertyId>')
 

<PropertyId> is the same data as StandardFields.ListingKey, or Id when using the Spark API listings service. If a listing's Id and ListingKey is 20100000000000000000000000, your request should be:

https://sparkapi.com/Reso/OData/Property('20100000000000000000000000')
 

Note that the Media endpoint is accessed as a subresource of listings. So, to find the media for listing 20100000000000000000000000, your would hit the URI:

https://sparkapi.com/Reso/OData/Property('20100000000000000000000000')/Media
 

Request Parameters

Each service supports some or all of the request parameters documented on our RESO request parameters page.

 

Response Description

This OData service only responds to JSON format except for the $metadata endpoint, which returns XML.

 

Encoded values

OData specifications that the RESO Web API is built upon dictate that certain values can't contain spaces, non-alpha-numeric characters, etc. When they do, the values need to be encoded. Some field values and all custom field names are encoded. These values start with b__, and the corresponding human-readable values can be looked up in the metadata. A text search for the encoded b__ value in the metadata will highlight the corresponding display value, which should be swapped in for the encoded value. Here's an example of a metadata entry that connects an encoded value and a display value:

<Property Name="b__59d9ijzegz196o3kefjd2ts0436qcbskxgs6wstjyz3jv23mg52g0vlbszpq4o5o02t4cuz7uwhsz8z" Type="Edm.Int64">
      <Annotation Term="MLS.OData.Metadata.LocalName" String="Main House # of Generators"/>
  </Property>

 

Do not hardcode the specific encoded values to translations. The encoded translation values are subject to change without notice. As such, a dynamic process to pull metadata in real-time and use it for the translations is required.