Check a customer
Compare what a customer told you with the register, and ask one question about a company.
Two operations answer onboarding questions in one call each:
POST /companies/verify compares a customer's details with
the register, and POST /answers answers one question about
one company. Neither answer is stored: each has an id for your records, and asking again produces a new
answer and a new charge. The question you send to POST /answers is kept with your workspace for 90 days and
then deleted, as Teil G of our Datenschutzhinweise
describes.
Verify what a customer told you
Send the details as one line, the way a customer types them, and name the risk checks to run:
curl -X POST "https://api.registercheck.de/v1/companies/verify" \
-H "Authorization: Bearer $REGISTERCHECK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Enduro Reise & Training GmbH, HRB 13557, In der Paint 14, 87730 Bad Grönenbach",
"checks": ["status", "insolvency"]
}'The company is found by the register identity in the text (with its court, when the text names one), else
by its name. Instead of text you can send the same details as fields in company (name, register,
address, each a string). Send one of the two.
The answer:
result—passed,passed_with_warnings(a minor mismatch, or anunknownsomewhere) orfailed(a fieldmismatchor a riskfail).company— the company record it compared with.fields— one row per detail:name,register,addressandsignatory, eachmatch,mismatch_minor(a spelling, the same town on another street, or the address before the last registered change, withregistered_since),mismatch,not_provided, orunknown(a signatory the company's privacy rules keep us from checking).risk— one row per check:pass,failorunknown.unknownmeans the data to judge it is missing; it is never a silent pass.statusalways runs;insolvency(read from the register's own entries),sanctionsandubo(the computed beneficial owners) run when you ask for them.summary— how many fields were checked, matched, warned or failed, and how many risk flags were raised.
Add "signatory": "<name>" to check that a person is a current representative: match when one of that
name is registered, mismatch when none is. When the company's privacy rules withheld someone, the answer
is unknown: a restricted person is never confirmed or denied.
Price: 4 credits, plus 8 when checks includes ubo. A company the details do not match answers
404, and details that match more than one company answer 409 register_identity_ambiguous with the
candidates (up to 100); neither is charged.
Ask one question
curl -X POST "https://api.registercheck.de/v1/answers" \
-H "Authorization: Bearer $REGISTERCHECK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "Wo hat die Enduro Reise & Training GmbH ihren Sitz?"}'The question names the company by its name or its register identity (HRB 13557), and it is found the
way verify finds it. Six kinds of question are answered, and type says which one this was:
representation (may a named person represent the company alone), beneficial_owner, officers,
shareholders, seat and status. A language model only reads the question — its kind, the company
and the person — and the answer is composed from register data by rules.
The answer carries summary (one German sentence; for this question on 6 November 2026, "Enduro Reise &
Training GmbH hat ihren Sitz in Bad Grönenbach."), details (German lines saying what it was read from), result (the answer as data, one
shape per type), confidence (high or medium) and sources.
Price: 8 credits. A question outside the six kinds, or one that names no company, answers
422 question_not_supported; that, a company that is not found (404) or ambiguous (409), and a read
that fails are not charged.