Naar de inhoud
Subsido

Matching

Watchlists

Een boekhouder met drieduizend klanten hoort niet te moeten zoeken. Zet de ondernemingen één keer op een watchlist: ze worden meteen gematcht en opnieuw geëvalueerd telkens een maatregel verandert, met een event voor elke match die verschijnt, verandert of verdwijnt.

Business en hogerWatchlists vragen de functie watchlists. Tot 50 watchlists per account; het aantal ondernemingen over alle watchlists samen hangt af van het plan (5.000 op Business, onbeperkt op Enterprise).

Een watchlist aanmaken

curl -X POST "https://api.subsido.be/v1/watchlists" \  -H "Authorization: Bearer sb_live_..." \  -H "Content-Type: application/json" \  -d '{"name": "Clients Gent", "language": "nl", "options": {"statuses": ["open", "continuous", "forthcoming"]}}'
EigenschapBetekenis
name1 tot 120 tekens.
optionsDezelfde matchopties als bij POST /v1/match: statuses, instrument_types, include_not_eligible, include_unrelated. Ze gelden voor elke onderneming op de lijst.
languagenl, fr of en (standaard): de taal van de bewaarde labels en vragen.

201 met de watchlist: { id, name, options, language, companies, matches, created_at, updated_at, last_evaluated_at }, waarbij id de vorm wl_… heeft, companies het aantal ondernemingen erop telt en matches de huidige matches die niet not_eligible zijn.

RouteWat ze doet
GET /v1/watchlistsAlle watchlists van het account, op één pagina.
GET /v1/watchlists/{id}Eén watchlist.
PATCH /v1/watchlists/{id}Naam, opties of taal wijzigen; stuur alleen wat verandert.
DELETE /v1/watchlists/{id}De watchlist verwijderen, met haar ondernemingen en hun matches.
POST /v1/watchlists/{id}/companiesOndernemingen toevoegen of vervangen, en ze meteen evalueren.
GET /v1/watchlists/{id}/companiesDe ondernemingen erop, gepagineerd met limit en cursor.
DELETE /v1/watchlists/{id}/companies/{reference}Eén onderneming verwijderen (codeer de referentie voor de URL).
GET /v1/watchlists/{id}/matchesDe huidige matches.

Ondernemingen toevoegen

curl -X POST "https://api.subsido.be/v1/watchlists/wl_06f8r9t2b4c6d8e0f2g4h6j8km/companies" \  -H "Authorization: Bearer sb_live_..." \  -H "Content-Type: application/json" \  -d '{"companies": [        {"reference": "client-0042", "company": {"postcode": "9000", "employees": 12, "turnover_eur": 1500000, "legal_form": "bv", "nace": ["62.010"]}},        {"reference": "client-0043", "company": {"postcode": "98200", "legal_form": "eenmanszaak"}, "project": {"topics": ["energy_efficiency"]}}      ]}'
  • 1 tot 1.000 ondernemingen per request. Elke onderneming krijgt je eigen reference (1 tot 200 tekens), en company en project nemen precies dezelfde eigenschappen als een matchrequest.
  • Een referentie die al op de watchlist staat, wordt vervangen en telt niet opnieuw mee voor het maximum aantal ondernemingen van je plan.
  • Een onderneming met ongeldige gegevens, een dubbele of een lege referentie wordt afzonderlijk geweigerd; de rest wordt aanvaard.
  • Elke aanvaarde onderneming wordt geëvalueerd voordat de call terugkomt, tegen dezelfde maatregelen als /v1/match, en telt als één match-evaluatie. De hele request wordt geweigerd met match_quota_exceeded als de aanvaarde ondernemingen je over je maandelijkse hoeveelheid zouden brengen, en met plan_required als ze het account boven het maximum aantal ondernemingen zouden brengen.
{
  "watchlist_id": "wl_06f8r9t2b4c6d8e0f2g4h6j8km",
  "added": 1,
  "replaced": 0,
  "rejected": [
    {
      "reference": "client-0043",
      "error": {
        "code": "invalid_body",
        "message": "company.postcode: company.postcode is not a Belgian postcode",
        "details": {
          "field": "company.postcode"
        }
      }
    }
  ],
  "matches": 7,
  "meta": {
    "request_id": "req_0192d3a4b5c67d8e9f0a1b2c3d4e5f63",
    "warnings": []
  }
}

matches telt de matches van de aanvaarde ondernemingen die niet not_eligible zijn. De tweede onderneming werd geweigerd om een postcode van vijf cijfers; de eerste werd toegevoegd en gematcht.

De matches lezen

curl "https://api.subsido.be/v1/watchlists/wl_06f8r9t2b4c6d8e0f2g4h6j8km/matches?company=client-0042" \  -H "Authorization: Bearer sb_live_..."
ParameterBetekenis
companyDe referentie van één onderneming. Zonder deze parameter de matches van alle ondernemingen.
include_not_eligibleOok de not_eligible-matches, als de opties van de watchlist ze bewaren. Standaard false.
limitAantal rijen, 1 tot 5.000 (standaard 500). Deze lijst pagineert niet.

Het antwoord is { data, meta, disclaimer }. Elke rij is { company_reference, subsidy_id, match_status, score, result, subsidy_version, first_matched_at, updated_at }, waarbij result de match is zoals /v1/match hem berekent (status, zekerheid, relevantie, redenen, onbekenden, raming), zonder de samenvatting van de maatregel: die lees je met GET /v1/subsidies/{id}. subsidy_version is de versie waartegen geëvalueerd werd.

Herevaluatie en events

We evalueren een watchlist opnieuw zodra een maatregel die kan matchen of een van haar ondernemingen veranderd is sinds de laatste evaluatie (last_evaluated_at). Die herevaluatie op de achtergrond zit in het plan en telt nooit als match-evaluatie. Elk verschil wordt een event:

EventWanneer
match.createdEen maatregel begint bij een onderneming te passen (ook bij de eerste evaluatie, wanneer de ondernemingen toegevoegd worden).
match.status_changedDe status van een match verandert, bijvoorbeeld van possibly_eligible naar likely_eligible. previous_status zegt van welke.
match.removedEen maatregel past niet meer: hij is gesloten, zijn regels zijn veranderd, of de gegevens van de onderneming.

Match-events horen bij de eigenaar van de watchlist. Ze gaan alleen naar de webhooks van dat account (filter ze met watchlists of event_types) en verschijnen nooit in de publieke change feed.

{
  "id": "chg_06f8s2m4d2a9b1c7e3g5h8j0kn",
  "event": "match.created",
  "created_at": "2026-09-27T07:00:03+02:00",
  "data": {
    "subject": "match",
    "id": "wl_06f8r9t2b4c6d8e0f2g4h6j8km:client-0042:federal:investeringsaftrek",
    "version": null,
    "categories": [
      "match.created"
    ],
    "diff": {},
    "summary": {
      "watchlist_id": "wl_06f8r9t2b4c6d8e0f2g4h6j8km",
      "company_reference": "client-0042",
      "subsidy_id": "federal:investeringsaftrek",
      "match_status": "likely_eligible",
      "previous_status": null,
      "subsidy": {
        "title": {
          "nl": "Investeringsaftrek",
          "fr": "Déduction pour investissement",
          "en": "Investment deduction",
          "de": null
        },
        "status": "continuous",
        "instrument_type": "tax_deduction",
        "issuer": "FOD Financiën",
        "closes_at": null,
        "regions": [],
        "topics": [
          "investment",
          "digitalisation"
        ],
        "url": "https://financien.belgium.be/nl/ondernemingen/vennootschapsbelasting/belastingvoordelen/investeringsaftrek",
        "source_id": "curated_federal"
      }
    }
  }
}

Wat we bewaren

Gegevens, geen personen

Een watchlist bewaart je referentie voor elke onderneming, de gegevens over onderneming en project die je stuurde, en de huidige matches. Geen namen, geen adressen, geen personen: matching heeft gegevens over een onderneming nodig, niet wie ze leidt. Gebruik een referentie die voor jou iets betekent en voor niemand anders. Alles blijft bewaard tot je de onderneming verwijdert of de watchlist wist.