API 文档
概述
Prediqt API 提供对预测市场的编程访问——下单、查询价格、管理仓位和实时数据流。所有市场结算在 Polygon 链上进行;API 负责链下订单撮合和数据查询。
基础 URL: https://api.prediqt.com
交互式 Swagger UI 可在 https://api.prediqt.com/api-docs 访问。它记录了每个端点、请求体和响应结构。
身份验证
API 支持三种身份验证方式:
API 密钥
在应用的设置页面创建 API 密钥。通过 x-api-key 请求头传递:
curl -H "x-api-key: pm_live_your_key_here" \
https://api.prediqt.com/marketsBearer Token (Privy JWT)
如果您通过网页应用进行身份验证,会收到一个 Privy JWT。通过 Authorization 请求头传递:
curl -H "Authorization: Bearer <token>" \
https://api.prediqt.com/ordersEIP-191 签名
对于不使用 Privy 的钱包身份验证,使用您的钱包对包含时间戳的消息进行签名(EIP-191 个人签名),然后发送三个请求头:
x-address— 您的钱包地址x-signature— 包含时间戳的消息的 EIP-191 个人签名x-timestamp— Unix 时间戳(必须在5分钟内以防重放攻击)
curl -H "x-address: 0xYourWalletAddress" \
-H "x-signature: 0xSignatureHex" \
-H "x-timestamp: 1700000000" \
https://api.prediqt.com/orders公开端点(市场列表、价格、交易记录)无需身份验证。需要身份验证的端点(查看订单、管理 API 密钥)需使用上述方法之一。
REST 端点
市场
GET /markets— 列出所有市场,支持筛选和分页GET /markets/:id— 获取市场详细信息GET /markets/:id/candles— 价格图表的 OHLCV K线数据GET /markets/:id/orderbook— 市场的订单簿深度GET /markets/:id/trades— 市场的最近交易GET /markets/:id/activity— 市场的活动动态GET /markets/:id/holders— 市场的头部持有者
订单
POST /orders— 提交新的签名订单GET /orders— 列出已认证用户的活跃订单GET /orders/:hash— 按哈希获取订单详情DELETE /orders/:hash— 按哈希取消订单POST /orders/batch— 在单个请求中提交多个订单DELETE /orders/batch— 按哈希批量取消多个订单DELETE /orders/cancel-all— 取消已认证用户的所有未成交订单DELETE /orders/market/:marketId— 取消特定市场的所有未成交订单GET /orders/nonce/:address— 获取地址的当前签名随机数POST /orders/nonce— 递增随机数以批量取消所有先前订单
POST /orders 通过订单体中嵌入的 EIP-712 签名进行自认证——该端点无需 API 密钥或 Bearer Token。其他需认证的端点(查看订单、取消订单、管理 API 密钥)需使用上述认证方法之一。
价格
GET /price— 获取单个代币价格GET /prices— 批量获取代币价格GET /books— 批量获取订单簿数据GET /spread— 获取代币的买卖价差GET /midpoint— 获取代币的中间价格GET /tick-size— 获取最小价格变动单位
交易
GET /trades— 列出全局交易,支持筛选和分页
认证
POST /auth/api-key— 创建新的 API 密钥GET /auth/api-key— 列出已认证用户的 API 密钥DELETE /auth/api-key/:id— 撤销 API 密钥
以上涵盖了核心交易端点。如需完整的 API 参考(包括用户资料、余额、事件、排行榜、评论和通知),请访问交互式 Swagger 文档。
WebSocket
实时数据通过 Socket.IO(非原始 WebSocket)传输。连接到与 REST API 相同的基础 URL:
import { io } from "socket.io-client";
const socket = io("https://api.prediqt.com");
// Subscribe to channels
socket.emit("subscribe", ["orderbook:market-id", "trades:market-id"]);
// Listen for updates
socket.on("orderbook", (data) => console.log(data));
socket.on("trade", (data) => console.log(data));频道
orderbook:{marketId}— 订单簿更新(订阅时快照,之后为增量更新)trades:{marketId}— 市场的交易成交记录market:{marketId}— 市场价格和状态更新price:{tokenId}— 单个代币价格更新user:{address}— 用于用户专属更新的私有频道(需要身份验证)
身份验证 (WebSocket)
要订阅私有 user: 频道,请在连接后进行身份验证:
// EIP-191 signature auth
socket.emit("authenticate", {
address: "0x...",
signature: "0x...",
timestamp: Date.now(),
});
// Or Privy token auth
socket.emit("authenticate", { token: "privy-jwt-token" });
socket.on("authenticated", (data) => {
// Now you can subscribe to user channels
socket.emit("subscribe", ["user:0x..."]);
});速率限制
订单提交端点(POST /orders 和 POST /orders/batch)有严格的速率限制以防止滥用。如果达到速率限制,您将收到 429 Too Many Requests 响应。
对于高频操作,请使用批量端点(POST /orders/batch、DELETE /orders/batch)在单个请求中提交或取消多个订单。
快速入门
- 创建账户——注册并登录 Prediqt 应用。
- 创建 API 密钥——前往设置页面生成 API 密钥。请立即复制,之后将不再显示。
- 获取市场——列出可用市场:
curl -H "x-api-key: pm_live_your_key_here" \
https://api.prediqt.com/markets- 查看价格——获取代币的当前价格:
curl "https://api.prediqt.com/price?tokenId=TOKEN_ID"- 下单——提交签名订单(订单必须使用 EIP-712 通过您的钱包签名):
curl -X POST https://api.prediqt.com/orders \
-H "Content-Type: application/json" \
-d '{
"order": { ... },
"signature": "0x..."
}'注意:POST /orders 不需要 API 密钥或 Bearer Token——请求体中的 EIP-712 签名用于验证订单。
如需完整的请求和响应结构,请参阅交互式 Swagger 文档。