SDK TypeScript
- SDK TypeScript: Est-ce construit
- Est-ce construit
- SDK TypeScript: Puis-je y accéder
- Puis-je y accéder
Pourquoi cet état
- Affirmation
- Opérationnel aujourd’hui · Early Customer Program
- Périmètre
- La bibliothèque cliente TypeScript documentée à /docs/sdks/typescript. Pas les SDK Python et Go, qui ont leur propre entrée.
- Fondement
- Le SDK TypeScript est publié sur npm sous le nom @audactcore/sdk 0.4.0 (mesuré le 22 octobre 2026) ; des tests de parité couvrent 209 des 211 opérations documentées.
- Ce que cela n’établit pas
- Que chaque opération documentée a été exécutée via le SDK en production.
- Ce que vous pouvez obtenir aujourd’hui
- Inclus dans un contrat payant.
- Dernière vérification
- 21 octobre 2026
- Où le vérifier
- /docs/sdks/typescript
SDK TypeScript officiel pour Audact. Une surcouche fine, sans dépendance
(uniquement fetch/FormData/AbortSignal/URLSearchParams de Node ≥18) autour des services HTTP d’Audact —
Validator, Evidence Layer, LLM Proxy, Tenant Management, Voice Gateway, Agent Worker, Aggregator,
Policy Engine, Audio Validator et Org Management.
Installation
bash
npm install @audactcore/sdk
Démarrage rapide
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);
}URL de base
En production, tous les services se trouvent derrière un seul hôte public, avec un routage par chemin sous /v1. Indiquez-le une seule fois :
ts
const client = new AudactClient({ apiKey: "aud_live_...", baseUrl: "https://api.audact.ai" });Un / ou un /v1 final dans baseUrl est supprimé ; les requêtes vont vers https://api.audact.ai/v1/....
serviceUrls (remplacements par service, qui l’emportent sur baseUrl) ne sont nécessaires que pour des déploiements personnalisés.
Couverture
Le SDK est à parité complète avec l’API documentée : 209 des 211 opérations sont couvertes
(les 2 restantes sont des webhooks côté réception, du fournisseur vers la plateforme —
POST /telnyx/webhook et POST /webhooks/livekit — qui sont des points d’entrée qu’Audact reçoit,
sans jamais les appeler).
| Sous-client | Service | Authentification | Ce qu’il couvre |
|---|---|---|---|
client.validator | Validator | Clé API | Validation ACVF à chaque tour, finalisation du score d’appel |
client.evidence | Evidence Layer | Clé API | Événements de preuve, chaînes, vérification/reconstruction, appels, violations, rapports et exports de l’article 50, C2PA, reçus, livraison, rapprochement des transcriptions |
client.llmProxy | LLM Proxy | Clé API | Complétion de chat LLM validée par les contrôles de conformité (synchrone + streaming) |
client.tenants | Tenant Management | Clé API | CRUD des tenants, utilisation, clés API, configurations |
client.numbers | Voice Gateway | Clé API | Documents/ensembles KYC, cycle de vie du provisionnement des numéros (commande, affectation, suspension, reprise, libération, trunk) |
client.calls | Voice Gateway | Clé API | Cycle de vie des appels SIP (sortant/entrant/navigateur, raccrochage, état, reprise en main, transfert), trunks, règles de distribution, URL d’admission, tickets WS |
client.webhooks | Tenant Management | Clé API | CRUD des points de terminaison de webhooks, ping de test, historique des livraisons/renvoi, découverte des types d’événements/schémas, état/rotation des secrets |
client.agents | Agent Worker | Clé API | CRUD des agents + duplication, CRUD du catalogue de voix TTS, état du pipeline |
client.tools | Agent Worker | Clé API | CRUD/test des outils d’appel de fonctions, rattachement/détachement d’outils aux agents |
client.integrations | Agent Worker | Clé API | CRUD des connexions Cal.com, contrôle d’état, découverte des types d’événements |
client.knowledgeBases | Tenant Management | Clé API | CRUD des bases de connaissances (RAG), sources (url/texte JSON + envoi de fichier multipart, réingestion), liens avec les agents et réglage de la récupération, exclusions d’exploration, banc de test de la récupération |
client.aggregation | Aggregator | Clé API (public : getMetachain, verifyInclusion) | Preuves d’agrégation de Merkle, méta-chaîne publique, vérification hors ligne des preuves d’inclusion |
client.policy | Policy Engine | Clé API | Évaluation des règles, documents de règles par juridiction, contrôle préalable des plages horaires d’appel |
client.audio | Audio Validator | Clé API | Validation audio synchrone à chaque tour, rapprochement audio-transcription après l’appel |
client.auth | Tenant Management | Clé API | Passerelle clé API ↔ session JWT (échange, rafraîchissement) |
client.org | Org Management | OrgBearer (JWT) | Libre-service de l’organisation : inscription/connexion/rafraîchissement/déconnexion, profil, KYC |
client.org (tenants) | Org Management | OrgBearer (JWT) | Cycle de vie des tenants rattachés à l’organisation : liste/création/lecture, suppression logique/activation/désactivation/restauration, initialisation, émission de clé, impersonation |
client.pii | Evidence Layer | Clé API | Effacement du coffre PII par identité (shred, shredCall), identités d’appel (listCallIdentities, linkCallIdentity), déchiffrement des jetons du coffre (decrypt), état des jeux de clés effacés (listErasedKeysets), paramètres de chiffrement (settings) |
Ajouté dans la version 0.3.0
| Méthode | Route |
|---|---|
client.pii.listErasedKeysets(callId, keysetIds) | GET /v1/calls/{call_id}/pii/erased-keysets |
client.evidence.listComplianceEvents(opts?) | GET /v1/compliance/events |
Gestion des erreurs
Les requêtes en échec lèvent AudactError, renseignée à partir de l’enveloppe {"error": {...}} de l’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 et retryAfter peuvent valoir undefined.
Flux d’authentification
La plupart des sous-clients envoient Authorization: Bearer <apiKey> avec la apiKey transmise au
constructeur AudactClient. Deux surfaces utilisent un autre jeton Bearer (organisation et plateforme), défini via
setAuthToken() (ou fourni d’emblée dans AudactClientOptions) :
- OrgBearer — un JWT obtenu auprès de
client.org.login(). Le SDK le conserve automatiquement sur le sous-clientorg; chaque appelclient.org.*suivant (y compris les méthodes de cycle de vie des tenants) l’envoie à la place de la clé API.
Flux de connexion de l’organisation
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();Vous pouvez aussi démarrer déjà authentifié :
ts
const client = new AudactClient({
apiKey: "aud_live_...",
orgToken: "<jwt from a prior login>",
});Un nouveau client : les 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);Développement
bash
npm install npx tsc --noEmit # typecheck npm run build # emit dist/esm + dist/cjs npm run test # vitest