Inserate verwalten
Anlegen, ändern, archivieren, Fotos per Adresse. Jedes Inserat wird wie auf der Website geprüft.
Für Immobilienfirmen, Software-Anbieter und Portale: Inserate aus deinem System veröffentlichen, Anfragen abholen und Werkzeuge nutzen, die mit Schweizer Inseraten umgehen können – in Deutsch, Französisch, Italienisch und Englisch.
Anlegen, ändern, archivieren, Fotos per Adresse. Jedes Inserat wird wie auf der Website geprüft.
Interessenten mit Kurzprofil und Passung – direkt in dein CRM.
Risiko-Wert 0–100 für ein Inserat mit Begründung: Vorauszahlungs-Maschen, Preis weit unter dem Markt, kopierte Texte, Kontakt über Messenger.
«3½ Zimmer in Biel bis 2000 mit Balkon» → Filter. Kennt Schweizer Ortsnamen, alle vier Sprachen.
Inseratetext aus Fakten, Übersetzung mit Schweizer Begriffen (Nebenkosten, 3½ Zimmer).
Export-Datei prüfen, bevor sie live geht: Fehler pro Objekt, nichts wird importiert.
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 …" }, … ] }| Methode | Pfad | Recht | Zweck |
|---|---|---|---|
GET | /partner/me | – | Firma, Rechte, Kontingent |
GET | /partner/listings | listings:read | Eigene Inserate (alle Status) |
POST | /partner/listings | listings:write | Inserat anlegen (geht in die Prüfung) |
PUT | /partner/listings/{id} | listings:write | Inserat ändern |
POST | /partner/listings/{id}/photos | listings:write | Foto per https-Adresse |
POST | /partner/listings/{id}/archive | listings:write | Archivieren (vermietet/verkauft) |
GET | /partner/leads | leads:read | Anfragen mit Kurzprofil und Passung |
GET | /partner/search | search | Alle veröffentlichten Inserate durchsuchen |
POST | /partner/tools/risk-check | tools | Betrugsprüfung eines Inserats |
POST | /partner/tools/understand-search | tools | Satz → Suchfilter |
POST | /partner/tools/listing-text | tools | Inseratetext aus Fakten |
POST | /partner/tools/translate | tools | Übersetzen (DE/FR/IT/EN) |
POST | /partner/tools/swissrets/validate | tools | SwissRETS-Datei prüfen |
Base URL: https://rones.ch/api/v1
Pro Monat: Start 1 000, Pro 20 000, Business 100 000, Enterprise 1 000 000 Aufrufe (mehr nach Vereinbarung). Pro Schlüssel 120 Aufrufe pro Minute. Jede Antwort zeigt X-Quota-Remaining und X-RateLimit-Remaining; bei 429 sagt Retry-After, wann es weitergeht.
401 Schlüssel fehlt oder ungültig · 403 Recht fehlt · 404 nicht gefunden oder nicht dein Inserat · 400 Eingabe ungültig (die Meldung sagt was) · 429 Limit erreicht · 503 Dienst (z. B. KI) nicht verfügbar.
Rones meldet Ereignisse per POST an deine https-Adresse (einrichten unter Mein Rones → API). Nachrichtentexte und Kontaktdaten der Interessenten sind nie enthalten – nur Ids. Fehlgeschlagene Zustellungen werden nach 1, 5, 30, 120 und 720 Minuten wiederholt.
| Ereignis | Wann |
|---|---|
lead.created | Neue Anfrage zu einem deiner Inserate |
listing.published | Inserat nach der Prüfung online |
listing.rejected | Inserat abgelehnt (mit Begründung) |
listing.changes_approved | Änderung freigegeben |
listing.changes_rejected | Änderung abgelehnt (mit Begründung) |
listing.archived | Inserat archiviert |
Jede Zustellung trägt Rones-Signature: t=<Zeit>,v1=<HMAC-SHA256 von "<t>.<Body>"> mit deinem Geheimnis. Prüfe sie und weise alte Zeitstempel (älter als 5 Minuten) ab:
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));
}Alle Endpunkte mit Feldern als OpenAPI 3: https://rones.ch/api/v1/partner/openapi.json
Fragen, höheres Kontingent oder ein Vertrag für Portale: Kontakt