För mäklare

Integrationsguide: importera objekt från ditt mäklarsystem

Koppla Vitec, Mspecs, SoftOne eller ett eget system till Bonett. Din befintliga objektexport i XML eller JSON räcker – vi matchar fälten automatiskt, geokodar adressen och lägger nya objekt som utkast tills du publicerar.

Så fungerar integrationen

1. API-nyckel

Skapa en nyckel i mäklardashboarden och lägg in den i ditt system.

2. Skicka export

POST:a din vanliga objektexport som XML eller JSON till vår endpoint.

3. Håll synkat

Kör anropet vid varje ändring – samma objekt-ID uppdateras, inget dubbleras.

Steg 1 – Verifiera mäklarkontot

Skapa ett konto på Bonett och fyll i byrå samt FMI-nummer under mäklarverifieringen. Registrerade byrådomäner godkänns direkt, övriga granskas manuellt (oftast samma arbetsdag). Först därefter kan API-nycklar användas.

Steg 2 – Skapa en API-nyckel

Gå till API & integration i mäklardashboarden och klicka på Ny nyckel. Nyckeln visas bara en gång – spara den i ditt system eller i en lösenordshanterare. Du kan när som helst återkalla en nyckel utan att påverka publicerade objekt.

Steg 3 – Skicka objekten

Endpointen tar emot både XML och JSON. Skicka nyckeln i headern x-api-key. Max 100 objekt och 2 MB per anrop.

POST https://bonett.lovable.app/api/public/v1/listings/import
x-api-key: DIN_API_NYCKEL
Content-Type: application/xml

Exempel – XML (Vitec-liknande export)

curl -X POST https://bonett.lovable.app/api/public/v1/listings/import \
  -H "x-api-key: DIN_API_NYCKEL" \
  -H "Content-Type: application/xml" \
  --data-binary @export.xml
<Objekt>
  <Bostad>
    <ObjektId>12345</ObjektId>
    <Rubrik>Ljus trea med balkong</Rubrik>
    <Objekttyp>Bostadsrätt</Objekttyp>
    <Status>Till salu</Status>
    <Utgangspris>4 250 000</Utgangspris>
    <Avgift>3450</Avgift>
    <Driftkostnad>7200</Driftkostnad>
    <Boarea>78</Boarea>
    <AntalRum>3</AntalRum>
    <Vaning>4</Vaning>
    <Byggar>1996</Byggar>
    <Gatuadress>Storgatan 12</Gatuadress>
    <Ort>Stockholm</Ort>
    <Lan>Stockholms län</Lan>
    <Beskrivning>Välkommen till en ljus trea ...</Beskrivning>
    <Bilder>
      <Bild>https://exempel.se/bild1.jpg</Bild>
      <Bild>https://exempel.se/planritning.jpg</Bild>
    </Bilder>
  </Bostad>
</Objekt>

Exempel – JSON

curl -X POST https://bonett.lovable.app/api/public/v1/listings/import \
  -H "x-api-key: DIN_API_NYCKEL" \
  -H "Content-Type: application/json" \
  -d '{
    "objekt": [
      {
        "objektId": "12345",
        "rubrik": "Ljus trea med balkong",
        "objekttyp": "Bostadsrätt",
        "utgangspris": 4250000,
        "avgift": 3450,
        "boarea": 78,
        "antalRum": 3,
        "gatuadress": "Storgatan 12",
        "ort": "Stockholm",
        "lan": "Stockholms län",
        "beskrivning": "Välkommen till en ljus trea ...",
        "bilder": ["https://exempel.se/bild1.jpg"]
      }
    ]
  }'

Svar

{
  "format": "xml",
  "received": 1,
  "created": 1,
  "updated": 0,
  "failed": 0,
  "results": [
    { "external_id": "12345", "status": "created", "listing_id": "…" }
  ]
}

Fältmappning

Du behöver inte döpa om något. Vi känner igen vanliga svenska och engelska fältnamn – både i XML-element, attribut och JSON-nycklar, oavsett nivå i strukturen.

Fält (alias)ObligatorisktKommentar
ObjektId / ExternalIdJa (rekommenderat)Unikt ID i ditt system. Styr om objektet skapas eller uppdateras.
Rubrik / Titel / TitleJaAnnonsens rubrik. Saknas den byggs den av adress + ort.
Utgangspris / Pris / PriceJaUtgångspris i kronor. Mellanslag och "kr" tolkas automatiskt.
Boarea / Boyta / LivingAreaJaBoarea i kvm.
AntalRum / Rum / RoomsJaAntal rum, decimaler tillåtna (t.ex. 2,5).
Gatuadress / Adress / AddressJaGatuadress.
Ort / Stad / KommunJaOrt eller kommun.
Lan / Region / CountyNejLän. Saknas det används orten.
Objekttyp / BostadstypNejBostadsrätt, villa, radhus, tomt eller fritidshus.
Status / ObjektstatusNejTill salu, kommande eller såld.
Avgift / ManadsavgiftNejMånadsavgift i kronor.
DriftkostnadNejDriftkostnad per år i kronor.
BiareaNejBiarea i kvm.
Byggar / ConstructionYearNejByggår.
Vaning / FloorNejVåningsplan.
Latitude / LongitudeNejWGS84. Saknas de geokodar vi adressen automatiskt.
Bilder / Bild / ImageUrlNejAbsoluta http(s)-URL:er till foton. Filnamn med "planritning" tolkas som planritning.
Maklarnamn, Epost, Telefon, MaklarbyraNejKontaktuppgifter. Saknas de används din profil på Bonett.

Statuskoder och fel

HTTPKodBetydelse
401unauthorizedAPI-nyckeln saknas, är felstavad eller återkallad.
403forbiddenKontot saknar godkänd mäklarbehörighet – slutför mäklarverifieringen först.
400invalid_payload / empty_payloadPayloaden gick inte att tolka eller innehöll inga objekt.
413payload_too_largeMax 2 MB per anrop. Dela upp exporten.
422Alla objekt i anropet misslyckades. Se results[].errors för orsak per objekt.
200Minst ett objekt skapades eller uppdaterades.

Varje anrop loggas. Se resultat och felmeddelanden under Senaste importer i API & integration.

Rekommenderat arbetssätt

  • Skicka alltid ett stabilt ObjektId – då uppdateras objektet istället för att dubbleras.
  • Kör en full export nattetid och en delta-export vid varje ändring (pris, status, bilder).
  • Sätt status till "Såld" istället för att ta bort objektet, så behålls historiken.
  • Skicka absoluta bild-URL:er i högsta upplösning – vi skalar bilderna själva.
  • Använd separata API-nycklar per system eller miljö, så kan du återkalla en i taget.

Inget API i ditt system?

AI-import från länk eller PDF

Klistra in länken till din befintliga annons eller ladda upp objektbeskrivningen som PDF/XML i annonsformuläret – vi fyller i fälten åt dig och du granskar och publicerar.

Manuell registrering

Lägg upp objektet direkt i mäklardashboarden med adressökning, kartmarkör, bildgalleri och utkastläge.

Säkerhet och dataägande

All trafik går över HTTPS. API-nycklar lagras hashade och kan återkallas när som helst. Du äger ditt innehåll – nya objekt läggs som utkast tills du publicerar, och du kan avpublicera eller radera dem närsomhelst.