LiveDigital MSE™ API is now availableRead the docs
Official SDKs

Ship in the language your team already writes.

Typed clients for TypeScript, Python, and Java. Every SDK speaks the same unified intelligence schema, retries transient failures, and surfaces request IDs for traceability.

Install

TypeScript / JavaScript

npm
npm install @attunio/sdk

Python 3.9+

pip
pip install attunio

Java 11+

pom.xml
<dependency>  <groupId>com.attunio</groupId>  <artifactId>attunio-java</artifactId>  <version>1.0.0</version></dependency>

Quickstart

The same Digital MSE™ analysis in every language. Pass a previous snapshot and the response explains exactly why the result changed.

analyze.ts
import { Attunio } from "@attunio/sdk" const client = new Attunio({ apiKey: process.env.ATTUNIO_API_KEY! }) const analysis = await client.dmse.analyze({  responseLatencySeconds: 2.6,  speechRateWpm: 182,  sessionDurationSeconds: 1500,  // Pass the prior result to get a change explanation back:  previous: { score: null, status: "within_normal", computedAt: "2026-06-01T09:00:00Z" },}) // Unified schema — identical shape on every intelligence endpointconsole.log(analysis.intelligence.summary.headline)console.log(analysis.intelligence.confidence.level)      // "high" | "moderate" | "low"console.log(analysis.intelligence.dataQuality.completeness) // 01console.log(analysis.intelligence.change?.explanations)  // why it moved

Built for production

One schema, five endpoints

Every SDK returns the unified intelligence block — summary, confidence, data quality, provenance, codes, and change — so code written for one endpoint works on all five.

Automatic retries

Rate limits (429) and transient server errors (5xx) retry automatically with exponential backoff. Configurable per client; validation errors never retry.

Request IDs everywhere

Every response carries a requestId (body + X-Request-Id header). SDK errors surface it directly so support can trace any call in seconds.

Zero heavy dependencies

TypeScript uses native fetch, Python uses the standard library, Java uses java.net.http. Nothing to audit beyond the client itself.

Error handling

Errors are typed and carry the stable error code, the request ID for support, and a docs link. Rate limits and server errors retry automatically before surfacing.

errors.ts
import { Attunio, AttunioError } from "@attunio/sdk" try {  await client.relapse.predict({ assessments })} catch (err) {  if (err instanceof AttunioError) {    console.error(err.code)      // "invalid_request" | "unauthorized" | ...    console.error(err.requestId) // quote this in support tickets    console.error(err.docs)      // deep link to the error reference  }}

Explore every endpoint live.

The interactive explorer runs real requests against all five intelligence endpoints — no key required in demo mode.

Open the API explorer