Skip to main content

API Feeds

API feeds allow your agency software or CRM to push listing data directly to FeedSync in real time — without FTP exports or file uploads. Your software sends an update the moment a property changes, and FeedSync distributes it to your connected sites immediately.


How it works

Rather than FeedSync polling your software on a schedule, your agency software initiates the connection. When a property is created, updated, or removed in your system, your software authenticates with FeedSync and sends the listing data directly. FeedSync receives it, processes it, and updates your connected sites — all within seconds.

The integration uses the industry-standard OAuth 2.0 Client Credentials flow for authentication, and accepts property data in REAXML format.

The steps involved are:

  1. You create an OAuth Client in FeedSync and link it to a specific feed
  2. FeedSync generates a Client ID and Client Secret for your agency software
  3. When your software wants to send a listing, it uses those credentials to request a short-lived access token from FeedSync
  4. Your software sends the listing XML to FeedSync's upload endpoint, including the access token to prove its identity
  5. FeedSync accepts the upload, queues it for processing, and returns an Upload ID as confirmation
  6. Your software can use the Upload ID to check whether the listing was processed successfully

When to use an API feed

Use an API feed when:

  • Your agency software or CRM supports pushing data to external systems via HTTP
  • You want real-time listing updates — changes appear in seconds, not on a schedule
  • Your software vendor has indicated they support FeedSync's push API
  • You are setting up a direct integration between a bespoke system and FeedSync

If your software does not support HTTP push integrations, use FTP or File Upload instead.


Setting up an OAuth Client

An OAuth Client represents a single trusted connection between a piece of software and a FeedSync feed. Each client is issued its own Client ID and Client Secret, and is linked to one specific feed — so uploads from that client are always delivered to the right place.

Creating a client

  1. Go to Settings → OAuth Clients
  2. Click Create OAuth Client
  3. Give it a clear, descriptive name — for example, "Console Cloud - George Street Office" or "Custom CRM Integration"
  4. Select the Feed this client should deliver data to. Once created, this cannot be changed — if you need to point to a different feed, create a new client.
  5. Click Create
  6. You will be shown the Client ID and Client Secret — copy both immediately. The secret is shown only once and cannot be retrieved again.
  7. Provide the Client ID and Client Secret to your agency software or integration developer
caution

Treat the Client Secret like a password. Do not share it via email or store it in plain text. If it is lost or compromised, regenerate it immediately — see Rotating a secret below.

One client per system

If you have multiple agency software systems pushing to the same feed, create a separate OAuth Client for each. This way you can revoke one system's access without affecting others, and the upload history remains clearly attributed to each source.


Authentication and access tokens

FeedSync uses the OAuth 2.0 Client Credentials grant type. Your agency software never needs to log in as a user — it authenticates using the Client ID and Client Secret you provided.

How token requests work

Before sending a listing, your software requests an access token from FeedSync's token endpoint:

POST /api/v1/oauth/token

It sends the Client ID and Client Secret using HTTP Basic Authentication, specifying the scope listing:listings:write. FeedSync validates the credentials and returns an access token.

Your software then includes this token in the Authorization: Bearer header of every subsequent upload request. FeedSync uses it to identify which OAuth Client is making the request and which feed the upload belongs to.

Token lifetime

Access tokens are valid for 1 hour. After they expire, your software must request a new one using the same Client ID and Client Secret. Most software handles this automatically — you should not need to do anything manually.

If your software is caching tokens, ensure it requests a new one before the current token expires. Requests made with an expired token will be rejected with an authentication error.

Required scope

When requesting a token, the scope listing:listings:write must be included. This is the only scope required for push integrations. If the wrong scope is requested, or the scope is missing, FeedSync will not issue a token.


Sending listings (the upload endpoint)

Once your software has a valid access token, it sends the listing data to FeedSync's upload endpoint:

POST /api/v1/listing/v1/upload

The listing XML is sent as the request body, with Content-Type: application/xml and Authorization: Bearer {token} headers.

What to send

Listing data must be in REAXML format, sent as application/xml. A single upload should contain one property — do not combine multiple listings in a single upload request.

FeedSync accepts the following REAXML property types:

Property TypeDescription
ResidentialResidential property for sale
RentalResidential property for rent
CommercialCommercial property (sale or lease)
LandVacant land
RuralRural and farming properties
BusinessBusiness for sale
Commercial LandCommercial land
Holiday RentalShort-term holiday rental

The type is determined by the XML structure — you do not need to specify it separately.

Required fields

Every upload must include:

  • agentID — Your agency identifier. This must match the agency configured in FeedSync.
  • uniqueID — The unique identifier for this listing in your software. FeedSync uses this to match incoming data against existing listings.

If either field is missing, FeedSync will reject the upload.

Upload size limit

Individual uploads are limited to 10 MB per request. This is sufficient for a single property with full listing data. Images themselves are not uploaded — only image URLs are included in the XML. If a single property's XML exceeds 10 MB, contact support.

What FeedSync returns

On a successful upload, FeedSync returns an Upload ID — a unique identifier for that specific upload. Your software should store this and use it to check processing status.

FeedSync responds with 202 Accepted, meaning the upload has been received and queued for processing. It does not wait for processing to complete before responding.


Tracking upload status

Because processing happens asynchronously after the upload is accepted, FeedSync provides a way to check whether a specific upload was processed successfully.

Using the Upload ID returned when you submitted the listing, your software can query the upload status endpoint:

GET /api/v1/listing/v1/upload/{uploadId}

Replace {uploadId} with the ID returned from the upload response.

Status values

StatusMeaning
In ProgressFeedSync has received the upload and is currently processing it
CompletedThe listing has been successfully imported and is live
FailedProcessing failed — the listing was not imported

You can also search upload history by agency ID or listing ID:

GET /api/v1/listing/v1/upload?agencyId=YOUR_AGENCY_ID&externalListingId=YOUR_LISTING_ID

This is useful when diagnosing why a specific property is not appearing in FeedSync.


What your software vendor needs

If you are working with a software vendor or developer to set up the integration, provide them with the following:

DetailValue
Base URLhttps://feedsync.com.au/api/v1
OAuth Token EndpointPOST /api/v1/oauth/token
Upload EndpointPOST /api/v1/listing/v1/upload
Check Upload StatusGET /api/v1/listing/v1/upload/{uploadId}
Search Upload HistoryGET /api/v1/listing/v1/upload?agencyId=X&externalListingId=Y
Client IDGenerated when you create the OAuth Client
Client SecretGenerated when you create the OAuth Client
Auth MethodHTTP Basic (client_id:client_secret Base64-encoded)
Grant Typeclient_credentials
Required Scopelisting:listings:write
Data FormatREAXML XML
Content-Type Headerapplication/xml
Max Upload Size10 MB per request

Your vendor's development team handles the technical implementation. Your responsibility is creating the OAuth Client in FeedSync and providing the credentials.


Managing credentials

Rotating a secret

If your Client Secret is compromised, lost, or you want to cycle credentials routinely:

  1. Go to Settings → OAuth Clients
  2. Find the client you want to update
  3. Click Regenerate Secret
  4. Copy the new secret and update it in your agency software immediately

The old secret stops working the moment it is rotated. Any requests using the old secret will receive an authentication error until the new secret is in place.

Revoking access

To permanently disconnect an external system from FeedSync:

  1. Go to Settings → OAuth Clients
  2. Find the client you want to remove
  3. Click Revoke or Delete

Requests from that system will be immediately rejected. Existing listings in FeedSync are not affected — only future uploads are blocked.


Troubleshooting

Listings are not appearing after a push

Check the feed's Files tab. If the upload appears in the Failed tab, click it to view the error. Common causes:

  • Missing agentID or uniqueID in the XML
  • Malformed or invalid REAXML
  • The OAuth Client is linked to the wrong feed — the data was delivered to a different feed

Authentication is failing (401 error)

  • Verify the Client ID and Client Secret are entered in your agency software exactly as provided — no extra spaces or characters
  • Check that the OAuth Client has not been revoked under Settings → OAuth Clients
  • Confirm the scope listing:listings:write is being requested when obtaining a token

Access denied (403 error)

The token is valid but the client does not have permission to upload to the target feed. This usually means the OAuth Client was linked to a different feed than expected. Create a new client linked to the correct feed.

Unsupported Media Type (415 error)

The request is not being sent with Content-Type: application/xml. Your software must set this header on every upload request.

Token errors / expired token

Access tokens expire after 1 hour. If your software caches tokens, ensure it requests a new one before expiry. If tokens are being rejected immediately after being issued, check that the system clock on your server is accurate — token validation is time-sensitive.

Upload accepted but never completed

If the status stays as "In Progress" for an extended period, the processing queue may be delayed. Check the feed's Files tab. If the file is stuck in Input, contact support.