Documentación API
Vista General
La API de Prediqt proporciona acceso programático a mercados de predicción — coloca órdenes, consulta precios, administra posiciones y transmite datos en tiempo real. La liquidación del mercado ocurre on-chain en Polygon; la API maneja el emparejamiento de órdenes off-chain y consultas de datos.
URL Base: https://api.prediqt.com
Una interfaz interactiva de Swagger está disponible en https://api.prediqt.com/api-docs. Documenta cada endpoint, cuerpo de solicitud y esquema de respuesta.
Autenticación
La API soporta tres métodos de autenticación:
Clave API
Crea una clave API desde la página de Configuración en la aplicación. Pásala mediante el header x-api-key:
curl -H "x-api-key: pm_live_your_key_here" \
https://api.prediqt.com/marketsBearer Token (Privy JWT)
Si te autentificas a través de la aplicación web, recibes un Privy JWT. Pásalo mediante el header Authorization:
curl -H "Authorization: Bearer <token>" \
https://api.prediqt.com/ordersFirma EIP-191
Para autenticación basada en billetera sin Privy, firma un mensaje que contenga un timestamp con tu billetera (firma personal EIP-191) y envía tres headers:
x-address— Tu dirección de billeterax-signature— Firma personal EIP-191 de un mensaje que contiene el timestampx-timestamp— Timestamp Unix (debe estar dentro de 5 minutos para protección contra replay)
curl -H "x-address: 0xYourWalletAddress" \
-H "x-signature: 0xSignatureHex" \
-H "x-timestamp: 1700000000" \
https://api.prediqt.com/ordersLos endpoints públicos (lista de mercados, precios, operaciones) no requieren autenticación. Los endpoints autenticados (listar tus órdenes, administrar claves API) requieren uno de los métodos anteriores.
Endpoints REST
Mercados
GET /markets— Listar todos los mercados con filtrado y paginaciónGET /markets/:id— Obtener información detallada del mercadoGET /markets/:id/candles— Datos de velas OHLCV para gráficos de preciosGET /markets/:id/orderbook— Profundidad del libro de órdenes para un mercadoGET /markets/:id/trades— Operaciones recientes de un mercadoGET /markets/:id/activity— Feed de actividad de un mercadoGET /markets/:id/holders— Principales poseedores de un mercado
Órdenes
POST /orders— Enviar una nueva orden firmadaGET /orders— Listar órdenes activas del usuario autenticadoGET /orders/:hash— Obtener detalles de orden por hashDELETE /orders/:hash— Cancelar una orden por su hashPOST /orders/batch— Enviar múltiples órdenes en una sola solicitudDELETE /orders/batch— Cancelar múltiples órdenes por sus hashesDELETE /orders/cancel-all— Cancelar todas las órdenes abiertas del usuario autenticadoDELETE /orders/market/:marketId— Cancelar todas las órdenes abiertas de un mercado específicoGET /orders/nonce/:address— Obtener nonce de firma actual para una direcciónPOST /orders/nonce— Incrementar nonce para cancelar en lote todas las órdenes previas
POST /orders se auto-autentica mediante la firma EIP-712 incluida en el cuerpo de la solicitud — no se necesita clave API ni bearer token para este endpoint. Otros endpoints autenticados (listar tus órdenes, cancelar, administrar claves API) requieren uno de los métodos de autenticación anteriores.
Precios
GET /price— Obtener precio de un token individualGET /prices— Obtener precios de tokens en loteGET /books— Obtener datos del libro de órdenes en loteGET /spread— Obtener spread bid-ask de un tokenGET /midpoint— Obtener precio medio de un tokenGET /tick-size— Obtener el tamaño del tick (incremento mínimo de precio)
Operaciones
GET /trades— Listar operaciones globalmente con filtros y paginación
Auth
POST /auth/api-key— Crear una nueva clave APIGET /auth/api-key— Listar claves API del usuario autenticadoDELETE /auth/api-key/:id— Revocar una clave API
Esto cubre los endpoints principales de trading. Para la referencia completa de la API incluyendo perfiles de usuario, saldos, eventos, clasificación, comentarios y notificaciones, visita la documentación interactiva de Swagger.
WebSocket
Los datos en tiempo real se entregan mediante Socket.IO (no WebSocket puro). Conéctate a la misma URL base que la API REST:
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));Canales
orderbook:{marketId}— Actualizaciones del libro de órdenes (snapshot al suscribirse, luego deltas)trades:{marketId}— Ejecuciones de operaciones de un mercadomarket:{marketId}— Actualizaciones de precio y estado del mercadoprice:{tokenId}— Actualizaciones de precio de tokens individualesuser:{address}— Canal privado para actualizaciones específicas del usuario (requiere autenticación)
Autenticación (WebSocket)
Para suscribirte a canales privados user:, autentícate después de conectar:
// 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..."]);
});Límites de Tasa
Los endpoints de envío de órdenes (POST /orders y POST /orders/batch) tienen límites de tasa estrictos para prevenir abuso. Si alcanzas un límite de tasa recibirás una respuesta 429 Too Many Requests.
Para operaciones de alta frecuencia, usa los endpoints de lote (POST /orders/batch, DELETE /orders/batch) para enviar o cancelar múltiples órdenes en una sola solicitud.
Primeros Pasos
- Crear una cuenta — Regístrate e inicia sesión en la aplicación Prediqt.
- Crear una clave API — Ve a Configuración y genera una clave API. Cópiala inmediatamente; no se mostrará de nuevo.
- Consultar mercados — Lista los mercados disponibles:
curl -H "x-api-key: pm_live_your_key_here" \
https://api.prediqt.com/markets- Verificar precios — Obtén el precio actual de un token:
curl "https://api.prediqt.com/price?tokenId=TOKEN_ID"- Colocar una orden — Envía una orden firmada (las órdenes deben ser firmadas con tu billetera usando EIP-712):
curl -X POST https://api.prediqt.com/orders \
-H "Content-Type: application/json" \
-d '{
"order": { ... },
"signature": "0x..."
}'Nota: POST /orders no requiere clave API ni bearer token — la firma EIP-712 en el cuerpo de la solicitud autentica la orden.
Para los esquemas completos de solicitud y respuesta, consulta la documentación interactiva de Swagger.