> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ai-coustics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Node.js API reference

> Complete reference for the released Node.js SDK, including methods, parameters, errors and ownership.

**Version:** `@ai-coustics/aic-sdk` 0.24.0, Core SDK 0.24.0. The package supports Node.js 18 and later. Source: [released declarations](https://github.com/ai-coustics/aic-sdk-node/blob/6bc27a00ebbf4027a65482058c8fa0632053f206/index.d.ts) and [wrapper implementation](https://github.com/ai-coustics/aic-sdk-node/tree/6bc27a00ebbf4027a65482058c8fa0632053f206/src). Start with the [Node.js quickstart](/reference/sdk/language-bindings/nodejs) for installation and a complete WAV integration.

The package is CommonJS with TypeScript declarations. Signature blocks below describe class members; they are not standalone programs. Example blocks have a filename and can be saved as `.cjs` files. This release has no public `FileAnalyzer`, `Collector` or `ProcessorConfig` class. Analysis collection is part of `Analyzer`; audio settings are arguments to `initialize`.

## Choose an API

| Task                                       | Reference                                                                 | Ownership and execution                                                    |
| ------------------------------------------ | ------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| Download/load a model and inspect versions | [Models and configuration](/reference/sdk/api/node/models-and-config)     | Model weights are shared; downloaded files are separate from live handles. |
| Enhance audio on the calling thread        | [Processor](/reference/sdk/api/node/enhancement#node-processor)           | Mutates the caller's mono `Float32Array` in place.                         |
| Enhance through the worker pool            | [ProcessorAsync](/reference/sdk/api/node/enhancement#node-processorasync) | Copies input before queuing and returns a new enhanced array.              |
| Detect speech                              | [Vad and VadAsync](/reference/sdk/api/node/vad)                           | Input is preserved. The async call returns a copy of the original samples. |
| Inspect a retained audio window            | [Analyzer and AnalysisResult](/reference/sdk/api/node/analysis)           | Buffer synchronously; run analysis synchronously or on a worker.           |
| Recover from a failure                     | [Errors](/reference/sdk/api/node/errors)                                  | Plain JavaScript errors; native async work rejects promises.               |

## Audio and lifecycle

Pass mono, normalized 32-bit floating-point samples, nominally -1 to 1, in `Float32Array`. Each initialized stream has a sample rate and block length. Fixed blocks must match exactly; variable mode permits shorter blocks, never larger ones. Preserve stream order and state. Use one processor, VAD or analyzer per independent stream, while sharing a compatible `Model` where useful.

Async methods use Node's shared libuv pool, not a private thread per object. They share capacity with other pool work. Set `UV_THREADPOOL_SIZE` before Node starts only when measurements justify it. `AIC_NUM_THREADS` does not configure these bindings. Async constructors, context methods, collection and disposal remain synchronous. Do not infer that every method on an async class is safe for an audio callback.

Await pending operations before calling `dispose()` in `finally`. Disposal is idempotent but cannot be reversed. `terminateSession()` is a session-lifecycle request, not disposal or a flush. Contexts retain control state independently; after the owner is destroyed, they cannot operate a live stream. The `withConfig()` result shares the original instance rather than making a copy. Model mappings stay alive while any dependent instance retains them.

## Complete symbol index

All application-facing exports, constructors, methods, interface fields and enum values are listed below. `_setSdkId` is a shipped internal export and is explicitly marked reserved.

| Symbol                                                                                                                | Domain            |
| --------------------------------------------------------------------------------------------------------------------- | ----------------- |
| [`_setSdkId`](/reference/sdk/api/node/errors#node-_setsdkid)                                                          | errors (reserved) |
| [`AnalysisResult`](/reference/sdk/api/node/analysis#node-analysisresult)                                              | analysis          |
| [`AnalysisResult.codecDegradation`](/reference/sdk/api/node/analysis#node-analysisresult-codecdegradation)            | analysis          |
| [`AnalysisResult.interferingSpeech`](/reference/sdk/api/node/analysis#node-analysisresult-interferingspeech)          | analysis          |
| [`AnalysisResult.noise`](/reference/sdk/api/node/analysis#node-analysisresult-noise)                                  | analysis          |
| [`AnalysisResult.packetLoss`](/reference/sdk/api/node/analysis#node-analysisresult-packetloss)                        | analysis          |
| [`AnalysisResult.riskScore`](/reference/sdk/api/node/analysis#node-analysisresult-riskscore)                          | analysis          |
| [`AnalysisResult.speakerLoudness`](/reference/sdk/api/node/analysis#node-analysisresult-speakerloudness)              | analysis          |
| [`AnalysisResult.speakerReverb`](/reference/sdk/api/node/analysis#node-analysisresult-speakerreverb)                  | analysis          |
| [`Analyzer`](/reference/sdk/api/node/analysis#node-analyzer)                                                          | analysis          |
| [`Analyzer.analyze`](/reference/sdk/api/node/analysis#node-analyzer-analyze)                                          | analysis          |
| [`Analyzer.analyzeAsync`](/reference/sdk/api/node/analysis#node-analyzer-analyzeasync)                                | analysis          |
| [`Analyzer.buffer`](/reference/sdk/api/node/analysis#node-analyzer-buffer)                                            | analysis          |
| [`Analyzer.constructor`](/reference/sdk/api/node/analysis#node-analyzer-constructor)                                  | analysis          |
| [`Analyzer.dispose`](/reference/sdk/api/node/analysis#node-analyzer-dispose)                                          | analysis          |
| [`Analyzer.initialize`](/reference/sdk/api/node/analysis#node-analyzer-initialize)                                    | analysis          |
| [`Analyzer.reset`](/reference/sdk/api/node/analysis#node-analyzer-reset)                                              | analysis          |
| [`Analyzer.terminateSession`](/reference/sdk/api/node/analysis#node-analyzer-terminatesession)                        | analysis          |
| [`Analyzer.updateBearerToken`](/reference/sdk/api/node/analysis#node-analyzer-updatebearertoken)                      | analysis          |
| [`getCompatibleModelVersion`](/reference/sdk/api/node/models-and-config#node-getcompatiblemodelversion)               | models and config |
| [`getVersion`](/reference/sdk/api/node/models-and-config#node-getversion)                                             | models and config |
| [`Model`](/reference/sdk/api/node/models-and-config#node-model)                                                       | models and config |
| [`Model.dispose`](/reference/sdk/api/node/models-and-config#node-model-dispose)                                       | models and config |
| [`Model.download`](/reference/sdk/api/node/models-and-config#node-model-download)                                     | models and config |
| [`Model.fromFile`](/reference/sdk/api/node/models-and-config#node-model-fromfile)                                     | models and config |
| [`Model.getId`](/reference/sdk/api/node/models-and-config#node-model-getid)                                           | models and config |
| [`Model.getOptimalBlockSize`](/reference/sdk/api/node/models-and-config#node-model-getoptimalblocksize)               | models and config |
| [`Model.getOptimalSampleRate`](/reference/sdk/api/node/models-and-config#node-model-getoptimalsamplerate)             | models and config |
| [`OtelConfig`](/reference/sdk/api/node/models-and-config#node-otelconfig)                                             | models and config |
| [`OtelConfig.enable`](/reference/sdk/api/node/models-and-config#node-otelconfig-enable)                               | models and config |
| [`OtelConfig.exportIntervalMs`](/reference/sdk/api/node/models-and-config#node-otelconfig-exportintervalms)           | models and config |
| [`OtelConfig.sessionId`](/reference/sdk/api/node/models-and-config#node-otelconfig-sessionid)                         | models and config |
| [`Processor`](/reference/sdk/api/node/enhancement#node-processor)                                                     | enhancement       |
| [`Processor.constructor`](/reference/sdk/api/node/enhancement#node-processor-constructor)                             | enhancement       |
| [`Processor.dispose`](/reference/sdk/api/node/enhancement#node-processor-dispose)                                     | enhancement       |
| [`Processor.getContext`](/reference/sdk/api/node/enhancement#node-processor-getcontext)                               | enhancement       |
| [`Processor.initialize`](/reference/sdk/api/node/enhancement#node-processor-initialize)                               | enhancement       |
| [`Processor.process`](/reference/sdk/api/node/enhancement#node-processor-process)                                     | enhancement       |
| [`Processor.terminateSession`](/reference/sdk/api/node/enhancement#node-processor-terminatesession)                   | enhancement       |
| [`ProcessorAsync`](/reference/sdk/api/node/enhancement#node-processorasync)                                           | enhancement       |
| [`ProcessorAsync.constructor`](/reference/sdk/api/node/enhancement#node-processorasync-constructor)                   | enhancement       |
| [`ProcessorAsync.dispose`](/reference/sdk/api/node/enhancement#node-processorasync-dispose)                           | enhancement       |
| [`ProcessorAsync.getContext`](/reference/sdk/api/node/enhancement#node-processorasync-getcontext)                     | enhancement       |
| [`ProcessorAsync.initialize`](/reference/sdk/api/node/enhancement#node-processorasync-initialize)                     | enhancement       |
| [`ProcessorAsync.process`](/reference/sdk/api/node/enhancement#node-processorasync-process)                           | enhancement       |
| [`ProcessorAsync.terminateSession`](/reference/sdk/api/node/enhancement#node-processorasync-terminatesession)         | enhancement       |
| [`ProcessorAsync.withConfig`](/reference/sdk/api/node/enhancement#node-processorasync-withconfig)                     | enhancement       |
| [`ProcessorContext`](/reference/sdk/api/node/enhancement#node-processorcontext)                                       | enhancement       |
| [`ProcessorContext.getAudioDelay`](/reference/sdk/api/node/enhancement#node-processorcontext-getaudiodelay)           | enhancement       |
| [`ProcessorContext.getParameter`](/reference/sdk/api/node/enhancement#node-processorcontext-getparameter)             | enhancement       |
| [`ProcessorContext.reset`](/reference/sdk/api/node/enhancement#node-processorcontext-reset)                           | enhancement       |
| [`ProcessorContext.setParameter`](/reference/sdk/api/node/enhancement#node-processorcontext-setparameter)             | enhancement       |
| [`ProcessorContext.updateBearerToken`](/reference/sdk/api/node/enhancement#node-processorcontext-updatebearertoken)   | enhancement       |
| [`ProcessorParameter`](/reference/sdk/api/node/enhancement#node-processorparameter)                                   | enhancement       |
| [`ProcessorParameter.Bypass`](/reference/sdk/api/node/enhancement#node-processorparameter-bypass)                     | enhancement       |
| [`ProcessorParameter.EnhancementLevel`](/reference/sdk/api/node/enhancement#node-processorparameter-enhancementlevel) | enhancement       |
| [`Vad`](/reference/sdk/api/node/vad#node-vad)                                                                         | vad               |
| [`Vad.constructor`](/reference/sdk/api/node/vad#node-vad-constructor)                                                 | vad               |
| [`Vad.dispose`](/reference/sdk/api/node/vad#node-vad-dispose)                                                         | vad               |
| [`Vad.getContext`](/reference/sdk/api/node/vad#node-vad-getcontext)                                                   | vad               |
| [`Vad.initialize`](/reference/sdk/api/node/vad#node-vad-initialize)                                                   | vad               |
| [`Vad.process`](/reference/sdk/api/node/vad#node-vad-process)                                                         | vad               |
| [`Vad.terminateSession`](/reference/sdk/api/node/vad#node-vad-terminatesession)                                       | vad               |
| [`VadAsync`](/reference/sdk/api/node/vad#node-vadasync)                                                               | vad               |
| [`VadAsync.constructor`](/reference/sdk/api/node/vad#node-vadasync-constructor)                                       | vad               |
| [`VadAsync.dispose`](/reference/sdk/api/node/vad#node-vadasync-dispose)                                               | vad               |
| [`VadAsync.getContext`](/reference/sdk/api/node/vad#node-vadasync-getcontext)                                         | vad               |
| [`VadAsync.initialize`](/reference/sdk/api/node/vad#node-vadasync-initialize)                                         | vad               |
| [`VadAsync.process`](/reference/sdk/api/node/vad#node-vadasync-process)                                               | vad               |
| [`VadAsync.terminateSession`](/reference/sdk/api/node/vad#node-vadasync-terminatesession)                             | vad               |
| [`VadAsync.withConfig`](/reference/sdk/api/node/vad#node-vadasync-withconfig)                                         | vad               |
| [`VadContext`](/reference/sdk/api/node/vad#node-vadcontext)                                                           | vad               |
| [`VadContext.getParameter`](/reference/sdk/api/node/vad#node-vadcontext-getparameter)                                 | vad               |
| [`VadContext.getPredictionDelay`](/reference/sdk/api/node/vad#node-vadcontext-getpredictiondelay)                     | vad               |
| [`VadContext.getRawVadProbability`](/reference/sdk/api/node/vad#node-vadcontext-getrawvadprobability)                 | vad               |
| [`VadContext.isSpeechDetected`](/reference/sdk/api/node/vad#node-vadcontext-isspeechdetected)                         | vad               |
| [`VadContext.reset`](/reference/sdk/api/node/vad#node-vadcontext-reset)                                               | vad               |
| [`VadContext.setParameter`](/reference/sdk/api/node/vad#node-vadcontext-setparameter)                                 | vad               |
| [`VadContext.updateBearerToken`](/reference/sdk/api/node/vad#node-vadcontext-updatebearertoken)                       | vad               |
| [`VadParameter`](/reference/sdk/api/node/vad#node-vadparameter)                                                       | vad               |
| [`VadParameter.MinimumSpeechDuration`](/reference/sdk/api/node/vad#node-vadparameter-minimumspeechduration)           | vad               |
| [`VadParameter.Sensitivity`](/reference/sdk/api/node/vad#node-vadparameter-sensitivity)                               | vad               |
| [`VadParameter.SpeechHoldDuration`](/reference/sdk/api/node/vad#node-vadparameter-speechholdduration)                 | vad               |

## Related

[Node.js quickstart](/reference/sdk/language-bindings/nodejs) · [Model catalog](/reference/sdk/models) · [Compatibility matrix](/reference/sdk/compatibility-matrix) · [Authentication](/models/get-started/authenticate-apps).
