@codex-data/sdk

中文文档
2.6.3发布于 2026/11/10MITTypeScriptESM + CJS构建来源已验证近 30 天下载 20.6万

JavaScript/Typescript的代码SDK. 它提供了生成的类型和方便的方法来访问图克l api.

中文使用文档
文档目录28 节
  1. 安装
  2. 快速启动
  3. 获取托肯价格
  4. 获取 OHLCV 图表数据
  5. 发现和过滤键
  6. 获取钱包余额
  7. 获取托肯控件
  8. 获取托肯贸易历史
  9. 流出实时价格
  10. 流出实时 OHLCV 栏
  11. 流活贸易
  12. 边际订阅
  13. 自定义查询: 只请求您需要的字段
  14. 备选案文1: sdk.send() - 快速,零设置
  15. 备选案文2:图表QL 代码生成器——准确类型和自动完成
  16. 通用网络标识
  17. ID 格式公约
  18. 所有可用方法
  19. 查询( E) sdk.queries.* (中文(简体) )
  20. 订阅 sdk.subscriptions.* (b) —— 付费计划 所需经费
  21. 变化( sdk.mutations.* (中文(简体) )
  22. 配置
  23. 实例
  24. 捐款
  25. 释放
  26. 升级到 v2
  27. 链接
  28. 许可证

代码 SDK

类型脚本 SDK 代码 API ——实时区块链数据,信使价格,OHLCV图表,钱包余额,以及持有者对包括埃特鲁姆,索拉纳,基地,Arbitrum,BNB,和多边形在内的80+网络的60M+信使的解析.

Codex是Coinbase,TradingView,Uniswap,Rainbow,FOMO,Farcaster等数以百计的团队使用的GraphQL API.

安装

npm install @codex-data/sdk
yarn add @codex-data/sdk
pnpm add @codex-data/sdk

快速启动

import { Codex } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const networks = await sdk.queries.getNetworks({});
console.log(networks.getNetworks); // [{ id: 1, name: "ethereum" }, { id: 1399811149, name: "solana" }, ...]

提示 : 内置 sdk.queries.* 请求方法 每个 可用字段。 他们很擅长探索API,但是我们推荐制作 写入自定义查询 只选择您需要的字段.

获取托肯价格

获得任何代币的当前美元价格。 每个请求最多支持25个令牌. 在所有有效集合中,价格都按流动性加权.

import { Codex } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const prices = await sdk.queries.getTokenPrices({
  inputs: [
    {
      address: "So11111111111111111111111111111111111111112",
      networkId: 1399811149,
    }, // SOL
    { address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", networkId: 1 }, // WETH
  ],
});

prices.getTokenPrices?.forEach((price) => {
  console.log(`${price?.address}: $${price?.priceUsd}`);
});

为了获得历史代价,通过一个 timestamp数字 :

const historicalPrice = await sdk.queries.getTokenPrices({
  inputs: [
    {
      address: "So11111111111111111111111111111111111111112",
      networkId: 1399811149,
      timestamp: 1704067200, // Unix timestamp
    },
  ],
});

获取 OHLCV 图表数据

获取烛台数据 用于任何标志或交易对等。 支持从1秒到7天的决议.

import { Codex } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const bars = await sdk.queries.getBars({
  symbol: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2:1", // WETH on Ethereum
  from: 1704067200,
  to: 1704153600,
  resolution: "60", // 1-hour candles
  removeEmptyBars: true,
});

bars.getBars?.o?.forEach((open, i) => {
  console.log({
    open,
    high: bars.getBars?.h?.[i],
    low: bars.getBars?.l?.[i],
    close: bars.getBars?.c?.[i],
    volume: bars.getBars?.volume?.[i],
    timestamp: bars.getBars?.t?.[i],
  });
});

现有决议: 1S, (中文(简体) ), 5S, (中文(简体) ), 15S, (中文(简体) ), 30S, (中文(简体) ), 1, (中文(简体) ), 5, (中文(简体) ), 15, (中文(简体) ), 30, (中文(简体) ), 60, (中文(简体) ), 240, (中文(简体) ), 720, (中文(简体) ), 1D, (中文(简体) ), 7D

发现和过滤键

按价格,量,市场上限,流动性,持有者计数,交易活动等进行搜索和过滤的代币.

import {
  Codex,
  TokenRankingAttribute,
  RankingDirection,
} from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const result = await sdk.queries.filterTokens({
  filters: {
    network: [1], // Ethereum
    liquidity: { gte: "100000" }, // $100k+ liquidity
    marketCap: { gte: "1000000" }, // $1M+ market cap
    txnCount24: { gte: "500" }, // 500+ transactions in 24h
  },
  rankings: [
    {
      attribute: TokenRankingAttribute.TrendingScore24,
      direction: RankingDirection.Desc,
    },
  ],
  limit: 20,
});

result.filterTokens?.results?.forEach((token) => {
  console.log(
    `${token?.token?.name} (${token?.token?.symbol}): $${token?.priceUSD}`,
  );
});

获取钱包余额

获取带有美元值的钱包地址的所有符号余额 .

import { Codex } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const balances = await sdk.queries.balances({
  input: {
    walletAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", // vitalik.eth
    networks: [1],
    includeNative: true,
    removeScams: true,
    limit: 50,
  },
});

balances.balances?.items?.forEach((item) => {
  console.log(
    `${item?.token?.symbol}: ${item?.shiftedBalance} ($${item?.balanceUsd})`,
  );
});

获取托肯控件

获取持有特定符号的钱包列表, 按余额排序 .

import { Codex } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const holders = await sdk.queries.holders({
  input: {
    tokenId: "So11111111111111111111111111111111111111112:1399811149", // SOL
    limit: 50,
  },
});

console.log(`Total holders: ${holders.holders?.count}`);
console.log(`Top 10 hold: ${holders.holders?.top10HoldersPercent}%`);

holders.holders?.items?.forEach((holder) => {
  console.log(
    `${holder?.address}: ${holder?.shiftedBalance} ($${holder?.balanceUsd})`,
  );
});

获取托肯贸易历史

买入 卖出 薄荷 烧掉任何物品.

import { Codex } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const events = await sdk.queries.getTokenEvents({
  query: {
    address: "So11111111111111111111111111111111111111112",
    networkId: 1399811149,
    eventDisplayType: ["Buy", "Sell"],
  },
  limit: 25,
});

events.getTokenEvents?.items?.forEach((event) => {
  console.log(
    `${event?.eventDisplayType} by ${event?.maker} — $${event?.token0SwapValueUsd}`,
  );
});

流出实时价格

说明: WebSocket 订阅需要一个 付费计划。 。 。 .

通过WebSocket订阅直播价格更新. 每一次连锁互换都会起火.

import { Codex } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const unsubscribe = sdk.subscriptions.onPriceUpdated(
  {
    address: "So11111111111111111111111111111111111111112",
    networkId: 1399811149,
  },
  {
    next: (result) => {
      console.log("Price:", result.data?.onPriceUpdated?.priceUsd);
    },
    error: (err) => console.error(err),
    complete: () => console.log("Stream ended"),
  },
);

// Call unsubscribe() to clean up

流出实时 OHLCV 栏

说明: WebSocket 订阅需要一个 付费计划。 。 。 .

在所有决议同时获得烛台实时更新.

import { Codex, QuoteToken } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const unsubscribe = sdk.subscriptions.onBarsUpdated(
  {
    pairId: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640:1", // USDC/WETH on Ethereum
    quoteToken: QuoteToken.Token1,
  },
  {
    next: (result) => {
      const bar = result.data?.onBarsUpdated;
      const oneMin = bar?.aggregates?.r1?.usd;
      console.log(
        `1min candle — O: ${oneMin?.o} H: ${oneMin?.h} L: ${oneMin?.l} C: ${oneMin?.c}`,
      );
    },
    error: (err) => console.error(err),
    complete: () => console.log("Stream ended"),
  },
);

流活贸易

说明: WebSocket 订阅需要一个 付费计划。 。 。 .

观看任何交易对面发生的买卖事件.

import { Codex, QuoteToken } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const unsubscribe = sdk.subscriptions.onEventsCreated(
  {
    id: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640:1",
    quoteToken: QuoteToken.Token0,
  },
  {
    next: (result) => {
      result.data?.onEventsCreated?.events?.forEach((event) => {
        console.log(
          `${event?.eventDisplayType} by ${event?.maker} — $${event?.token0SwapValueUsd}`,
        );
      });
    },
    error: (err) => console.error(err),
    complete: () => console.log("Stream ended"),
  },
);

边际订阅

过 { useEdge: true } 作为生成的订阅方法的第三个参数(或 sdk.subscribe)使用区域边缘节点。 索拉纳(签名)1399811149至 wss://fra.edge.codex.io/graphql;罗宾链(4663) 和BNB(英语:56路径到 wss://iad.edge.codex.io/graphql 内 us-east-1。每个端点按需创建连接并重新使用.

import { Codex, EventCommitmentLevel } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const unsubscribe = sdk.subscriptions.onTokenEventsCreated(
  {
    input: { tokenAddress: "0x...", networkId: 56 },
    commitmentLevel: [EventCommitmentLevel.Processed],
  },
  {
    next: (result) => console.log(result.data),
    error: (err) => console.error(err),
    complete: () => console.log("Stream ended"),
  },
  { useEdge: true },
);

边缘支持 onEventsCreated, (中文(简体) ), onTokenEventsCreated, (中文(简体) ), onBarsUpdated,以及 onTokenBarsUpdated承诺水平必须包括: Processed,以及 onBarsUpdated 需要明确 quoteToken。每个订阅必须针对一个支持的链条。 无订阅 useEdge 使用主端点.

轻而易举 withEdge 助手从 @codex-data/sdk/edge 使用相同的路由. 对于一个独立的罗宾汉或BNB连接,通过 url: ROBINHOOD_EDGE_URL 或者说 url: BNB_EDGE_URL 改为 createEdgeClient从 @codex-data/sdk/edge. SDK's 。 apiEdgeUrl 和助手的 edgeUrl 覆盖所有链的路由 .

自定义查询: 只请求您需要的字段

内置 sdk.queries.* 方法选择每个可用的字段,所以上面的食谱是最昂贵的调用每个端点的方法. 写自己的查询意味着你得到更小,更快的答复.

有两种方法:

备选案文1: sdk.send() - 快速,零设置

自行写入查询并描述结果类型 :

import { Codex } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const result = await sdk.send<{
  getNetworks: Array<{ id: number; name: string }>;
}>(
  `query GetNetworks {
    getNetworks { id name }
  }`,
  {},
);

console.log("Networks:", result.getNetworks);

与其手写类型,不如重新使用 SDK 的导出查询类型 DeepPartial,使每个字段都可以选择:

import { Codex, DeepPartial, FilterTokensQuery } from "@codex-data/sdk";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const result = await sdk.send<DeepPartial<FilterTokensQuery>>(
  `query FilterTokens($limit: Int) {
    filterTokens(limit: $limit) {
      results {
        priceUSD
        volume24
        token { name symbol }
      }
    }
  }`,
  { limit: 10 },
);

备选案文2:图表QL 代码生成器——准确类型和自动完成

对于生产代码库,我们建议从你自己的查询中生成类型. SDK号在 @codex-data/sdk/schema.graphql,所以代码源运行离线 与你安装的精确计划版本.

安装编码工具 :

npm install -D @graphql-codegen/cli @graphql-codegen/client-preset

添加一个 codegen.ts 转到您的工程根 :

import type { CodegenConfig } from "@graphql-codegen/cli";

const config: CodegenConfig = {
  schema: "./node_modules/@codex-data/sdk/schema.graphql",
  documents: "src/**/*.ts",
  generates: {
    "src/gql/": {
      preset: "client",
      presetConfig: { fragmentMasking: false },
    },
  },
};

export default config;

运行 graphql-codegen,然后用生成的查询写入 graphql() 帮手,把他们交给 sdk.query()。结果类型是从您选择的字段中推断出来的 :

import { Codex } from "@codex-data/sdk";
import { graphql } from "./gql";

const sdk = new Codex(process.env.CODEX_API_KEY!);

const trendingTokens = graphql(`
  query TrendingTokens($limit: Int) {
    filterTokens(limit: $limit) {
      results {
        priceUSD
        volume24
        token {
          name
          symbol
        }
      }
    }
  }
`);

const result = await sdk.query(trendingTokens, { limit: 10 });
// result.filterTokens.results[0].priceUSD — fully typed, only what you asked for

见 代码示例 用于一个完整的工作项目.

通用网络标识

网络身份证
以利亚1
英国银行56
多边形137
坐标42161
基础8453
雪崩43114
索拉纳1399811149

使用 sdk.queries.getNetworks({}) 为80+支持的网络的完整列表.

ID 格式公约

Codex API 中的ID 遵循模式 address:networkId数字 :

  • 脚本标识 : 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2:1 (WETH on Ethereum) (在伊特鲁姆)
  • 标对 : 0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640:1 (美国航天中心/Ethereum上的WETH)
  • 钱包标识 : 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045:1

所有可用方法

查询( E)sdk.queries.*(中文(简体) )

方法说明
filterTokens按价格、数量、市场上限、流动性进行搜索和过滤
getTokenPrices获得最多25个令牌的当前或历史美元价格
getBars获取 OHLCV 烛台数据进行交易
holders获得按余额排序的指针持有人列表( Y)已支付(中文(简体) )
filterPairs搜索和过滤交易对
balances获取带有美元值的钱包令牌余额( E)已支付(中文(简体) )
getTokenEvents买入/卖出/装入/烧出交易活动
pairMetadata获取交易对数统计和元数据
token获取单个符的元数据
listPairsWithMetadataForToken包含完整元数据的列表配对
getTokenEventsForMaker获取特定钱包的交易事件
getDetailedPairStats给一对人打个详细的数据
listPairsForToken列出所有交易对表示符
tokenTopTraders找顶级交易员代币
tokens获取多个符号的元数据
top10HoldersPercent获取前十名钱包持有的百分比
getDetailedPairsStats获得多个对的详细统计数据
filterTokenWallets获得每册交易统计数据(利润/损失、买卖计数)(已支付(中文(简体) )
liquidityMetadata获得流动资金池元数据(已支付(中文(简体) )
tokenSparklines获取令牌的闪光价格数据
filterWallets通过交易统计过滤钱包( E)已支付(中文(简体) )
detailedWalletStats获取全面的钱包分析( E)已支付(中文(简体) )
getExchanges获取 DEX 信息
getNetworks列出所有80+支持的网络
getTokenBars获取 OHLCV 数据, 以获得所有对的符号
chartUrls获取预发的图表图像 URL(已支付(中文(简体) )
walletChart获取钱包组合图表数据( E)已支付(中文(简体) )
filterExchanges过滤分散交换器
liquidityLocks获取流动性锁信息( E)已支付(中文(简体) )
getNetworkConfigs获取网络配置细节
getNetworkStats获取网络统计
getNetworkStatus获取网络同步状态
tokenLifecycleEvents获取符号创建和迁移事件
blocks按数字或时间戳获取块数据

订阅sdk.subscriptions.*(b) —— 付费计划 所需经费

方法说明
onPairMetadataUpdated实时对接数据库更新
onLaunchpadTokenEventBatch挂载发射板事件
onBarsUpdated交易对的实时 OHLCV 条
onPriceUpdated单一代号的实时价格
onHoldersUpdated活体持有人数和平衡变化
onDetailedStatsUpdated实时详细数据更新
onDetailedTokenStatsUpdated实时详细指数数据汇总跨池
onEventsCreated直播买卖一对事件
onPricesUpdated多个令牌的实时价格
onUnconfirmedEventsCreated未确认的(混合)贸易活动
onTokenEventsCreated所有游泳池的现场活动
onLaunchpadTokenEvent个人发射板活动(Pump.fun等)
onTokenBarsUpdated实时 OHLCV 标记栏
onLatestPairUpdated新交易配对创建活动
onUnconfirmedBarsUpdated未确认的栏更新
onEventsCreatedByMaker特定钱包的直播事件
onBalanceUpdated实时钱包余额更新
onTokenLifecycleEventsCreated接续生命周期事件
onLatestTokens新符号创建事件
onNftEventsCreatedNFT贸易活动

变化(sdk.mutations.*(中文(简体) )

方法说明
createWebhooks创建 Webhook 提醒( R)已支付(中文(简体) )
deleteWebhooks删除 Webhook 提醒(已支付(中文(简体) )
backfillWalletAggregates触发钱包数据回填( E)已支付(中文(简体) )
createApiTokens创建短寿命 API 令牌供客户端使用( S)已支付(中文(简体) )
deleteApiToken删除一个 API 令牌(已支付(中文(简体) )
refreshBalances刷新钱包余额

配置

import { Codex } from "@codex-data/sdk";

const sdk = new Codex("YOUR_API_KEY", {
  apiUrl: "https://graph.codex.io/graphql", // default
  apiRealtimeUrl: "wss://graph.codex.io/graphql", // default
  ws: true, // enable WebSocket (default: true)
});

// Update config at runtime
sdk.updateConfig({ ws: false });

// Clean up WebSocket connection
sdk.dispose();

实例

见 实例 完整工作项目的目录 :

  • 简单 基本查询、过滤和订阅
  • 代码 —— 使用 GraphQL 代码生成器进行完全输入自定义查询
  • 下一个.js ——全网应用

捐款

我们欢迎捐款! 请随意提交拉力请求.

pnpm install    # Install dependencies
pnpm run build  # Build the SDK
pnpm run test   # Run tests
pnpm run lint   # Lint the codebase

释放

在树枝上,做你的改变,然后:

  • pnpm run build
  • 变动 package.json 相应版本
  • 合并到主机
  • 创建 github 发布,其标签与版本相同 package.json

升级到 v2

见 更新(md) 用于从v1到v2的迁移指令.

许可证

麻省理工学院

版本与发布记录

@codex-data/sdk 共发布 121 个版本,首次发布于 2024/08/28;过去 12 个月发布了 74 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.6.3latest2026/11/10今天
2.6.22026/11/10今天
2.5.242026/11/10今天
2.5.212026/11/073 天前
2.5.182026/11/055 天前
2.5.152026/11/037 天前

关于 @codex-data/sdk 的常见问题

@codex-data/sdk 是什么?

JavaScript/Typescript的代码SDK. 它提供了生成的类型和方便的方法来访问图克l api.

如何安装 @codex-data/sdk?

在项目目录运行 npm install @codex-data/sdk,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:graphql(^16.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@codex-data/sdk 支持 TypeScript 吗?

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

@codex-data/sdk 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@codex-data/sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=17.5.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@codex-data/sdk 可以商用吗?

@codex-data/sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@codex-data/sdk 的下载量有多少?

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

@codex-data/sdk 还在维护吗?

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