npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

cozemy-api

v1.3.9

Published

Official Coze Node.js SDK for seamless AI integration into your applications | 扣子官方 Node.js SDK,助您轻松集成 AI 能力到应用中

Readme

Coze API SDK

npm version npm downloads bundle size License: MIT

English | 简体中文

Coze(或扣子)API 平台的官方 Node.js 和浏览器 SDK。

快速开始

1. 安装

npm install @coze/api
# 或
pnpm install @coze/api

2. 基本用法

import { CozeAPI, COZE_CN_BASE_URL, ChatStatus, RoleType } from '@coze/api';

// 使用个人访问令牌初始化客户端
const client = new CozeAPI({
  token: 'your_pat_token', // 从 https://www.coze.cn/open/oauth/pats 获取你的 PAT
  // 或者
  // token: async () => {
  //   // 如果令牌过期则刷新
  //   return 'your_oauth_token';
  // },
  baseURL: COZE_CN_BASE_URL,
});

// 简单对话示例
async function quickChat() {
  const v = await client.chat.createAndPoll({
    bot_id: 'your_bot_id',
    additional_messages: [{
      role: RoleType.User,
      content: 'Hello!',
      content_type: 'text',
    }],
  });

  if (v.chat.status === ChatStatus.COMPLETED) {
    for (const item of v.messages) {
      console.log('[%s]:[%s]:%s', item.role, item.type, item.content);
    }
    console.log('usage', v.chat.usage);
  }
}

更多示例

| 功能 | 描述 | 示例 | |---------|-------------|----------| | 对话 | 文本对话 | chat.ts | | 对话| 端插件| chat-local-plugin.ts| | 对话 | 对话中使用文件(图片) | chat-with-file.ts | | Bot管理 | 创建和管理Bot | bot.ts | | 数据集 | 文档管理 | datasets.ts | | 工作流 | 执行工作流 | workflow.ts | | 变量 | 变量管理 | variables.ts | | 模板 | 模板管理 | templates.ts | | 用户 | 获取用户信息 | users-me.ts | | 声纹 | 声纹管理 | voiceprint.ts | | 语音 | 语音合成 | voice.ts | | 流式对话(websocket) | 文本、语音对话 | chat.ts | | 语音合成(websocket) | 文本转语音 | speech.ts | | 语音识别(websocket) | 语音转文本 | transcriptions.ts | 查看所有示例 → Websocket 事件 →

主要特性

  • 🌐 完整 API 支持:覆盖所有 Coze 开放平台 API
  • 🔐 多种认证方式:PAT、OAuth、JWT、OAuth PKCE
  • 🔄 流式响应支持:聊天和工作流的实时响应
  • 🔄 Websocket 支持:聊天、语音转文本、文本转语音的实时响应
  • 🌍 跨平台:支持 Node.js(≥14)和现代浏览器
  • ⚙️ 可配置:超时、请求头、信号、调试选项

认证选项

  1. 个人访问令牌(最简单)
const client = new CozeAPI({
  token: 'your_pat_token',
  baseURL: COZE_CN_BASE_URL,
});
  1. 其他认证方式
  • OAuth Web 应用
  • OAuth PKCE
  • JWT
  • 设备码流程

查看认证示例 →

高级用法

流式对话

import { CozeAPI, ChatEventType, RoleType } from '@coze/api';

async function streamChat() {
  const stream = await client.chat.stream({
    bot_id: 'your_bot_id',
    additional_messages: [{
      role: RoleType.User,
      content: 'Hello!',
      content_type: 'text',
    }],
  });

  for await (const part of stream) {
    if (part.event === ChatEventType.CONVERSATION_MESSAGE_DELTA) {
      process.stdout.write(part.data.content); // 实时响应
    }
  }
}

流式对话(Websocket)

import { CozeAPI, RoleType, WebsocketsEventType } from '@coze/api';

async function wsChat() {
  const ws = await client.websockets.chat.create('your_bot_id');

  ws.onopen = () => {
    ws.send({
      id: 'event_id',
      event_type: WebsocketsEventType.CHAT_UPDATE,
      data: {
        chat_config: {
          auto_save_history: true,
          user_id: 'uuid',
          meta_data: {},
          custom_variables: {},
          extra_params: {},
        },
      },
    });

    ws.send({
      id: 'event_id',
      event_type: WebsocketsEventType.CONVERSATION_MESSAGE_CREATE,
      data: {
        role: RoleType.User,
        content: 'tell me a joke',
        content_type: 'text',
      },
    });
  };

  ws.onmessage = (data, event) => {
    if (data.event_type === WebsocketsEventType.ERROR) {
      if (data.data.code === 4100) {
        console.error('Unauthorized Error', data);
      } else if (data.data.code === 4101) {
        console.error('Forbidden Error', data);
      } else {
        console.error('WebSocket error', data);
      }
      ws.close();
      return;
    }

    if (data.event_type === WebsocketsEventType.CONVERSATION_MESSAGE_DELTA) {
      console.log('on message delta', data.data);
    } else if (
      data.event_type === WebsocketsEventType.CONVERSATION_CHAT_COMPLETED
    ) {
      console.log('on chat completed', data.data);
    }
  };

  ws.onerror = error => {
    console.error('WebSocket error', error);
    ws.close();
  };
}

流式对话 SDK

基于Websocket的实时语音对话SDK,如果你使用 Web,推荐使用此 SDK 在线 Demo: https://www.coze.cn/open-platform/realtime/websocket

import { WsChatClient, WsChatEventNames } from '@coze/api/ws-tools';
import { RoleType } from '@coze/api';

try {
  // 初始化
  const client = new WsChatClient({
    botId: 'your_bot_id',
    token: 'your_auth_token',
    voiceId: 'your_voice_id', // 可选
    allowPersonalAccessTokenInBrowser: true, // 可选,默认是 false
    debug: false, // 可选,默认是 false
  });

  await client.connect();
} catch (error) {
  console.error('error', error);
}

// 监听所有事件
client.on(WsChatEventNames.ALL, (eventName: string, event: WsChatEventData) => {
  console.log(event);
});

// 发送用户消息
client.sendMessage({
  id: 'event_id',
  event_type: WebsocketsEventType.CONVERSATION_MESSAGE_CREATE,
  data: {
    role: RoleType.User,
    content: 'Hello World',
    content_type: 'text',
  },
});

// 打断
client.interrupt();

// 断开连接
await client.disconnect();

// 设置音频启用
await client.setAudioEnable(false);

// 设置音频输入设备
await client.setAudioInputDevice('your_device_id');


// 设置播放音量
client.setPlaybackVolume(0);

// 获取播放音量
const volume = client.getPlaybackVolume();

Proxy 示例

const client = new CozeAPI({
  token: '', // use proxy token in server
  baseURL: 'http://localhost:8080/api',
});

查看代理示例 →

语音合成 SDK

在线 Demo: https://www.coze.cn/open-platform/realtime/websocket#speech

import { WebsocketsEventType } from '@coze/api';
import { WsSpeechClient } from '@coze/api/ws-tools';

// 初始化
const client = new WsSpeechClient({
  token: 'your_pat_token',
  allowPersonalAccessTokenInBrowser: true, // optional
});

// 监听所有下行事件(包括error)
client.on('data', data => {
  console.log('[speech] ws data', data);
});

// 或者,监听单个事件
client.on(WebsocketsEventType.ERROR, data => {
  console.error('[speech] ws error', data);
});

// 监听播放完成事件,如果手动调用disconnect,则不会触发此事件
client.on('completed', () => {
  console.log('[speech] playback completed');
});

// 连接
try {
  await client.connect({voiceId: 'your_voice_id'});
  console.log('[speech] ws connect success');
} catch (error) {
  console.error('[speech] ws connect error', error);
  return;
}

// 发送消息并播放
client.appendAndComplete('你好,Coze!');

// 打断
await client.interrupt();


// 暂停语音播放
client.pause();

// 恢复语音播放
client.resume();

// 切换语音播放
client.togglePlay();

// 语音是否播放中
client.isPlaying();

// 断开连接,销毁 websocket
client.disconnect();

// 发送文本片段
client.append('你好,');
client.append(' Coze!');
// 结束发送文本
client.complete();

语音识别 SDK

在线 Demo: https://www.coze.cn/open-platform/realtime/websocket#transcription

import { WsTranscriptionClient } from '@coze/api/ws-tools';
import { WebsocketsEventType } from '@coze/api';
// 初始化
const client = new WsTranscriptionClient({
  token: 'your_pat_token',
  allowPersonalAccessTokenInBrowser: true, // 可选
});

// 监听所有下行事件(包括错误)
client.on(WebsocketsEventType.ALL, data => {
  console.log('[transcription] ws data', data);
});

// 或者,监听单个事件
client.on(WebsocketsEventType.ERROR, data => {
  console.error('[transcription] ws error', data);
});

// 监听语音识别更新结果
client.on(WebsocketsEventType.TRANSCRIPTIONS_MESSAGE_UPDATE, (event) => {
  console.log('[transcription] result', event.data.content);
});

// 开始识别
try {
  await client.start();
} catch (error) {
  console.error('[transcription] error', error);
}

// 停止语音识别
client.stop();


// 暂停语音识别
client.pause();

// 恢复语音识别
client.resume();


// 销毁实例
client.destroy();

开发

# 安装依赖
rush update  # 如果未安装 `rush` 命令,请参见 ../../README.md

# 运行测试
npm run test

尝试示例

Node.js

cd examples/coze-js-node
rush build
COZE_ENV=zh npx tsx ./src/chat.ts

浏览器

cd examples/coze-js-web
rush build
npm run start

文档

详细的 API 文档和指南,请访问: