跳到主要内容

数据 API

覆盖 PumpFun、PumpSwap、Bonk 和 StonkFun(Raydium LaunchLab)、Meteora DBC 与 DAMM v2、Raydium(CPMM/CLMM/AMM v4)以及 Orca Whirlpool 的实时和历史数据。全部免费。每个实时流和 REST 读取完全不需要密钥,没有账号,没有注册。两个 K 线事件 subscribe_ohlcvohlcv_history 需要一个免费密钥,在 Telegram 群里开口即可。

30 秒上手

不需要密钥,连接并订阅:

import { io } from "socket.io-client";
const socket = io("https://sol.shrine.trade");
socket.on("token_update", (u) => console.log(u.pool, u.priceUSD));
socket.emit("subscribe", { mint: "Gc6r…pump" });

既要现在也要过去?历史回放按小时归档每一个流事件,免费。

密钥

这个 API 上没有任何东西收费。只有两个事件要求密钥,而且密钥免费:

加入 Telegram 群开口要一个。其他所有流、GET /metadataGET /sol-price 都不需要密钥。

密钥放在 Socket.IO 握手里:

import { io } from "socket.io-client";
const socket = io("https://sol.shrine.trade", {
auth: { api_key: "sk_…" },
});

不带密钥的连接照常接收其他所有流;在它上面调用任一 K 线事件会返回 api_key_required 的 ack。带了密钥的连接必须是有效密钥:未知或已停用的密钥在握手时就被拒绝。一个密钥可以开任意多条连接。

错误

所有错误都是同样形状的 JSON:

{ "error": "not_found" }
状态码error含义
400mint_or_pool_required缺少必要参数。
401unknown_key / key_disabled握手带的密钥不认识,或已被停用。
404not_found池子/mint 尚未注册。
429rate_limited你的 IP 对同一接口每秒超过 3 次请求。等一秒再试。
503unavailableGET /sol-price 在首个 SOL/USD 报价到来之前(冷启动);稍后重试。

WebSocket 订阅错误以回调 ack 形式返回:{ error: "…", message: "…" }。无密钥连接上的 K 线事件返回 api_key_required;你的地址上另一条连接已经持有的流类型返回 too_many_connections

限制

每条连接的最大并发 Socket.IO 订阅数50
每个 IP 的开放流每种流类型一条:同一地址的第二条连接可以持有其他类型,不能持有已被持有的那种
REST每个 IP 每个接口每秒 3 次请求
OHLCV history limit1 – 500(默认 200)

流类型有 subscribe(价格)、subscribe_tradessubscribe_ohlcvsubscribe_new_tokenssubscribe_migrationssubscribe_sol_pricesubscribe_stream。一条连接在一种类型上关注多个池子没问题;第二条连接请求你的地址已持有的类型会收到 too_many_connections。交易接口共用同一个 REST 上限,超出时返回 rate_limited 并带 Retry-After: 1