API Authentication
The FeedSync read API lets you fetch your listings, agents, media, and stats, and capture leads, programmatically.
Base URL
https://feedsync.com.au/api/v1
API keys
The read API authenticates with an API key. Keys are created per site and can only access that site's data.
- In the dashboard, open the site you want to expose and go to its API keys.
- Create a key, give it a name, and choose its scopes (see below).
- Copy the key — it's shown once and looks like
fs_xxxxxxxx…. Store it securely and never commit it to source control.
When you connect a WordPress site via pairing, a read-only key is created for it automatically — you don't need to make one by hand for that.
Making a request
Send the key as a Bearer token (or the X-API-Key header):
curl https://feedsync.com.au/api/v1/sites/{site}/listings \
-H "Authorization: Bearer fs_your_api_key" \
-H "Accept: application/json"
{site} is your site's UUID — the site the key belongs to.
Scopes
Each key grants only the scopes you assign:
| Scope | Allows |
|---|---|
listings:read | Read listings, search, featured, fields, and media objects. |
stats:read | Read stats summaries. |
agents:read | Read agents. |
leads:write | Submit leads. |
A request missing the required scope returns 403:
{ "error": "Forbidden: Missing listings:read scope" }
Rate limiting
Requests are rate-limited per minute, based on your plan (Starter 60/min, Professional 600/min, Enterprise unlimited). The limit is shared across all keys on a site, so adding more keys doesn't raise throughput.
Responses include:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed per minute. |
X-RateLimit-Remaining | Requests left in the current window. |
Exceeding the limit returns 429 with a Retry-After header:
{ "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "Too many requests." } }
Errors
| Status | When |
|---|---|
401 | Missing or invalid API key — { "error": { "code": "UNAUTHORIZED", … } } |
403 | Key lacks the required scope, or can't access this site. |
404 | The resource doesn't exist. |
422 | Invalid parameters — { "error": { "code": "VALIDATION_ERROR", "details": { … } } } |
429 | Rate limit exceeded. |
Uploading data (push API)
Authentication above covers the read API. To push REAXML into FeedSync programmatically, use the separate OAuth2 upload API — see API Feeds.