För utvecklare

Prismotor och offertförfrågan som API

Husmatchs prisuppskattningar och offertflöde är anropbara som ett versionerat REST-API – byggt för AI-assistenter och andra integrationer. Samma motorer och samma validering som på webbplatsen, inga separata prismodeller.

Snabbfakta

  • • Bas-URL: https://husmatch.se/api/v1
  • • Ingen API-nyckel behövs i dagsläget. Rate limit: 30 anrop/minut per IP och endpoint.
  • • Maskinläsbar descriptor: /.well-known/mcp.json – och /llms.txt för AI-sök.
  • • Alla belopp är SEK inklusive moms, som spann – en uppskattning, inte en offert.

POST /api/v1/estimate

Beräknar ett prisspann med samma motor som webbplatsens kalkyl: brutto och efter avdrag (ROT eller grön teknik beroende på tjänst), med antaganden och datamodellens version i svaret. Fungerar för tjänster där priset ärligt går att räkna ut från enkla siffror – i dag: tak, tvatt, fonster, fasad, solceller, laddbox, dranering, tradfallning, golv, altan, isolering.

curl -X POST https://husmatch.se/api/v1/estimate \
  -H "Content-Type: application/json" \
  -d '{
    "vertical": "tak",
    "kommunCode": "0180",
    "inputs": { "atgard": "Takbyte", "taktyp": "Betongpannor", "yta": 140 }
  }'

Vilka fält en tjänst kräver tar du reda på med en GET mot samma endpoint:

curl https://husmatch.se/api/v1/estimate

Felkoder: unknown_vertical (404), no_estimator (422 – tjänsten finns men priset är inte en funktion av enkla siffror; webbplatsen visar källade spann i stället), unknown_kommun och validation (400), rate_limited (429). Ett svar kan också vara "kind": "not-computable" med en svensk förklaring – det är ett ärligt resultat, inte ett fel.

POST /api/v1/lead

Skickar in en offertförfrågan för slutanvändarens räkning – samma validering, dubblettkontroll och partnermatchning som webbplatsens formulär. Kravet som skiljer: slutanvändaren måste ha sett och aktivt godkänt exakt den samtyckestext vi lagrar.

curl -X POST https://husmatch.se/api/v1/lead \
  -H "Content-Type: application/json" \
  -d '{
    "vertical": "tak",
    "kommunCode": "0180",
    "wizardAnswers": { "atgard": "Takbyte", "taktyp": "Betongpannor", "yta": 140 },
    "name": "Anna Andersson",
    "email": "anna@example.com",
    "phone": "070-123 45 67",
    "streetAddress": "Exempelgatan 1",
    "postalCode": "112 34",
    "city": "Stockholm",
    "consentAccepted": true,
    "consentText": "Jag samtycker till att Husmatch sparar mina uppgifter och delar dem med upp till 5 granskade företag, så att de kan kontakta mig och lämna offert. Offerterna är kostnadsfria och inte bindande. Uppgifterna sparas i högst 12 månader om ärendet inte är aktivt. Jag kan när som helst återkalla mitt samtycke — se integritetspolicyn.",
    "consentTextVersion": "2026-07-02.v1",
    "source": "agent"
  }'

Samtyckeskontraktet

Fältet consentText måste vara exakt (tecken för tecken) den aktuella texten nedan, och consentTextVersion måste vara 2026-07-02.v1. Visa texten ordagrant för användaren; förifyllt eller antaget samtycke är inte giltigt. Avvikelse ger consent_text_mismatch (400) med den förväntade texten i svaret.

Jag samtycker till att Husmatch sparar mina uppgifter och delar dem med upp till 5 granskade företag, så att de kan kontakta mig och lämna offert. Offerterna är kostnadsfria och inte bindande. Uppgifterna sparas i högst 12 månader om ärendet inte är aktivt. Jag kan när som helst återkalla mitt samtycke — se integritetspolicyn.

Personnummer avvisas i alla fält – vi frågar aldrig efter det. Svaret innehåller leadId och en status (delivered, parked m.fl., eller duplicate om samma telefonnummer redan skickat in för samma tjänst de senaste 30 dagarna).

Villkor

API:et är gratis och tillhandahålls i befintligt skick. Uppskattningar är just uppskattningar – visa alltid spann och antaganden för slutanvändaren, aldrig en enskild siffra som ett pris. Frågor: hej@husmatch.se.