Aller au contenu
Subsido

Matching

Listes de suivi

Un comptable qui suit trois mille clients ne devrait pas avoir à chercher. Placez les entreprises une fois sur une liste de suivi : elles sont évaluées aussitôt, puis réévaluées chaque fois qu’une mesure change, avec un événement pour chaque résultat qui apparaît, change ou disparaît.

À partir de BusinessLes listes de suivi demandent la fonction watchlists. Jusqu’à 50 listes par compte ; le nombre d’entreprises sur l’ensemble des listes dépend de la formule (5 000 sur Business, illimité sur Enterprise).

Créer une liste de suivi

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"]}}'
PropriétéSignification
name1 à 120 caractères.
optionsLes mêmes options de matching que POST /v1/match : statuses, instrument_types, include_not_eligible, include_unrelated. Elles s’appliquent à chaque entreprise de la liste.
languagenl, fr ou en (par défaut) : la langue des libellés et des questions enregistrés.

201 avec la liste : { id, name, options, language, companies, matches, created_at, updated_at, last_evaluated_at }, où id a la forme wl_…, companies compte les entreprises de la liste et matches les résultats actuels qui ne sont pas not_eligible.

RouteCe qu’elle fait
GET /v1/watchlistsToutes les listes du compte, en une seule page.
GET /v1/watchlists/{id}Une liste.
PATCH /v1/watchlists/{id}Modifier le nom, les options ou la langue ; n’envoyez que ce qui change.
DELETE /v1/watchlists/{id}La supprimer, avec ses entreprises et leurs résultats.
POST /v1/watchlists/{id}/companiesAjouter ou remplacer des entreprises, et les évaluer aussitôt.
GET /v1/watchlists/{id}/companiesLes entreprises de la liste, paginées avec limit et cursor.
DELETE /v1/watchlists/{id}/companies/{reference}Retirer une entreprise (encodez la référence pour l’URL).
GET /v1/watchlists/{id}/matchesLes résultats actuels.

Ajouter des entreprises

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 à 1 000 entreprises par requête. Chacune porte votre propre reference (1 à 200 caractères), et company et project acceptent exactement les propriétés d’une requête de matching.
  • Une référence déjà présente sur la liste est remplacée, et n’est pas comptée une seconde fois dans le plafond d’entreprises de votre formule.
  • Une entreprise aux informations invalides, à la référence en double ou vide est refusée isolément ; les autres sont acceptées.
  • Chaque entreprise acceptée est évaluée avant la fin de l’appel, sur les mêmes mesures que /v1/match, et compte pour une évaluation de matching. La requête entière est refusée avec match_quota_exceeded si les entreprises acceptées vous faisaient dépasser votre quota, et avec plan_required si elles faisaient dépasser au compte son plafond d’entreprises.
{
  "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 compte les résultats des entreprises acceptées qui ne sont pas not_eligible. La deuxième entreprise a été refusée pour un code postal à cinq chiffres ; la première a été ajoutée et évaluée.

Lire les résultats

curl "https://api.subsido.be/v1/watchlists/wl_06f8r9t2b4c6d8e0f2g4h6j8km/matches?company=client-0042" \  -H "Authorization: Bearer sb_live_..."
ParamètreSignification
companyLa référence d’une entreprise. Sans ce paramètre, les résultats de toutes les entreprises.
include_not_eligibleAussi les résultats not_eligible, si les options de la liste les conservent. Par défaut false.
limitNombre de lignes, de 1 à 5 000 (500 par défaut). Cette liste n’est pas paginée.

La réponse est { data, meta, disclaimer }. Chaque ligne est { company_reference, subsidy_id, match_status, score, result, subsidy_version, first_matched_at, updated_at }, où result est le résultat tel que /v1/match le calcule (statut, confiance, pertinence, raisons, inconnues, estimation), sans le résumé de la mesure : lisez celle-ci avec GET /v1/subsidies/{id}. subsidy_version est la version sur laquelle l’évaluation a porté.

Réévaluation et événements

Nous réévaluons une liste dès qu’une mesure susceptible de correspondre ou l’une de ses entreprises a changé depuis la dernière évaluation (last_evaluated_at). Cette réévaluation en arrière-plan est comprise dans la formule et n’est jamais comptée comme évaluation de matching. Chaque différence devient un événement :

ÉvénementQuand
match.createdUne mesure commence à correspondre à une entreprise (y compris lors de la première évaluation, à l’ajout des entreprises).
match.status_changedLe statut d’un résultat change, par exemple de possibly_eligible à likely_eligible. previous_status indique l’ancien statut.
match.removedUne mesure ne correspond plus : elle a fermé, ses règles ont changé, ou les informations de l’entreprise.

Les événements de matching appartiennent au propriétaire de la liste. Ils ne parviennent qu’aux webhooks de ce compte (filtrez-les avec watchlists ou event_types) et n’apparaissent jamais dans le flux de modifications public.

{
  "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"
      }
    }
  }
}

Ce que nous conservons

Des faits, pas des personnes

Une liste de suivi conserve votre référence pour chaque entreprise, les informations sur l’entreprise et le projet que vous avez envoyées, et les résultats actuels. Pas de noms, pas d’adresses, pas de personnes : le matching a besoin de faits sur une entreprise, pas de savoir qui la dirige. Utilisez une référence qui a un sens pour vous et aucun pour les autres. Tout est conservé jusqu’à ce que vous retiriez l’entreprise ou supprimiez la liste.