/v1/account/monitors
account/monitors
Bevakning: låt företag bevakas, skapa, pausa, radera.
En bevakning övervakar ett företag åt dig. Med ett fast intervall kontrollerar vi om det finns nya signaler och skickar varje ny signal via webhook till dina webhook-endpoints.
Kostnader och gränser
| Vad | Krediter |
|---|---|
| Bevakning som kontrolleras varje dag, i 30 dagar | 50 |
| Bevakning som kontrolleras med 3 dagars mellanrum, i 30 dagar | 40 |
| Bevakning som kontrolleras med 7 dagars mellanrum, i 30 dagar | 20 |
| Bevakning som kontrolleras med 30 dagars mellanrum, i 30 dagar | 10 |
| Varje ytterligare lyckad kontroll under perioden | +2 |
Gräns: 30 förfrågningar per minut. Skapa, ändra och radera: 10 per minut.
Att skapa en bevakning och den första baslinjen är gratis. En cykel på 30 dagar debiteras så snart bevakningen blir aktiv. Priset beror på kontrollintervallet och omfattar alla kontroller som intervallet planerar inom en cykel.
Ett intervall mellan två nivåer kostar lika mycket som närmast tätare nivå: var fjärde dag kostar lika mycket som var tredje dag.
Extra kontroller sker främst när du förkortar intervallet mitt i en cykel. Varje lyckad extra kontroll kostar beloppet i tabellen.
Efter 30 dagar förnyas cykeln automatiskt till det pris som då gäller. Misslyckade kontroller kostar ingenting. När du pausar, arkiverar eller ändrar intervallet återbetalar vi ingenting.
Varje konto kan ha upp till 50 bevakningar samtidigt, en per företag. Inom 24 timmar kan du skapa upp till 50 bevakningar; arkiverade räknas också.
Priset för ett intervall får du gratis med GET /v1/account/monitoring/pricing, här för en kontroll var sjunde dag:
curl -G "https://handelsregister.ai/api/v1/account/monitoring/pricing" \ -H "x-api-key: DIN_API_NYCKEL" \ --data-urlencode 'poll_interval_days=7'
import requests response = requests.get( "https://handelsregister.ai/api/v1/account/monitoring/pricing", headers={"x-api-key": "DIN_API_NYCKEL"}, params={ "poll_interval_days": "7", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/account/monitoring/pricing"); url.searchParams.append("poll_interval_days", "7"); const response = await fetch(url, { headers: { "x-api-key": "DIN_API_NYCKEL" }, }); const data = await response.json();
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}
Så fungerar en bevakning
- Skapa. Du anger företaget, kontrollintervallet och minst en verifierad webhook-endpoint. Bevakningen startar med statusen
initializing. - Baslinje. Vi registrerar de senaste dagarnas signaler som kända. De levereras inte, så du får bara det som är nytt därefter.
- Aktivera. Vi debiterar cykeln, bevakningen blir
activeoch kontrollerar för första gången direkt. - Kontrollera. Därefter kontrollerar den med det valda intervallet. Varje ny signal utlöser ett meddelande per bevakning till dina webhook-endpoints.
- Förnya. Efter varje cykel debiteras nästa automatiskt, så länge ditt saldo räcker.
Kontrollintervallet ligger mellan 1 och 30 dagar. Den exakta tidpunkten för en kontroll kan variera inom en timme. Varje kontroll ser några dagar bakåt, så att även sent publicerade anteckningar kommer fram.
En bevakning levererar Signals-ämnena i din plan: fem i varje konto, Insolvenser med Pro, Omvandlingar & M&A med Max. En webhook bär samma signal i fältet data.signal som signals gör.
| Status | Betydelse |
|---|---|
| initializing | Skapad; baslinje och aktivering pågår. |
| active | Kontrollerar med det valda intervallet. |
| paused_user | Pausad av dig. |
| paused_configuration | Ingen aktiv, verifierad webhook-endpoint är längre ansluten. |
| paused_billing | Ditt saldo täcker inte cykeln eller en extra kontroll. Eller så har priset ändrats och väntar på ditt samtycke. |
| error | Flera kontroller i rad har misslyckats. |
| archived | Avslutad för gott. Du kan fortfarande läsa bevakningen via dess ID, men den visas inte längre i listan. |
För pausade bevakningar och fel förklarar status_reason varför, till exempel no_verified_endpoint eller insufficient_cycle_floor.
Endpoints
Alla sökvägar ligger under /v1/account. Du läser och skriver med din API-nyckel i headern x-api-key.
| Metod | Sökväg | Syfte |
|---|---|---|
| GET |
/v1/account/monitors |
Alla bevakningar, de senaste först, utan arkiverade. |
| POST |
/v1/account/monitors |
Skapa en bevakning. |
| GET |
/v1/account/monitors/{id} |
En bevakning med sin cykel och sina senaste kontroller. |
| PATCH |
/v1/account/monitors/{id} |
Ändra kontrollintervallet. |
| POST |
/v1/account/monitors/{id}/pause |
Pausa. |
| POST |
/v1/account/monitors/{id}/resume |
Återuppta. |
| DELETE |
/v1/account/monitors/{id} |
Arkivera. |
| GET |
/v1/account/monitoring/pricing |
Pris för ett intervall. |
Idempotency-Key
Varje skrivande förfrågan kräver headern Idempotency-Key, ett unikt värde per operation, helst ett UUID. Utan den svarar API:et med 428.
Om du upprepar en förfrågan med samma nyckel och samma data inom 24 timmar får du det sparade svaret tillbaka. Det har headern Idempotency-Status: replayed. Så skapar ett nätverksfel ingen andra bevakning.
Det gäller även för felsvar. För ett nytt försök efter en rättelse använder du därför en ny nyckel. Samma nyckel med andra data ger 409.
Upp till 128 tecken är tillåtna: bokstäver, siffror och . _ : -. Det första tecknet är en bokstav eller siffra. En nyckel i något annat format ger 400.
Skapa en bevakning
Du behöver företagets entity_id och minst en verifierad webhook-endpoint, se account/webhook-endpoints.
curl -X POST "https://handelsregister.ai/api/v1/account/monitors" \ -H "x-api-key: DIN_API_NYCKEL" \ -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" ] }'
import uuid import requests response = requests.post( "https://handelsregister.ai/api/v1/account/monitors", headers={ "x-api-key": "DIN_API_NYCKEL", "Idempotency-Key": str(uuid.uuid4()), }, json={ "entity_id": "94eb910fef13f94585c48c263fa446d4", "label": "Hetzner Online GmbH", "poll_interval_days": 7, "endpoint_ids": [ "wep_01m6b3j1g0cdz98hw8zdefbf52" ] }, ) data = response.json()
const response = await fetch("https://handelsregister.ai/api/v1/account/monitors", { method: "POST", headers: { "x-api-key": "DIN_API_NYCKEL", "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json", }, body: JSON.stringify({ "entity_id": "94eb910fef13f94585c48c263fa446d4", "label": "Hetzner Online GmbH", "poll_interval_days": 7, "endpoint_ids": [ "wep_01m6b3j1g0cdz98hw8zdefbf52" ] }), }); const data = await response.json();
| Namn | Typ | Beskrivning | Exempel |
|---|---|---|---|
| Idempotency-KeyHeader | strängobligatorisk | Ett unikt värde per operation, helst ett UUID. Se Idempotency-Key.Gränser: 1 till 128 tecken |
req-20260802-01 |
| entity_idBody | strängobligatorisk |
Företagets entity_id från fetch-organization eller search-organizations.Gränser: 1 till 128 tecken |
94eb910fef13f94585c48c263fa446d4 |
| labelBody | strängvalfri | Ett namn för bevakningen.Gränser: högst 200 tecken |
Hetzner Online GmbH |
| poll_interval_daysBody | heltalobligatorisk | Kontrollintervall i dagar.Gränser: 1 till 30 |
7 |
| endpoint_idsBody | lista med stringobligatorisk |
ID:n för dina webhook-endpoints (wep_…). Var och en måste vara aktiv och verifierad.Gränser: 1 till 10 poster |
["wep_01m6b3j1g0cdz98hw8zdefbf52"] |
API:et svarar med 202: bevakningen är skapad, och baslinje och aktivering körs i bakgrunden. meta.billing.charged_credits visar att ingenting debiterades för detta.
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}
Lista och ändra bevakningar
GET /v1/account/monitors returnerar upp till 100 bevakningar under monitors, med total. Arkiverade finns inte i listan.
GET /v1/account/monitors/{id} visar dessutom den aktuella cykeln i billing_cycle och de senaste kontrollerna i recent_runs.
curl -G "https://handelsregister.ai/api/v1/account/monitors/mon_01m65pn3vm11sjjp1j076cbvec" \ -H "x-api-key: DIN_API_NYCKEL"
import requests response = requests.get( "https://handelsregister.ai/api/v1/account/monitors/mon_01m65pn3vm11sjjp1j076cbvec", headers={"x-api-key": "DIN_API_NYCKEL"}, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/account/monitors/mon_01m65pn3vm11sjjp1j076cbvec"); const response = await fetch(url, { headers: { "x-api-key": "DIN_API_NYCKEL" }, }); const data = await response.json();
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}
| Fält | Betydelse |
|---|---|
| id |
Bevakningens ID, börjar med mon_.
|
| entity_id | Det bevakade företaget. |
| poll_interval_days | Kontrollintervall i dagar. |
| status, status_reason |
Status, se ovan. status_reason anger orsaken.
|
| baseline_completed_at, activated_at, last_succeeded_at | Tidpunkter för baslinjen, aktiveringen och den senaste lyckade kontrollen. |
| next_poll_at | Nästa planerade kontroll, bara för aktiva bevakningar. |
| billing_cycle | Den aktuella cykeln: början, slut, pris, inkluderade kontroller och hittills genomförda kontroller. |
| recent_runs |
De senaste kontrollerna med resultat, debitering och antalet nya signaler i events_new.
|
PATCH /v1/account/monitors/{id} ändrar kontrollintervallet. Nästa kontroll följer då med det nya intervallet, räknat från ändringen.
Den aktuella cykeln behåller sitt pris och sina inkluderade kontroller. Det nya priset gäller från nästa cykel. Ett kortare intervall kan utlösa extra kontroller i den aktuella cykeln.
curl -X PATCH "https://handelsregister.ai/api/v1/account/monitors/mon_01m6b3m7945dn7cyvexzv41kjz" \ -H "x-api-key: DIN_API_NYCKEL" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "poll_interval_days": 30 }'
import uuid import requests response = requests.patch( "https://handelsregister.ai/api/v1/account/monitors/mon_01m6b3m7945dn7cyvexzv41kjz", headers={ "x-api-key": "DIN_API_NYCKEL", "Idempotency-Key": str(uuid.uuid4()), }, json={ "poll_interval_days": 30 }, ) data = response.json()
const response = await fetch("https://handelsregister.ai/api/v1/account/monitors/mon_01m6b3m7945dn7cyvexzv41kjz", { method: "PATCH", headers: { "x-api-key": "DIN_API_NYCKEL", "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json", }, body: JSON.stringify({ "poll_interval_days": 30 }), }); const data = await response.json();
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}
Pausa, återuppta, arkivera
POST …/{id}/pause stoppar en aktiv bevakning. Den betalda cykeln löper ut, och ingenting återbetalas.
POST …/{id}/resume återupptar en pausad bevakning eller en bevakning med fel. Vi kontrollerar webhook-endpoints, saldo och pris igen.
Inom den aktuella betalda cykeln kostar det ingenting att återuppta. Om cykeln har löpt ut startar en ny cykel nu till aktuellt pris. meta.request_credit_cost visar beloppet.
Om till exempel en verifierad webhook-endpoint saknas svarar API:et ändå med 200, men med meta.activated: false. Bevakningens status och status_reason anger orsaken.
Om priset har ändrats stannar en aktiv bevakning i slutet av cykeln med pricing_consent_required. Med resume godkänner du det nya priset.
DELETE …/{id} arkiverar bevakningen för gott. Det är slutgiltigt och ingenting återbetalas.
curl -X POST "https://handelsregister.ai/api/v1/account/monitors/mon_01m6b3m7945dn7cyvexzv41kjz/resume" \ -H "x-api-key: DIN_API_NYCKEL" \ -H "Idempotency-Key: $(uuidgen)"
import uuid import requests response = requests.post( "https://handelsregister.ai/api/v1/account/monitors/mon_01m6b3m7945dn7cyvexzv41kjz/resume", headers={ "x-api-key": "DIN_API_NYCKEL", "Idempotency-Key": str(uuid.uuid4()), }, ) data = response.json()
const response = await fetch("https://handelsregister.ai/api/v1/account/monitors/mon_01m6b3m7945dn7cyvexzv41kjz/resume", { method: "POST", headers: { "x-api-key": "DIN_API_NYCKEL", "Idempotency-Key": crypto.randomUUID(), }, }); const data = await response.json();
paused_configuration. När du har aktiverat webhook-endpointen återupptar du bevakningen med resume.
Fel
Fel har uppbyggnaden {"error": "…", "meta": {"message": "…"}}. I ditt program kontrollerar du värdet i error. Texten i meta.message är på engelska och kan ändras. Fel kostar ingenting.
| Status | Orsak | Vad du kan göra |
|---|---|---|
| 400 |
api_key står i URL:en. |
Skicka nyckeln i headern x-api-key. |
| 400 |
Idempotency-Key har ett ogiltigt format. |
Rätta formatet, använd till exempel ett UUID. |
| 401 | Ingen API-nyckel eller token, eller en ogiltig. |
Skicka nyckeln i headern x-api-key. |
| 403 |
Bearer-token saknar behörigheten account:read. |
Använd API-nyckeln eller en token med account:read. |
| 403 | Kontots e-postadress är ännu inte bekräftad, eller kontot är spärrat. | Öppna länken i bekräftelsemejlet. Om kontot är spärrat kan supporten hjälpa till. |
| 403 |
Bearer-token saknar behörigheten monitoring:manage. |
Använd API-nyckeln eller admin-token. |
| 404 | Ingen bevakning med detta ID i ditt konto. | Kontrollera ID:t. |
| 409 |
Det finns redan en bevakning för detta företag (duplicate_monitor). |
Använd den befintliga bevakningen eller arkivera den först. |
| 409 |
Idempotency-Key har redan använts med andra data, är äldre än 24 timmar eller bearbetas fortfarande. |
Använd en ny nyckel eller vänta en kort stund. |
| 422 |
Ett värde är ogiltigt: invalid_subject, invalid_interval, endpoint_required, monitor_limit eller not_resumable. |
Rätta värdet. |
| 428 |
Headern Idempotency-Key saknas. |
Skicka headern. |
| 429 | För många förfrågningar. |
Försök igen efter Retry-After. |
| 429 |
creation_rate_limited: för många nya bevakningar inom 24 timmar. |
Försök igen efter Retry-After. |
| 503 | Bevakning är tillfälligt otillgänglig. | Försök igen lite senare. |
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}