Développeurs

API REST, version 1

JSON sur HTTPS. Chaque requête désigne le compte par la clé, et non par le sous-domaine. demo.ervazo.com et ervazo.com répondent de la même façon tant que la clé est celle de ce compte.

Adresse de base

Production : https://ervazo.com. Le chemin est toujours /api/v1, avec ou sans barre oblique à la fin. Un chemin inconnu donne 404 avec {"error":"Onbekend pad."}.

curl -s https://ervazo.com/api/v1 \
  -H "Authorization: Bearer nal_jouw_sleutel"

La réponse est application/json et n’est pas mise en cache. Il n’y a pas d’autre version que 1.

Activer

Seulement le propriétaire du lieu. Dans l’espace de travail : Réglages, API publique, activer l’API. Sans cet indicateur, une clé valide est refusée avec 403 et le texte indiquant que l’API publique est désactivée.

Un compte en pause reçoit aussi 403, avec le texte indiquant que le compte est en pause. Révoquer une clé la rend aussitôt invalide. Désactiver l’indicateur laisse les clés en place, mais chaque requête s’arrête jusqu’à ce que vous le réactiviez.

Clé

Créez-la sur la même page de réglages. Donnez un nom d’au moins deux caractères. La clé complète n’apparaît qu’une fois. Ensuite, nous ne conservons qu’un hash et un préfixe, afin que vous la reconnaissiez dans la liste comme nal_ suivi de douze caractères.

Envoyez-la comme bearer token. Pas de paramètre de requête, pas de cookie.

Authorization: Bearer nal_…

La clé doit commencer par nal_ et compter entre 20 et 200 caractères. Sinon, 401. Une clé erronée ou révoquée produit le même 401, pour qu’on ne puisse pas deviner laquelle des deux c’était.

Au plus huit clés qui n’ont pas encore été révoquées. La neuvième tentative échoue dans l’espace de travail jusqu’à ce que vous en révoquiez une. last_used_at est mis à jour à chaque requête réussie.

Limites

120 requêtes par clé et par minute, comptées dans le processus qui traite la requête. Au-delà, 429 : trop de requêtes, attendez une minute. Le compteur n’est pas dans la base de données, il repart donc après un redémarrage.

Un body de POST peut faire 20 000 octets. Au-delà, c’est 413. Le body doit être du JSON si vous l’envoyez. Vide est autorisé, mais une tâche ou une note a quand même besoin d’un champ.

Un id de dossier dans le chemin fait de 1 à 80 caractères : lettres, chiffres, underscore ou tiret. Un dossier d’un autre compte n’existe pas pour cette clé et renvoie 404.

Erreurs

Les erreurs sont du JSON avec un seul champ error. Pas de stacktrace.

  • 401 — La clé est absente ou non valide.
  • 403 — L’API est désactivée, ou le compte est en pause.
  • 404 — Chemin inconnu, ou ce dossier n’appartient pas à la clé.
  • 400 — JSON non valide, titre manquant, ou note vide.
  • 409 — Le dossier est clos. La lecture est autorisée, pas l’écriture.
  • 413 — Le body dépasse 20 000 octets.
  • 429 — Plus de 120 requêtes en une minute.

GET /api/v1

Qui vous êtes pour cette clé, et quels chemins existent.

{
  "name": "Ervazo",
  "version": "1",
  "account": "kantoor-id",
  "mcp": "/api/mcp",
  "endpoints": [
    "GET /api/v1/dossiers",
    "GET /api/v1/dossiers/{id}",
    "POST /api/v1/dossiers/{id}/tasks",
    "POST /api/v1/dossiers/{id}/notes"
  ]
}

La liste de cette réponse ne mentionne pas chaque chemin de lecture. Les personnes concernées, les biens, les dettes et la liste de tâches figurent ci-dessous et fonctionnent néanmoins.

GET /api/v1/dossiers

Tous les dossiers du compte qui ne sont pas dans la corbeille, modification la plus récente d’abord. Les dossiers clos y figurent.

{
  "dossiers": [
    {
      "id": "…",
      "reference": "2026-014",
      "line": "nalatenschap",
      "phase": "boedel",
      "status": "open",
      "name": "A. de Vries",
      "death": "2026-03-02"
    }
  ]
}

line vaut nalatenschap ou leven. status vaut open ou closed. death peut être vide pour un dossier de vie. name est le prénom et le nom accolés.

GET /api/v1/dossiers/{id}

Utilisez l’id de la liste, pas le numéro de référence.

{
  "dossier": {
    "id": "…",
    "reference": "2026-014",
    "line": "nalatenschap",
    "phase": "boedel",
    "status": "open",
    "firstName": "A.",
    "lastName": "de Vries",
    "birth": "1948-11-04",
    "death": "2026-03-02",
    "residence": "Haarlem"
  }
}

GET /api/v1/dossiers/{id}/parties

Personnes concernées. portal indique si le portail est activé pour cette personne. La note privée de la personne n’est pas incluse.

{
  "parties": [
    {
      "id": "…",
      "type": "heir",
      "name": "M. de Vries",
      "email": "[email protected]",
      "relation": "kind",
      "portal": true
    }
  ]
}

GET /api/v1/dossiers/{id}/assets

Biens. valueMinor est le montant au décès, en centimes. Une currency vide devient EUR.

{
  "assets": [
    {
      "id": "…",
      "category": "bank",
      "description": "Betaalrekening",
      "valueMinor": 1250000,
      "currency": "EUR",
      "status": "known"
    }
  ]
}

GET /api/v1/dossiers/{id}/liabilities

Dettes. amountMinor est en centimes. creditor est le nom tel qu’il figure dans le dossier.

{
  "liabilities": [
    {
      "id": "…",
      "category": "lening",
      "description": "Doorlopend krediet",
      "amountMinor": 240000,
      "currency": "EUR",
      "creditor": "Bank",
      "status": "open"
    }
  ]
}

Lire et ajouter des tâches

GET /api/v1/dossiers/{id}/tasks — chaque tâche avec id, title, due et status.

POST /api/v1/dossiers/{id}/tasks

{ "title": "Bankafschriften opvragen", "due": "2026-11-01" }

title est obligatoire, 200 caractères au plus après trim. due est facultatif et doit être au format YYYY-MM-DD. Une autre forme devient aujourd’hui. La tâche est créée avec le statut open, attribuée à l’utilisateur qui a créé la clé, et ne compte pas comme étape du playbook.

{ "id": "…", "title": "Bankafschriften opvragen", "due": "2026-11-01", "status": "open" }

Sur un dossier clos, c’est 409. L’écriture figure dans le journal d’audit comme actor API, action api.task.

POST /api/v1/dossiers/{id}/notes

Une note interne. Le portail des héritiers ne la voit pas. Le champ s’appelle body, pas text.

{ "body": "Bank gebeld. Afschriften volgen per post." }

Au plus 4 000 caractères après trim. Vide donne 400. La réponse ne contient que l’id. Dans le dossier, l’auteur est API et la visibilité est internal. Le journal d’audit reçoit api.note avec les 80 premiers caractères.

{ "id": "…" }

Montants

Tous les montants de l’API sont des entiers, dans la plus petite unité monétaire. € 12.500,00 correspond à 1250000. Il n’y a pas de nombre à virgule, afin que l’arrondi ne varie pas selon le client. La monnaie est indiquée à part.

Ce qui n’y figure pas

Pas de téléchargement de document, pas de téléversement, pas de BSN, pas de notes privées de collaborateurs, pas de suppression, pas de changement de phase, pas d’invitation d’héritier et pas d’enregistrement du partage. Vous faites cela dans l’espace de travail. MCP utilise les mêmes limites.

Continuer avec MCP