# node-ts

> TeamSpeak® 3 Server Query client for node.js implemented using TypeScript

Latest version **8.0.12** (published 2026-04-03) · LGPL-3.0 license · 0 weekly downloads

## Install

```sh
npm install node-ts
pnpm add node-ts
yarn add node-ts
bun add node-ts
```

## Health

**Score 65/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 8.0.12 |
| Published | 2026-04-03 |
| First published | 2014-05-12 |
| Weekly downloads | 0 |
| License | LGPL-3.0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=22.0.0 |
| Dependencies | 2 |
| Unpacked size | 66 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 37 |
| Author | Niklas Mollenhauer |
| Maintainers | nikeee |
| Keywords | teamspeak, serverquery, ts3, ts, typescript |

## Links

- npm: https://www.npmjs.com/package/node-ts
- Repository: https://github.com/nikeee/node-ts
- Homepage: https://github.com/nikeee/node-ts#readme
- Issues: https://github.com/nikeee/node-ts/issues
- npm.io page: https://npm.io/package/node-ts

## Dependencies (2)

- [@types/node](https://npm.io/package/@types/node.md) ^25.5.2
- [@rauschma/stringio](https://npm.io/package/@rauschma/stringio.md) ^1.4.0

## Alternatives

- [csv-to-markdown-table](https://npm.io/package/csv-to-markdown-table.md) — 47.0K weekly downloads
- [@sapphire/ratelimits](https://npm.io/package/@sapphire/ratelimits.md) — 4.4K weekly downloads
- [js-csvparser](https://npm.io/package/js-csvparser.md) — 2.0K weekly downloads
- [@adadapted/js-sdk](https://npm.io/package/@adadapted/js-sdk.md) — 251 weekly downloads
- [@grapecity/spread-sheets-sparklines](https://npm.io/package/@grapecity/spread-sheets-sparklines.md) — 103 weekly downloads

## Recent versions

- 8.0.12 (latest) — 2026-04-03
- 8.0.11 — 2026-01-26
- 8.0.10 — 2026-01-07
- 8.0.9 — 2025-11-18
- 8.0.8 — 2025-09-09
- 8.0.7 — 2025-08-15
- 8.0.6 — 2025-06-14
- 8.0.5 — 2025-06-01
- 8.0.4 — 2025-05-20
- 8.0.3 — 2025-05-07
- 8.0.2 — 2025-03-23
- 8.0.1 — 2025-03-06
- 8.0.0 — 2025-02-11
- 7.0.1 — 2025-02-11
- 6.1.3 — 2024-09-23
- … 57 more at https://npm.io/package/node-ts/versions

## README

# node-ts [![Build Status](https://travis-ci.com/nikeee/node-ts.svg?branch=master)](https://travis-ci.com/nikeee/node-ts) [![npm version](https://badge.fury.io/js/node-ts.svg)](http://badge.fury.io/js/node-ts) ![Dependency Status](https://david-dm.org/nikeee/node-ts.svg) ![License](https://img.shields.io/npm/l/node-ts.svg) ![Downloads Per Month](https://img.shields.io/npm/dm/node-ts.svg)

This is a CommonJS module which allows you to connect to any TeamSpeak® 3 server which has the Server Query API enabled. Using the Server Query API, you can do everything a normal TeamSpeak user can do (except sending and receiving voice data) automatically via JavaScript/TypeScript (e. g. listing clients logged in on the server).

The Server Query specification is available [here](http://media.teamspeak.com/ts3_literature/TeamSpeak%203%20Server%20Query%20Manual.pdf). I also created a script to import the complete query API from a TeamSpeak 3 server using the help command. This (json) dump will later be used to auto genrate some stuff. It is available as Gist [here](https://gist.github.com/nikeee/71e71439dd91999a3692).

This is a fork of [gwTumm's node-teamspeak](https://github.com/gwTumm/node-teamspeak) which has been ported from JS to TS.

## Install
```bash
npm install -S node-ts # install package
```

## Example Usage
After registering a Server Query account using your TeamSpeak Client, you can login using node-ts (Alternatively, you can login as the root account "`ServerAdmin`" which is created during the installation of the server). The following code prints out a JSON-array containing all clients that are currently connected to the first virtual server:

```TypeScript
import { TeamSpeakClient } from "node-ts";
// Node.js without ES Modules:
// const { TeamSpeakClient } = require("node-ts");

async function main() {
	const client = new TeamSpeakClient("server.example.com");

	try {
		await client.connect();

		await client.send("use", { sid: 1 });

		const me = await client.send("whoami");
		console.log(me);

		// Log in to use more features
		await client.send("login", {
			client_login_name: "##USERNAME##",
			client_login_password: "##PASSWORD##"
		});

		const clientList = await client.send("clientlist");
		console.log(clientList);

		await client.subscribePrivateTextEvents(); // Tell the server we want to receive private text events

		// Register a callback for these events
		client.on("textmessage", data => {
			console.log(`Message received: ${data.msg}`);
		});

	} catch (err) {
		console.error("An error occurred:")
		console.error(err);
	}
}
main();
```

## Usage information

* TeamSpeakClient.send is the main method that executes a command. An array with options and an object with parameters can be passed to the send-function. The function returns a `Promise`. See the TypeScript file for more information.
* Every TeamSpeakClient instance is an `EventEmitter`. You can install listeners to the `"close"` and `"error"` event. The error-event will only be fired if there was socket-error, not if a sent command failed.
* If you want to register to notifications sent by the TeamSpeak-Server, you can send a normal command `servernotifyregister` (consider specification). Any event sent by the server that starts with `"notify"` is then fired as an event (e. g. as soon as a `notifyclientmove` notification is sent by the server, the TeamSpeakClient-instance fires the `"clientmove"` event with only one parameter which is an object containing the given parameters).

---
_Source: https://npm.io/package/node-ts · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
