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/markets

Bearer Token (Privy JWT)

如果您通过网页应用进行身份验证,会收到一个 Privy JWT。通过 Authorization 请求头传递:

curl -H "Authorization: Bearer <token>" \
  https://api.prediqt.com/orders

EIP-191 签名

对于不使用 Privy 的钱包身份验证,使用您的钱包对包含时间戳的消息进行签名(EIP-191 个人签名),然后发送三个请求头:

  • x-address您的钱包地址
  • x-signature包含时间戳的消息的 EIP-191 个人签名
  • x-timestampUnix 时间戳(必须在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)在单个请求中提交或取消多个订单。

快速入门

  1. 创建账户——注册并登录 Prediqt 应用。
  2. 创建 API 密钥——前往设置页面生成 API 密钥。请立即复制,之后将不再显示。
  3. 获取市场——列出可用市场:
curl -H "x-api-key: pm_live_your_key_here" \
  https://api.prediqt.com/markets
  1. 查看价格——获取代币的当前价格:
curl "https://api.prediqt.com/price?tokenId=TOKEN_ID"
  1. 下单——提交签名订单(订单必须使用 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 文档