Manage listings
Create, change, archive, photos by address. Every listing is reviewed as on the website.
For estate agencies, software vendors and portals: publish listings from your system, fetch enquiries and use tools built for Swiss listings – in German, French, Italian and English.
Create, change, archive, photos by address. Every listing is reviewed as on the website.
Interested people with short profile and fit – straight into your CRM.
Risk score 0–100 for a listing with reasons: advance-payment schemes, price far below the market, copied texts, contact via messenger.
"3½ rooms in Biel up to 2000 with balcony" → filters. Knows Swiss place names, all four languages.
Listing text from facts, translation with Swiss terms (Nebenkosten, 3½ rooms).
Check an export file before it goes live: errors per object, nothing is imported.
curl https://rones.ch/api/v1/partner/tools/risk-check \
-H "Authorization: Bearer rk_live_…" \
-H "Content-Type: application/json" \
-d '{"category":"property","intent":"rent","cantonCode":"ZH","priceAmount":900,
"details":{"areaSqm":85},"description":"Ich bin im Ausland, Kaution bitte per Western Union …"}'{ "score": 70, "level": "high",
"signals": [ { "code": "scam_wording", "weight": 45, "detail": "western union", "meaning": "Typical advance-payment …" }, … ] }| Method | Path | Permission | Purpose |
|---|---|---|---|
GET | /partner/me | – | Company, permissions, quota |
GET | /partner/listings | listings:read | Own listings (every state) |
POST | /partner/listings | listings:write | Create a listing (goes into review) |
PUT | /partner/listings/{id} | listings:write | Change a listing |
POST | /partner/listings/{id}/photos | listings:write | Photo from an https address |
POST | /partner/listings/{id}/archive | listings:write | Archive (let/sold) |
GET | /partner/leads | leads:read | Enquiries with short profile and fit |
GET | /partner/search | search | Search all published listings |
POST | /partner/tools/risk-check | tools | Scam check of a listing |
POST | /partner/tools/understand-search | tools | Sentence → search filters |
POST | /partner/tools/listing-text | tools | Listing text from facts |
POST | /partner/tools/translate | tools | Translate (DE/FR/IT/EN) |
POST | /partner/tools/swissrets/validate | tools | Check a SwissRETS file |
Base URL: https://rones.ch/api/v1
Per month: Start 1,000, Pro 20,000, Business 100,000, Enterprise 1,000,000 calls (more by agreement). 120 calls per minute per key. Every answer carries X-Quota-Remaining and X-RateLimit-Remaining; on 429, Retry-After says when to continue.
401 key missing or invalid · 403 permission missing · 404 not found or not your listing · 400 invalid input (the message says what) · 429 limit reached · 503 service (e.g. AI) unavailable.
Rones reports events by POST to your https address (set up under My Rones → API). Message texts and enquirers' contact details are never included – ids only. Failed deliveries are retried after 1, 5, 30, 120 and 720 minutes.
| Event | When |
|---|---|
lead.created | New enquiry for one of your listings |
listing.published | Listing live after review |
listing.rejected | Listing rejected (with reason) |
listing.changes_approved | Change approved |
listing.changes_rejected | Change rejected (with reason) |
listing.archived | Listing archived |
Every delivery carries Rones-Signature: t=<time>,v1=<HMAC-SHA256 of "<t>.<body>"> with your secret. Check it and reject old timestamps (older than 5 minutes):
import { createHmac, timingSafeEqual } from "node:crypto";
export function verifyRones(rawBody, header, secret) {
const parts = Object.fromEntries(header.split(",").map(p => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(parts.t)) > 300) return false; // older than 5 minutes
const expected = createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex");
return expected.length === parts.v1?.length && timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}All endpoints with their fields as OpenAPI 3: https://rones.ch/api/v1/partner/openapi.json
Questions, a higher quota or a contract for portals: Contact