TypeScript SDK
Officieel TypeScript-SDK voor Audact. Een slanke, afhankelijkheidsvrije
wrapper (alleen Node ≥18 fetch/FormData/AbortSignal/URLSearchParams) om de
HTTP-diensten van Audact — Validator, Evidence Layer, LLM Proxy, Tenant Management,
Voice Gateway, Agent Worker, Aggregator, Policy Engine, Audio Validator en Org Management.
Installatie
bash
npm install @audactcore/sdk
Snelstart
ts
import { AudactClient } from "@audactcore/sdk";
const client = new AudactClient({ apiKey: "aud_live_..." });
const result = await client.validator.validate({
call_id: "a1b2c3d4-...",
tenant_id: "t1t2t3...",
config_id: "c1c2c3...",
turn: 1,
content: "Hello, I am an AI assistant.",
context: {
previous_turns: [],
call_state: { disclosure_delivered: false },
},
});
if (result.verdict === "ALLOW") {
console.log("Content approved:", result.content);
}Basis-URL
In productie bevindt elke dienst zich achter één publieke host, via paden gerouteerd onder
/v1. Eenmalig doorgeven:
ts
const client = new AudactClient({ apiKey: "aud_live_...", baseUrl: "https://api.audact.ai" });Een afsluitende / of /v1 in baseUrl wordt verwijderd; verzoeken gaan naar
https://api.audact.ai/v1/.... serviceUrls (dienstspecifieke overschrijvingen die voorrang
krijgen op baseUrl) zijn alleen nodig voor aangepaste implementaties.
Dekking
Het SDK dekt de gedocumenteerde API volledig af: 209 van 211 operaties zijn gedekt
(de resterende 2 zijn ontvangstzijdige webhooks van aanbieder naar platform —
POST /telnyx/webhook en POST /webhooks/livekit — dit zijn inkomende eindpunten die
Audact ontvangt, maar nooit aanroept).
| Subclient | Dienst | Authenticatie | Dekking |
|---|---|---|---|
client.validator | Validator | API-sleutel | ACVF-validatie per gesprekbeurt, gespreksscore afronden |
client.evidence | Evidence Layer | API-sleutel | Bewijsgebeurtenissen, ketens, verificatie/reconstructie, gesprekken, overtredingen, Artikel 50-rapporten/-exports, C2PA, bonnen, levering, transcriptafstemming |
client.llmProxy | LLM Proxy | API-sleutel | Compliance-gevalideerde LLM-chatafronding (synchroon + streaming) |
client.tenants | Tenant Management | API-sleutel | Tenant-CRUD, gebruik, API-sleutels, configuraties |
client.numbers | Voice Gateway | API-sleutel | KYC-documenten/-sets, nummerprovisioning-levenscyclus (bestellen, toewijzen, opschorten, hervatten, vrijgeven, trunk) |
client.calls | Voice Gateway | API-sleutel | SIP-gesprek-levenscyclus (uitgaand/inkomend/browser, ophangen, status, overdracht, doorverbinden), trunks, verzendregels, admission-URL, WS-tickets |
client.webhooks | Tenant Management | API-sleutel | Webhook-eindpunt-CRUD, testping, aflevergeschiedenis/-herhaling, gebeurtenistype/-schemadetectie, geheimstatus/-rotatie |
client.agents | Agent Worker | API-sleutel | Agent-CRUD + dupliceren, TTS-spraakcatalogus-CRUD, pipelinestatus |
client.tools | Agent Worker | API-sleutel | Function-calling-tool-CRUD/-test, agent-tool koppelen/ontkoppelen |
client.integrations | Agent Worker | API-sleutel | Cal.com-verbindings-CRUD, statuscontrole, gebeurtenistypedetectie |
client.knowledgeBases | Tenant Management | API-sleutel | Kennisbasis (RAG)-CRUD, bronnen (url/tekst JSON + multipart bestandsupload, opnieuw inlezen), agentgekoppelde retrieval-afstemming, crawluitsluitingen, retrieval-testomgeving |
client.aggregation | Aggregator | API-sleutel (openbaar: getMetachain, verifyInclusion) | Merkle-aggregatiebewijzen, openbare meta-chain, offline inclusiebevestiging |
client.policy | Policy Engine | API-sleutel | Policy-evaluatie, jurisdictie-policydocumenten, aanroeprtijdige voorafgaande controle |
client.audio | Audio Validator | API-sleutel | Synchrone audiovalidatie per gesprekbeurt, nabewerking audio-naar-transcriptafstemming |
client.auth | Tenant Management | API-sleutel | API-sleutel ↔ JWT-sessiebrug (uitwisselen, vernieuwen) |
client.org | Org Management | OrgBearer (JWT) | Org-selfservice: registreren/aanmelden/vernieuwen/afmelden, profiel, KYC |
client.org (tenants) | Org Management | OrgBearer (JWT) | Door org beheerde tenantlevenscyclus: weergeven/aanmaken/ophalen, zachte verwijdering/inschakelen/uitschakelen/herstellen, initialiseren, sleutel uitgeven, imiteren |
client.pii | Evidence Layer | API-sleutel | PII-vault wissen op identiteit (shred, shredCall), gespreksidentiteiten (listCallIdentities, linkCallIdentity), vault-tokens ontsleutelen (decrypt), gewiste-keyset-status (listErasedKeysets), versleutelingsinstellingen (settings) |
Toegevoegd in 0.3.0
| Methode | Route |
|---|---|
client.pii.listErasedKeysets(callId, keysetIds) | GET /v1/calls/{call_id}/pii/erased-keysets |
client.evidence.listComplianceEvents(opts?) | GET /v1/compliance/events |
Foutafhandeling
Mislukte verzoeken gooien AudactError, gevuld vanuit de {"error": {...}}-envelop van de API:
ts
import { AudactError } from "@audactcore/sdk";
try {
await client.evidence.getCallDetail("missing");
} catch (err) {
if (err instanceof AudactError) {
console.error(err.status, err.code, err.message);
console.error("request id:", err.requestId); // quote this to support
if (err.hint) console.error("hint:", err.hint);
if (err.status === 429) console.error("retry in", err.retryAfter, "s");
}
}hint, details en retryAfter kunnen undefined zijn.
Authenticatiestromen
De meeste subclients sturen Authorization: Bearer <apiKey> met de apiKey die aan de
AudactClient-constructor is doorgegeven. Twee oppervlakken gebruiken een andere Bearer-token
(org en platform), ingesteld via setAuthToken() (of vooraf opgegeven in AudactClientOptions):
- OrgBearer — een JWT verkregen via
client.org.login(). Het SDK slaat hem automatisch op in deorg-subclient; elk volgendclient.org.*-aanroep (inclusief de tenantlevenscyclusmethoden) stuurt hem in plaats van de API-sleutel.
Org-aanmeldstroom
ts
import { AudactClient } from "@audactcore/sdk";
const client = new AudactClient({ apiKey: "aud_live_..." });
// login() is public (no bearer required) and stores the returned access
// token on client.org automatically.
await client.org.login({ email: "admin@example.com", password: "hunter2" });
// Subsequent calls send `Authorization: Bearer <jwt>`.
const profile = await client.org.getProfile();
const tenants = await client.org.listTenants();
// Rotate the token before it expires, then clear it when done.
await client.org.refresh();
await client.org.logout();U kunt ook starten met een vooraf geverifieerde aanmelding:
ts
const client = new AudactClient({
apiKey: "aud_live_...",
orgToken: "<jwt from a prior login>",
});Een nieuwe client: webhooks
ts
const endpoint = await client.webhooks.createWebhook({
url: "https://example.com/hooks/audact",
events: ["call_ended", "compliance.violation_detected"],
scope: "account",
});
await client.webhooks.testWebhook(endpoint.id);
const deliveries = await client.webhooks.listWebhookDeliveries(endpoint.id);Ontwikkeling
bash
npm install npx tsc --noEmit # typecheck npm run build # emit dist/esm + dist/cjs npm run test # vitest
