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

Bearer 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/orders

Firma 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-addressTu dirección de billetera
  • x-signatureFirma personal EIP-191 de un mensaje que contiene el timestamp
  • x-timestampTimestamp 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/orders

Los 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 /marketsListar todos los mercados con filtrado y paginación
  • GET /markets/:idObtener información detallada del mercado
  • GET /markets/:id/candlesDatos de velas OHLCV para gráficos de precios
  • GET /markets/:id/orderbookProfundidad del libro de órdenes para un mercado
  • GET /markets/:id/tradesOperaciones recientes de un mercado
  • GET /markets/:id/activityFeed de actividad de un mercado
  • GET /markets/:id/holdersPrincipales poseedores de un mercado

Órdenes

  • POST /ordersEnviar una nueva orden firmada
  • GET /ordersListar órdenes activas del usuario autenticado
  • GET /orders/:hashObtener detalles de orden por hash
  • DELETE /orders/:hashCancelar una orden por su hash
  • POST /orders/batchEnviar múltiples órdenes en una sola solicitud
  • DELETE /orders/batchCancelar múltiples órdenes por sus hashes
  • DELETE /orders/cancel-allCancelar todas las órdenes abiertas del usuario autenticado
  • DELETE /orders/market/:marketIdCancelar todas las órdenes abiertas de un mercado específico
  • GET /orders/nonce/:addressObtener nonce de firma actual para una dirección
  • POST /orders/nonceIncrementar 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 /priceObtener precio de un token individual
  • GET /pricesObtener precios de tokens en lote
  • GET /booksObtener datos del libro de órdenes en lote
  • GET /spreadObtener spread bid-ask de un token
  • GET /midpointObtener precio medio de un token
  • GET /tick-sizeObtener el tamaño del tick (incremento mínimo de precio)

Operaciones

  • GET /tradesListar operaciones globalmente con filtros y paginación

Auth

  • POST /auth/api-keyCrear una nueva clave API
  • GET /auth/api-keyListar claves API del usuario autenticado
  • DELETE /auth/api-key/:idRevocar 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 mercado
  • market:{marketId} Actualizaciones de precio y estado del mercado
  • price:{tokenId}Actualizaciones de precio de tokens individuales
  • user:{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

  1. Crear una cuenta — Regístrate e inicia sesión en la aplicación Prediqt.
  2. Crear una clave API — Ve a Configuración y genera una clave API. Cópiala inmediatamente; no se mostrará de nuevo.
  3. Consultar mercados — Lista los mercados disponibles:
curl -H "x-api-key: pm_live_your_key_here" \
  https://api.prediqt.com/markets
  1. Verificar precios — Obtén el precio actual de un token:
curl "https://api.prediqt.com/price?tokenId=TOKEN_ID"
  1. 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.