Voor developers + monteurs

REST API v1

Integreer WasFix diagnose, onderdelen en foutcodes in jouw planning-software, witlabel-portal of werkorder-systeem. JSON over HTTPS, simple auth, ruime rate limits.

Quick start

# 1. Get your API key
#    → /dashboard/api-keys (Monteur Pro+)

# 2. Test connection
curl https://wasfix.nl/api/v1/health

# 3. Look up a part
curl -H "Authorization: Bearer wf_live_YOUR_KEY" \
     https://wasfix.nl/api/v1/parts/WF-FILTER-09

# 4. Look up a foutcode
curl -H "Authorization: Bearer wf_live_YOUR_KEY" \
     https://wasfix.nl/api/v1/errorcodes/Bosch/E18

# 5. Run a diagnose
curl -X POST -H "Authorization: Bearer wf_live_YOUR_KEY" \
     -H "Content-Type: application/json" \
     -d '{ "brand": "Bosch", "errorCode": "E18", "symptoms": "Water blijft staan" }' \
     https://wasfix.nl/api/v1/diagnose

Authentication

Alle endpoints (behalve /health) vereisen een API key. Drie manieren om de key mee te sturen:

  1. HTTP header (aanbevolen): Authorization: Bearer wf_live_XXXX
  2. Custom header: X-API-Key: wf_live_XXXX
  3. Query parameter (alleen voor browser-test): ?api_key=wf_live_XXXX
⚠ Bewaar je API key veilig
Geen versie in git commits. Geen client-side JavaScript. Gebruik environment variables in je backend.

Endpoints

POST/api/v1/diagnose

AI-diagnose op basis van brand, model, foutcode + symptomen

Scope:read:errorcodes
Rate limit:10/uur
Request body
{
  "brand": "Bosch",
  "model": "WAU28T40NL",          // optioneel
  "errorCode": "E18",              // optioneel
  "symptoms": "Water blijft staan in de trommel na centrifugeren",
  "language": "nl"                  // nl|en|de|fr, default nl
}
Response 200
{
  "data": {
    "diagnosis": {
      "mainCause": "Verstopte pluizenfilter of afvoerpomp",
      "confidence": 87,
      "alternativeCauses": ["Geknikte afvoerslang", "Defecte drukschakelaar"],
      "diyFriendly": true,
      "urgency": "medium",
      "recommendedAction": "Open het pluizenfilter en verwijder pluis + muntjes"
    },
    "recommendedParts": [
      { "sku": "WF-PUMP-04", "name": "Afvoerpomp", "priceEur": 38.50, "buyUrl": "https://wasfix.nl/onderdelen/WF-PUMP-04" }
    ],
    "recommendedGuides": [
      { "slug": "afvoerpomp-reinigen-vervangen", "title": "Afvoerpomp reinigen", "url": "https://wasfix.nl/gidsen/afvoerpomp-reinigen-vervangen" }
    ]
  },
  "meta": { "version": "v1", "language": "nl", "model_used": "gemini-2.0-flash" }
}
GET/api/v1/parts/{sku}

Onderdeel-detail op SKU (96 SKUs in catalogus)

Scope:read:parts
Rate limit:1000/uur
Response 200
{
  "data": {
    "sku": "WF-FILTER-09",
    "name": "Pluizenfilter Bosch ZV-446",
    "category": "FILTER",
    "brand": "Bosch",
    "isOriginal": true,
    "priceEur": 12.50,
    "stock": 60,
    "description": "Origineel pluizenfilter Bosch met knipsluiting",
    "imageUrl": "https://...",
    "oemNumbers": ["00614351"],
    "productUrl": "https://wasfix.nl/onderdelen/WF-FILTER-09"
  },
  "meta": { "version": "v1" }
}
GET/api/v1/errorcodes/{brand}/{code}

Foutcode-detail per merk (331 codes)

Scope:read:errorcodes
Rate limit:1000/uur
Response 200
{
  "data": {
    "brand": "Bosch",
    "model": "WAU28T40NL",
    "code": "E18",
    "title": "Afvoer te langzaam",
    "description": "...",
    "likelyCauses": ["Pluizenfilter verstopt", "Afvoerpomp gedeeltelijk verstopt", ...],
    "severity": "MEDIUM",
    "diyFriendly": true,
    "relatedParts": [{ "sku": "WF-PUMP-01", "name": "Afvoerpomp", "priceEur": 32.50 }],
    "relatedGuides": [{ "slug": "afvoerpomp-reinigen-vervangen", "title": "Afvoerpomp...", "difficulty": "EASY" }],
    "detailUrl": "https://wasfix.nl/foutcodes/Bosch-E18"
  },
  "meta": { "version": "v1" }
}
GET/api/v1/health

API-status + endpoint overzicht

Scope:none (public)
Rate limit:60/uur
Response 200
{
  "status": "ok",
  "version": "v1",
  "timestamp": "2026-05-26T..."
}

HTTP status codes

StatusBetekenis
200Success
400Invalid input (zie response.details)
401Missing or invalid API key
403Insufficient scope (key heeft niet juiste rechten)
404Resource niet gevonden
429Rate limit overschreden (zie response.retry_after)
500Internal error — probeer opnieuw
502Upstream service unavailable (bv. Gemini API)

Klaar om te integreren?

Monteur Pro vanaf €29/mnd — 1.000 calls/maand inbegrepen. Enterprise (€299/mnd) voor witlabel + onbeperkt.