安装 SDK 与 CLI
JavaScript、Python、Go SDK 与 Indiana CLI 的安装方式、运行环境和第一次请求。
API v1更新于
选择客户端
所有客户端使用同一个 HTTP 协议 0.6,并默认请求生产 API https://api.tinker.cash。服务端 SDK 持有 Server Key,只能运行在可信后端;浏览器和 App 使用后端签发的 Customer Token。
可安装的客户端| 客户端 | 包 | 版本 | 运行环境 | 覆盖范围 |
|---|
| JavaScript / TypeScript | @tinkerlandai/indiana-sdk (npm) | 0.6.2 | Node.js 22+ 后端、浏览器 | 全部服务端与浏览器能力:Customer、权益、余额、支付、优惠、Feature、Funnel、Paywall、页面实验与界面渲染 |
| Python | tinkerlandai-indiana-sdk(import indiana) | 0.6.1 | Python 3.11+ | 服务端:Customer、持有、权益检查、用量上报;同步与异步客户端 |
| Go | tinker.cash/sdk/go | v0.6.0 | Go 1.23+ | 服务端:与 Python 相同的七项操作;可并发复用的客户端 |
| Indiana CLI | indiana | 0.3.8 | Node.js 22+ | Console 管理操作、文档校验、代码引用扫描 |
| Swift / Kotlin | 未公开发行 | — | iOS 16+ / Android API 23+ | 原生购买与 Funnel 宿主;见 iOS 与 Android 一页 |
可安装的客户端
JavaScript / TypeScript
- 包
@tinkerlandai/indiana-sdk (npm)- 版本
- 0.6.2
- 运行环境
- Node.js 22+ 后端、浏览器
- 覆盖范围
- 全部服务端与浏览器能力:Customer、权益、余额、支付、优惠、Feature、Funnel、Paywall、页面实验与界面渲染
Python
- 包
tinkerlandai-indiana-sdk(import indiana)- 版本
- 0.6.1
- 运行环境
- Python 3.11+
- 覆盖范围
- 服务端:Customer、持有、权益检查、用量上报;同步与异步客户端
Go
- 包
tinker.cash/sdk/go- 版本
- v0.6.0
- 运行环境
- Go 1.23+
- 覆盖范围
- 服务端:与 Python 相同的七项操作;可并发复用的客户端
Indiana CLI
- 包
indiana- 版本
- 0.3.8
- 运行环境
- Node.js 22+
- 覆盖范围
- Console 管理操作、文档校验、代码引用扫描
Swift / Kotlin
- 包
- 未公开发行
- 版本
- —
- 运行环境
- iOS 16+ / Android API 23+
- 覆盖范围
- 原生购买与 Funnel 宿主;见 iOS 与 Android 一页
Python 与 Go 目前覆盖 Customer、持有、权益检查与用量上报。其他服务端操作(会话、支付、优惠、Funnel 等)使用 JavaScript SDK 或直接调用 HTTP API;它们使用同样的请求头、凭据与错误格式。
JavaScript / TypeScript
固定安装已发布版本 0.6.2。npm 的 latest 标签可能指向更早的版本,生产项目请使用精确版本。
1npm install --save-exact @tinkerlandai/indiana-sdk@0.6.2
入口| 导入路径 | 运行位置 | 用途 |
|---|
@tinkerlandai/indiana-sdk/server | 可信后端 | Server Key 客户端、会话签发、Funnel 启动与决策、Paywall 启动、AI 用量 |
@tinkerlandai/indiana-sdk | 浏览器 | Customer Token 客户端、Feature、Funnel 与 Paywall 展示 |
@tinkerlandai/indiana-sdk/page | 浏览器 | 匿名 URL 跳转实验 |
@tinkerlandai/indiana-sdk/visual | 浏览器 | 匿名可视化实验 |
@tinkerlandai/indiana-sdk/popup | 浏览器 | 独立渲染、清洗和预览界面 |
@tinkerlandai/indiana-sdk/native-shell | WebView | 原生 App 内的 Funnel 外壳资源 |
@tinkerlandai/indiana-sdk/openrouter | 可信后端 | OpenRouter 用量计费;需另装 @openrouter/sdk |
入口
@tinkerlandai/indiana-sdk/server
- 运行位置
- 可信后端
- 用途
- Server Key 客户端、会话签发、Funnel 启动与决策、Paywall 启动、AI 用量
@tinkerlandai/indiana-sdk
- 运行位置
- 浏览器
- 用途
- Customer Token 客户端、Feature、Funnel 与 Paywall 展示
@tinkerlandai/indiana-sdk/page
- 运行位置
- 浏览器
- 用途
- 匿名 URL 跳转实验
@tinkerlandai/indiana-sdk/visual
- 运行位置
- 浏览器
- 用途
- 匿名可视化实验
@tinkerlandai/indiana-sdk/popup
- 运行位置
- 浏览器
- 用途
- 独立渲染、清洗和预览界面
@tinkerlandai/indiana-sdk/native-shell
- 运行位置
- WebView
- 用途
- 原生 App 内的 Funnel 外壳资源
@tinkerlandai/indiana-sdk/openrouter
- 运行位置
- 可信后端
- 用途
- OpenRouter 用量计费;需另装
@openrouter/sdk
包内置类型声明,支持 ESM 打包工具与 Node.js 22+。浏览器端通过 Vite、Next.js、webpack 等打包工具引入;不要在浏览器代码中导入 /server。
Python
Python SDK 由 tinker.cash 直接分发,不在 PyPI 上。发行包名是 tinkerlandai-indiana-sdk,导入名是 indiana。其余依赖照常从你配置的 Python 包索引安装。
1python -m pip install "https://tinker.cash/downloads/python/tinkerlandai_indiana_sdk-0.6.1-py3-none-any.whl"
https://tinker.cash/sdk/python 列出每个版本的 wheel 和源码包及其 SHA-256。安装后核对版本:
1python -c "import indiana; print(indiana.__version__, indiana.PROTOCOL_VERSION)"
Go
模块路径是 tinker.cash/sdk/go。使用 Go 默认的模块代理与校验和数据库即可安装,无需仓库访问权限。
1go get tinker.cash/sdk/go@v0.6.0
1import indiana "tinker.cash/sdk/go"
如果组织设置了 GOPROXY=direct,Go 会通过 https://tinker.cash/sdk/go?go-get=1 找到同一个模块下载地址。核对版本:go list -m tinker.cash/sdk/go。
Indiana CLI
CLI 需要 Node.js 22+。macOS 与 Linux 用 curl 安装:下载对应平台的完整包并校验 SHA-256,不需要 npm 或 sudo。
1curl -fsSL https://tinker.cash/install.sh | sh2export PATH="$HOME/.local/bin:$PATH"3indiana --version
Windows 或希望使用 npm 时,从网站安装同一版本:
1npm install -g https://tinker.cash/downloads/cli/0.3.8/indiana-cli-0.3.8.tgz
之后用 indiana update 原地升级;配置与登录凭据会保留。
iOS 与 Android
Swift 与 Kotlin SDK 目前没有公开的 Swift Package 或 Maven 发行渠道。需要接入原生购买或 Funnel 宿主时请联系我们;网页内容可以先通过 JavaScript SDK 和 WebView 接入。
第一次请求
在 Console 创建一把具有 customers:write 的 Sandbox Server Key,把下面的变量放进后端被 Git 忽略的 .env,然后选择一种语言运行。成功时返回 Customer UUID;重复运行返回同一个 Customer,created 为 false。
1INDIANA_API_URL=https://api.tinker.cash2INDIANA_API_KEY=<SERVER_KEY>3INDIANA_PROJECT_ID=<APP_UUID>
first-request.tsTypeScript 1import { createIndianaServer } from "@tinkerlandai/indiana-sdk/server";2 3const indiana = createIndianaServer({4 baseUrl: process.env.INDIANA_API_URL!,5 apiKey: process.env.INDIANA_API_KEY!,6 scope: { projectId: process.env.INDIANA_PROJECT_ID!, environment: "sandbox" },7});8 9async function main() {10 const { customer, created } = await indiana.getOrCreateCustomer({11 externalUserId: "user-42",12 });13 console.log(customer.id, created);14}15 16main().catch((error) => {17 console.error(error);18 process.exitCode = 1;19});
- 401:Key 不完整、已过期或已撤销。403:Key 缺少
customers:write,或 App UUID、环境与 Key 不一致。Server Key 请求不能带浏览器 Origin。 - 400
UNSUPPORTED_PROTOCOL_VERSION:手写 HTTP 时补上 X-Indiana-Protocol 请求头;SDK 会自动发送。
相关:创建 Server Key·环境说明·客户与会话