API · Outbound Eligibility
May this number be dialled, now, by you?
POST https://api.audact.ai/v1/eligibility/check
The public API host. The code examples document the intended interface and the endpoints used within the current product.
No public API is served on this host yet, apart from the published Merkle roots at /v1/metachain. The endpoints used inside the product are not the same thing as a public API.
Why this status
- Claim
- In development · By application
- Scope
- The public API host. The code examples document the intended interface and the endpoints used within the current product.
- Ground
- No public API is served on this host yet, apart from the published Merkle roots at /v1/metachain. The endpoints used inside the product are not the same thing as a public API.
- What it does not establish
- That any individual endpoint works today. That is confirmed per endpoint, and the confirmation is open.
- What you can get today
- Production access sits inside an applicable paid agreement. Endpoints are not priced separately.
- Last checked
- 5 October 2026
- Where to check it
- /apis
In controlled testing · Germany: national policy layer active. Netherlands: in development. Belgium and Austria: planned.
One call before the dial. The endpoint checks the number against do-not-call registries, the consent you hold for it, the local quiet-hours window and the vulnerable-person signals your policy defines. It returns allow or block with the reason as structured data. Whether it allows or blocks, it writes a receipt, so a campaign that was stopped is as documented as one that ran.
POST /v1/eligibility/check
curl -X POST https://api.audact.ai/v1/eligibility/check \
-H "Authorization: Bearer $AUDACT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"msisdn": "+4915112345678",
"campaign_id": "camp_dental_followup_q3",
"jurisdiction": "DE",
"dispatch_window": "2026-08-15T14:00:00+02:00",
"consent_reference": "consent_8h2k9d7"
}'One request per number per dispatch window. Cache the verdict; the window is part of the key.
200 OK · structured decision
{
"verdict": "BLOCK",
"reasons": [
{
"code": "DNC_LIST",
"source": "robinsonliste.de",
"checked_at": "2026-08-15T13:59:47Z"
},
{
"code": "QUIET_HOURS",
"jurisdiction": "DE",
"window": "08:00-20:00 local"
}
],
"call_id": "7f3c2a1e-0000-4000-8000-000000000000",
"next_eligible": null
}next_eligible carries the earliest permissible moment where one exists. A block becomes a schedule, not a dead end.
What the law requires
- Unsolicited communication for commercial purposes to a natural person requires prior consent, and every call must offer the means to object.
- Telecommunicatiewet (NL), art. 11.7, amendment in force since 1 July 2026
- Telephone advertising without the recipient's prior express consent is an unacceptable nuisance.
- Gesetz gegen den unlauteren Wettbewerb (DE), § 7(2)
- A person interacting with an AI system must be informed of that. On an outbound call that means before the conversation proper begins.
- Regulation (EU) 2024/1689, Art. 50(1) and 50(5)
- Consent must be demonstrable: the controller must be able to show that the data subject consented.
- Regulation (EU) 2016/679 (GDPR), Art. 7(1)
What gets checked
- Do-not-call registries: Robinsonliste (DE), voluntary; it does not replace the consent test under § 7 UWG.
- In controlled testing · Germany: national policy layer active. Netherlands: in development. Belgium and Austria: planned.
- Consent provenance: was an opt-in collected, by which entity, with what scope, and has it expired?
- In development
- Quiet hours in local time, public holidays included.
- In controlled testing
- Vulnerable-person signals: age cohort, behavioural markers, registry flags. Block or escalate, per your policy.
- In controlled testing
- National policy packs on top of the shared engine.
- In controlled testing · Germany: national policy layer active. Netherlands: in development. Belgium and Austria: planned.
Why before and not after
A blocked dial is the cheapest evidence you will ever produce.
Suppression lists get applied at the end of a pipeline, where they are a filter over an export. Checked at the moment of dispatch, the same rule becomes a record: this number, this campaign, this window, this reason. The receipt for a call you did not make costs nothing and answers the question a regulator actually asks.
Art. 7(1) GDPR puts the burden of showing consent on you. A consent reference that travels with the eligibility check, and lands in the same chain as the call itself, is what turns that burden into a lookup.
Composition
Three endpoints on one outbound call.
- Eligibility before the dial: this endpoint.
- Article 50 attestation on the disclosure, at the top of the call.
- The governance gate on each utterance, for anything commercial or advisory.
Questions
- Does a block stop the campaign?
- It stops that dial. Where a later moment is permissible, next_eligible carries it, so your dialler reschedules instead of dropping the contact.
- Which registries are covered?
- The German registry is live. The Dutch registry sits inside the Dutch policy layer, which is in progress; Belgium and Austria are queued.
- Do you store the phone number?
- The number is needed to run the registry check. What lands in the receipt is a hash of it plus the decision and the reason codes, so the evidence survives a deletion request against the number itself.
The Dutch layer, in full
The Telecomwet page carries what changed on 1 July 2026, what it means for an AI dialler, and how it sits on top of the Article 50 duty rather than replacing it.
Related
All six APIs NL Telecomwet The Dutch layer on top.
1 July 2026 What changed, and what did not.
Consent Vault Where the opt-in provenance lives.
Article 50 Attestation The disclosure at the top of the call.
Voice The same checks inside a running call.
