import Openregister from 'openregister';
const client = new Openregister({
apiKey: process.env['OPENREGISTER_API_KEY'], // This is the default and can be omitted
});
const monitor = await client.monitor.create({
entity_id: 'entity_id',
entity_type: 'company',
preferences: ['basic'],
});
console.log(monitor.entity_id);import os
from openregister import Openregister
client = Openregister(
api_key=os.environ.get("OPENREGISTER_API_KEY"), # This is the default and can be omitted
)
monitor = client.monitor.create(
entity_id="entity_id",
entity_type="company",
preferences=["basic"],
)
print(monitor.entity_id)package main
import (
"context"
"fmt"
"github.com/oregister/openregister-go"
"github.com/oregister/openregister-go/option"
)
func main() {
client := openregister.NewClient(
option.WithAPIKey("My API Key"),
)
monitor, err := client.Monitor.New(context.TODO(), openregister.MonitorNewParams{
EntityID: "entity_id",
EntityType: openregister.MonitorNewParamsEntityTypeCompany,
Preferences: []string{"basic"},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", monitor.EntityID)
}
openregister monitor create \
--api-key 'My API Key' \
--entity-id entity_id \
--entity-type company \
--preference basiccurl --request POST \
--url https://api.openregister.de/v1/monitor \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entity_id": "<string>",
"preferences": [],
"update_frequency": "weekly"
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openregister.de/v1/monitor",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'entity_id' => '<string>',
'preferences' => [
],
'update_frequency' => 'weekly'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://api.openregister.de/v1/monitor")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"entity_id\": \"<string>\",\n \"preferences\": [],\n \"update_frequency\": \"weekly\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openregister.de/v1/monitor")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"entity_id\": \"<string>\",\n \"preferences\": [],\n \"update_frequency\": \"weekly\"\n}"
response = http.request(request)
puts response.read_body{
"entity_type": "company",
"entity_id": "<string>",
"preferences": [
"basic"
],
"update_frequency": "weekly",
"disabled": true
}Create Monitor
import Openregister from 'openregister';
const client = new Openregister({
apiKey: process.env['OPENREGISTER_API_KEY'], // This is the default and can be omitted
});
const monitor = await client.monitor.create({
entity_id: 'entity_id',
entity_type: 'company',
preferences: ['basic'],
});
console.log(monitor.entity_id);import os
from openregister import Openregister
client = Openregister(
api_key=os.environ.get("OPENREGISTER_API_KEY"), # This is the default and can be omitted
)
monitor = client.monitor.create(
entity_id="entity_id",
entity_type="company",
preferences=["basic"],
)
print(monitor.entity_id)package main
import (
"context"
"fmt"
"github.com/oregister/openregister-go"
"github.com/oregister/openregister-go/option"
)
func main() {
client := openregister.NewClient(
option.WithAPIKey("My API Key"),
)
monitor, err := client.Monitor.New(context.TODO(), openregister.MonitorNewParams{
EntityID: "entity_id",
EntityType: openregister.MonitorNewParamsEntityTypeCompany,
Preferences: []string{"basic"},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", monitor.EntityID)
}
openregister monitor create \
--api-key 'My API Key' \
--entity-id entity_id \
--entity-type company \
--preference basiccurl --request POST \
--url https://api.openregister.de/v1/monitor \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entity_id": "<string>",
"preferences": [],
"update_frequency": "weekly"
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openregister.de/v1/monitor",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'entity_id' => '<string>',
'preferences' => [
],
'update_frequency' => 'weekly'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://api.openregister.de/v1/monitor")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"entity_id\": \"<string>\",\n \"preferences\": [],\n \"update_frequency\": \"weekly\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openregister.de/v1/monitor")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"entity_id\": \"<string>\",\n \"preferences\": [],\n \"update_frequency\": \"weekly\"\n}"
response = http.request(request)
puts response.read_body{
"entity_type": "company",
"entity_id": "<string>",
"preferences": [
"basic"
],
"update_frequency": "weekly",
"disabled": true
}Create a monitor
Create a monitor to receive webhook notifications when a company or person is updated. Cost: 25 credits (50 credits for daily monitors)Entity ID
Theentity_id format depends on the entity_type:
- Company — use the register ID, e.g.
DE-HRB-F1103-267645. You can find this on the company page or via the search endpoints. - Person — use the person UUID returned by the person search or person endpoint.
Preferences
Preferences control which data categories trigger a webhook notification. You must provide at least one preference. All values must correspond to the givenentity_type — mixing preferences across entity types returns a 400 Bad Request.
Company (entity_type: company)
| Value | What triggers a notification |
|---|---|
basic | Core firmographic data — name, registered address, legal form, or status |
representation | Directors, officers, managing partners, or authorised signatories |
financials | Annual accounts or financial statements filed |
documents | New documents or publications filed with the register |
ownership | Direct owners (shareholders) of the company |
holdings | Companies in which this company holds a stake |
entity_type: person)
| Value | What triggers a notification |
|---|---|
management_positions | Board or management roles the person holds across any company |
holdings | Companies in which this person holds a stake |
Update Frequency
The optionalupdate_frequency field controls how often the monitored company is checked for register updates:
| Value | Check cadence | Creation cost | Monthly cost |
|---|---|---|---|
weekly (default) | At least once per week | 25 credits | 25 credits |
daily | Once per day | 50 credits | 50 credits |
weekly.
update_frequency is only supported for company monitors. Including it when entity_type is person returns a 400 Bad Request validation error.Use Cases
Compliance monitoring — Subscribe tobasic, representation and ownership changes on counterparties or customers. Receive alerts on legal form conversions, address moves, or management changes as soon as they appear in the register.
Ownership change alerts — Use the ownership and holdings preferences to detect when a company’s shareholder structure changes, keeping your KYC data current without manual re-checks.
Financial filing alerts — Monitor the financials and documents preferences to be notified the moment new annual accounts or register publications are available, enabling automated document retrieval and archiving workflows.
Due diligence pipelines — Add a monitor when onboarding a new counterparty. Receive ongoing notifications for the duration of the relationship and remove the monitor when the relationship ends.Authorizations
API Key Authentication Provide your API key as a Bearer token in the Authorization header.
Body
Request to create a webhook monitor item.
Type of the entity to monitor.
company, person For company this is the register ID (e.g. DE-HRB-F1103-267645).
For person this is the person UUID.
Preferences for the entity to monitor.
Use WebhookMonitorCompanyPreference values when entity_type is company,
and WebhookMonitorPersonPreference values when entity_type is person.
All possible monitor preference values across all entity types.
Which values are valid depends on entity_type:
Company (entity_type: company)
| Value | Description |
|---|---|
basic | Core firmographic data (name, address, legal form, status) |
representation | Directors, officers, and authorised signatories |
financials | Annual accounts and financial statements |
documents | Filed documents and publications |
ownership | Direct owners of the company |
holdings | Companies in which this company holds a stake |
insolvencies | Insolvency proceedings of the company |
Person (entity_type: person)
| Value | Description |
|---|---|
management_positions | Board and management roles the person holds |
holdings | Companies in which this person holds a stake |
insolvencies | Insolvency proceedings of the person |
Passing a value that does not apply to the given entity_type will result
in a validation error.
basic, representation, financials, documents, ownership, holdings, management_positions, insolvencies How often the monitored company is checked for register updates.
Defaults to weekly if not provided.
Only supported when entity_type is company. Requests for person
monitors that include this field are rejected with a validation error.
Daily monitors are billed at a premium: 50 credits at creation and 50 credits per month while active, instead of the standard 25.
daily, weekly Response
Success
Type of the entity to monitor.
company, person For company this is the register ID (e.g. DE-HRB-F1103-267645).
For person this is the person UUID.
Preferences for the entity to monitor.
Use WebhookMonitorCompanyPreference values when entity_type is company,
and WebhookMonitorPersonPreference values when entity_type is person.
All possible monitor preference values across all entity types.
Which values are valid depends on entity_type:
Company (entity_type: company)
| Value | Description |
|---|---|
basic | Core firmographic data (name, address, legal form, status) |
representation | Directors, officers, and authorised signatories |
financials | Annual accounts and financial statements |
documents | Filed documents and publications |
ownership | Direct owners of the company |
holdings | Companies in which this company holds a stake |
insolvencies | Insolvency proceedings of the company |
Person (entity_type: person)
| Value | Description |
|---|---|
management_positions | Board and management roles the person holds |
holdings | Companies in which this person holds a stake |
insolvencies | Insolvency proceedings of the person |
Passing a value that does not apply to the given entity_type will result
in a validation error.
basic, representation, financials, documents, ownership, holdings, management_positions, insolvencies How often the monitored company is checked for register updates.
Always weekly for person monitors.
daily, weekly Whether the monitor item is disabled.
Was this page helpful?

