/v1/account/monitors

account/monitors

Monitoring : faire surveiller des entreprises, créer, mettre en pause, supprimer.

Coûts et limites

Coûts et limites
Quoi Crédits
Moniteur vérifié chaque jour, pendant 30 jours 50
Moniteur vérifié tous les 3 jours, pendant 30 jours 40
Moniteur vérifié tous les 7 jours, pendant 30 jours 20
Moniteur vérifié tous les 30 jours, pendant 30 jours 10
Chaque vérification réussie supplémentaire dans la période +2

Limite : 30 requêtes par minute. Créer, modifier et supprimer : 10 par minute.

curl -G "https://handelsregister.ai/api/v1/account/monitoring/pricing" \
  -H "x-api-key: TA_CLE_API" \
  --data-urlencode 'poll_interval_days=7'
1{2  "pricing": {3    "policy_version": "2026-08.v2",4    "credits_per_run": 2,5    "cycle_minimum_credits": 20,6    "included_runs": 5,7    "cycle_days": 30,8    "estimated_runs": 5,9    "estimated_credits": 2010  },11  "entitled": true,12  "meta": {13    "request_credit_cost": 0,14    "credits_remaining": 14515  }16}
200 · Exemple de réponse : prix d’un moniteur avec une vérification tous les 7 jours

Fonctionnement d’un moniteur

Statut
Statut Signification
initializing Créé ; référence et activation en cours.
active Vérifie à l’intervalle choisi.
paused_user Mis en pause par toi.
paused_configuration Plus aucun endpoint webhook actif et vérifié n’est connecté.
paused_billing Ton solde ne couvre pas le cycle ou une vérification supplémentaire. Ou le prix a changé et attend ton accord.
error Plusieurs vérifications consécutives ont échoué.
archived Terminé définitivement. Tu peux encore lire le moniteur par son identifiant, mais il n’apparaît plus dans la liste.

Endpoints

Méthode
Méthode Chemin Usage
GET /v1/account/monitors Tous les moniteurs, les plus récents en premier, sans les archivés.
POST /v1/account/monitors Créer un moniteur.
GET /v1/account/monitors/{id} Un moniteur avec son cycle et ses dernières vérifications.
PATCH /v1/account/monitors/{id} Changer l’intervalle de vérification.
POST /v1/account/monitors/{id}/pause Mettre en pause.
POST /v1/account/monitors/{id}/resume Reprendre.
DELETE /v1/account/monitors/{id} Archiver.
GET /v1/account/monitoring/pricing Prix d’un intervalle.

Idempotency-Key

Créer un moniteur

curl -X POST "https://handelsregister.ai/api/v1/account/monitors" \
  -H "x-api-key: TA_CLE_API" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "entity_id": "94eb910fef13f94585c48c263fa446d4",
    "label": "Hetzner Online GmbH",
    "poll_interval_days": 7,
    "endpoint_ids": [
        "wep_01m6b3j1g0cdz98hw8zdefbf52"
    ]
}'
Paramètres
Nom Type Description Exemple
Idempotency-KeyHeader chaîneobligatoire Une valeur unique par opération, idéalement un UUID. Voir Idempotency-Key.Limites: 1 à 128 caractères req-20260802-01
entity_idBody chaîneobligatoire L’entity_id de l’entreprise issu de fetch-organization ou search-organizations.Limites: 1 à 128 caractères 94eb910fef13f94585c48c263fa446d4
labelBody chaînefacultatif Un nom pour le moniteur.Limites: au plus 200 caractères Hetzner Online GmbH
poll_interval_daysBody entierobligatoire Intervalle de vérification en jours.Limites: 1 à 30 7
endpoint_idsBody liste de stringobligatoire Les identifiants de tes endpoints webhook (wep_…). Chacun doit être actif et vérifié.Limites: 1 à 10 entrées ["wep_01m6b3j1g0cdz98hw8zdefbf52"]
1{2  "monitor": {3    "id": "mon_01m6b3m7945dn7cyvexzv41kjz",4    "type": "organization.signals",5    "entity_id": "94eb910fef13f94585c48c263fa446d4",6    "label": "Hetzner Online GmbH",7    "poll_interval_days": 7,8    "status": "initializing",9    "status_reason": null,10    "pricing_policy_version": "2026-08.v2",11    "baseline_completed_at": null,12    "activated_at": null,13    "last_succeeded_at": null,14    "next_poll_at": null,15    "created_at": "2026-11-01T08:29:13+00:00"16  },17  "meta": {18    "message": "Monitor created; the free baseline is queued and this request charged 0 credits. The cycle price is charged only when activation succeeds.",19    "baseline_queued": true,20    "billing": {21      "charged_credits": 0,22      "new_cycle": false,23      "floor_transaction_id": null24    },25    "request_credit_cost": 0,26    "credits_remaining": 14527  }28}
202 · Exemple de réponse : un nouveau moniteur, dans notre exemple pour Hetzner Online GmbH, Ansbach HRB 6089
Via l’API, tu définis les endpoints webhook à la création du moniteur. Tu connectes un autre endpoint webhook sous Compte › Monitoring avec « Connecter une destination », sans frais supplémentaires.

Lister et modifier des moniteurs

curl -G "https://handelsregister.ai/api/v1/account/monitors/mon_01m65pn3vm11sjjp1j076cbvec" \
  -H "x-api-key: TA_CLE_API"
1{2  "monitor": {3    "id": "mon_01m65pn3vm11sjjp1j076cbvec",4    "type": "organization.signals",5    "entity_id": "94eb910fef13f94585c48c263fa446d4",6    "label": "Hetzner Online GmbH",7    "poll_interval_days": 1,8    "status": "active",9    "status_reason": null,10    "pricing_policy_version": "2026-08.v2",11    "baseline_completed_at": "2026-10-30T06:06:28+00:00",12    "activated_at": "2026-10-30T06:06:28+00:00",13    "last_succeeded_at": "2026-10-30T06:06:53+00:00",14    "next_poll_at": "2026-10-31T06:19:12+00:00",15    "created_at": "2026-10-30T06:06:18+00:00"16  },17  "billing_cycle": {18    "starts_at": "2026-10-30T06:06:28+00:00",19    "ends_at": "2026-11-29T06:06:28+00:00",20    "floor_credits": 50,21    "credits_per_run": 2,22    "included_runs": 30,23    "successful_runs": 1,24    "extra_credits_settled": 0,25    "pricing_policy_version": "2026-08.v2"26  },27  "recent_runs": [28    {29      "due_slot_at": "2026-10-30T06:06:28+00:00",30      "kind": "activation_catchup",31      "status": "succeeded",32      "charge_state": "covered",33      "charge_credits": 0,34      "events_new": 0,35      "finished_at": "2026-10-30T06:06:55+00:00"36    }37  ],38  "meta": {39    "request_credit_cost": 0,40    "credits_remaining": 14541  }42}
200 · Exemple de réponse : un moniteur actif avec une vérification quotidienne, toujours pour Hetzner Online GmbH
Champs d’un moniteur
Champ Signification
id Identifiant du moniteur, commence par mon_.
entity_id L’entreprise surveillée.
poll_interval_days Intervalle de vérification en jours.
status, status_reason Statut, voir ci-dessus. status_reason indique la raison.
baseline_completed_at, activated_at, last_succeeded_at Moments de la référence, de l’activation et de la dernière vérification réussie.
next_poll_at La prochaine vérification prévue, uniquement pour les moniteurs actifs.
billing_cycle Le cycle en cours : début, fin, prix, vérifications incluses et vérifications effectuées jusqu’ici.
recent_runs Les dernières vérifications avec résultat, facturation et nombre de nouveaux signals dans events_new.
curl -X PATCH "https://handelsregister.ai/api/v1/account/monitors/mon_01m6b3m7945dn7cyvexzv41kjz" \
  -H "x-api-key: TA_CLE_API" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "poll_interval_days": 30
}'
1{2  "monitor": {3    "id": "mon_01m6b3m7945dn7cyvexzv41kjz",4    "type": "organization.signals",5    "entity_id": "94eb910fef13f94585c48c263fa446d4",6    "label": "Hetzner Online GmbH",7    "poll_interval_days": 30,8    "status": "initializing",9    "status_reason": null,10    "pricing_policy_version": "2026-08.v2",11    "baseline_completed_at": null,12    "activated_at": null,13    "last_succeeded_at": null,14    "next_poll_at": null,15    "created_at": "2026-11-01T08:29:13+00:00"16  },17  "meta": {18    "request_credit_cost": 0,19    "credits_remaining": 14520  }21}
200 · Exemple de réponse : intervalle passé à 30 jours

Mettre en pause, reprendre, archiver

curl -X POST "https://handelsregister.ai/api/v1/account/monitors/mon_01m6b3m7945dn7cyvexzv41kjz/resume" \
  -H "x-api-key: TA_CLE_API" \
  -H "Idempotency-Key: $(uuidgen)"
Si tu désactives ou archives un endpoint webhook, tous les moniteurs sans autre endpoint webhook se mettent en pause avec paused_configuration. Après avoir réactivé l’endpoint webhook, reprends le moniteur avec resume.

Erreurs

Erreurs
Statut Cause Que faire
400 api_key figure dans l’URL. Envoie la clé dans le header x-api-key.
400 L’Idempotency-Key a un format invalide. Corrige le format, par exemple en utilisant un UUID.
401 Aucune clé API ni aucun token, ou une valeur invalide. Envoie la clé dans le header x-api-key.
403 Il manque au bearer token le droit account:read. Utilise la clé API ou un token avec account:read.
403 L’adresse e-mail de ton compte n’est pas encore confirmée, ou le compte est bloqué. Ouvre le lien de l’e-mail de confirmation. Si le compte est bloqué, le support peut t’aider.
403 Il manque au bearer token le droit monitoring:manage. Utilise la clé API ou le token admin.
404 Aucun moniteur avec cet identifiant dans ton compte. Vérifie l’identifiant.
409 Un moniteur existe déjà pour cette entreprise (duplicate_monitor). Utilise le moniteur existant ou archive-le d’abord.
409 L’Idempotency-Key a déjà été utilisée avec d’autres données, date de plus de 24 heures ou est encore en cours de traitement. Utilise une nouvelle clé ou attends brièvement.
422 Une valeur est invalide : invalid_subject, invalid_interval, endpoint_required, monitor_limit ou not_resumable. Corrige la valeur.
428 Le header Idempotency-Key manque. Envoie le header.
429 Trop de requêtes. Réessaie après Retry-After.
429 creation_rate_limited : trop de nouveaux moniteurs en 24 heures. Réessaie après Retry-After.
503 Le Monitoring est temporairement indisponible. Réessaie un peu plus tard.
1{2  "error": "duplicate_monitor",3  "meta": {4    "message": "You already have a monitor for this company.",5    "request_credit_cost": 0,6    "credits_remaining": 1457  }8}
409 · Un second moniteur pour la même entreprise