@c15t/node-sdk

中文文档
3.2.2发布于 2026/11/02Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 3.2万

Node.js SDK for the c15t consent API. Check consent before sending email, link users, record consents and publish legal documents from server code.

原始使用文档
文档目录11 节
  1. Key Features
  2. Prerequisites
  3. Installation
  4. Usage
  5. Documentation
  6. Methods
  7. Upgrading from v2
  8. Support
  9. Contributing
  10. Security
  11. License

c15t: the open standard for cookie banners

@c15t/node-sdk: Node.js client for the c15t consent API

Latest NPM Version Stars License Discord Skills Made by Inth

Typed client for hosted and self-hosted c15t backends. Check consent before sending email, link users after sign-in, export a user's consent records, publish legal document releases from CI and read banner experiment results.

c15t is used by 2,100+ sites, including expo.dev, zed.dev, unkey.dev, mintlify.com, and sazabi.com.

Key Features

  • One createC15tClient() call with an explicit backend URL. No environment variables are read
  • Methods resolve to { ok: true, data } or { ok: false, error } and never reject. Error codes are typed per method
  • Key-only methods (consents.check, subjects.list, experiments.summary, legalDocuments.publish) exist only on a client created with an API key
  • Input is validated before anything is sent, and response dates are Date objects
  • Per-attempt timeouts and retries for network errors, timeouts and 408, 429, 500, 502, 503 and 504, honouring Retry-After
  • A typed mock client in @c15t/node-sdk/testing

Prerequisites

Installation

pnpm add @c15t/node-sdk

Usage

  1. Create a client with the URL where the backend is mounted, path included. Pass apiKey for the key-only methods
  2. Call a method and check result.ok before reading result.data, or use unwrap(result) to throw the error instead
// server.ts
import { createC15tClient } from '@c15t/node-sdk';

const apiKey = process.env.C15T_API_KEY;
if (!apiKey) throw new Error('Set C15T_API_KEY');

const c15t = createC15tClient({
  baseUrl: 'https://app.example.com/api/c15t',
  apiKey,
});

const result = await c15t.consents.check({
  externalId: user.id,
  types: ['marketing_communications'],
});

if (result.ok && result.data.results.marketing_communications.hasConsent) {
  await sendNewsletter(user);
} else if (!result.ok) {
  console.error(result.error.code, result.error.requestId);
}

Documentation

See the documentation for guides, API reference, and examples.

Methods

MethodAPI key
consents.check({ externalId, types })Required
subjects.identify(id, { externalId, identityProvider, identityToken })No; verified only with a key or token
subjects.get(id, { types })No
subjects.create(input)No
subjects.list({ externalId })Required
legalDocuments.publish(type, { version, hash, effectiveDate })Required
experiments.summary(id, { from, to, domain })Required
status(), init(), manifest()No

Every method takes { signal, timeoutMs, headers, retry, requestId } as its last argument.

createIdentityToken(user, { signingKey }) is a separate export, not a client method. It signs a token locally for the browser's identify(), takes no call options, and throws a TypeError on invalid input.

Upgrading from v2

c15tClient() and the C15TClient class are replaced by createC15tClient(). Results replace ResponseContext, C15TError is now C15tError, and subjects.patch is now subjects.identify. See the migration guide.

Support

Contributing

Security

Do not open a public issue for a security vulnerability. Report it privately through GitHub's vulnerability reporting. We examine every valid report.

  • Do not share the vulnerability in public forums, issues, or pull requests
  • Give the steps to reproduce it and the versions it affects
  • Give us time to release a fix before you disclose it

License

Apache License 2.0


Built by Inth

版本与发布记录

@c15t/node-sdk 共发布 77 个版本,首次发布于 2025/05/09;过去 12 个月发布了 44 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.2.2latest2026/11/027 天前
3.2.12026/10/319 天前
3.2.02026/10/3010 天前
3.2.0-canary.0canary2026/10/2316 天前
3.1.02026/10/1723 天前
3.1.0-canary.02026/10/1525 天前

其他发布通道:rc → 2.0.0-rc.10,alpha → 3.0.0-alpha.11,canary → 3.2.0-canary.0。

关于 @c15t/node-sdk 的常见问题

@c15t/node-sdk 是什么?

Node.js SDK for the c15t consent API. Check consent before sending email, link users, record consents and publish legal documents from server code.

如何安装 @c15t/node-sdk?

在项目目录运行 npm install @c15t/node-sdk,或使用 pnpm add / yarn add / bun add。

@c15t/node-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@c15t/node-sdk 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@c15t/node-sdk 可以商用吗?

@c15t/node-sdk 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@c15t/node-sdk 的下载量有多少?

根据 npm 官方下载统计,@c15t/node-sdk 在 2026/10/09 – 2026/11/07 这 30 天内被下载 31,784 次,日均约 1,059 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@c15t/node-sdk 还在维护吗?

最新版本 3.2.2 发布于 2026/11/02(7 天前);至今共发布 77 个版本,其中过去 12 个月发布了 44 个;首次发布于 2025/05/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。