The Bot Ledger
ES

Inicio / Guías

Guía de la API de Limitless: conecta un bot en 5 pasos

La API de Limitless Exchange para un bot: auth con wallet, mercados, el libro, órdenes firmadas, ejecuciones on-chain en Base y una comisión pagada en tokens.

A world map with a network of connections
Auth
Firma de wallet; las órdenes son mensajes firmados que se liquidan en Base.
Lectura
REST para mercados y libros; las instantáneas del libro llevan los términos del programa de liquidez incluidos.
Trading
Órdenes limitadas firmadas; las ejecuciones son eventos on-chain.
Comisión de taker
Alrededor del 3 por ciento a 50 centavos, bajando a menos del 0,5 por ciento cerca de 1.00, pagada en tokens del resultado. Los makers no pagan nada.
Liquidación
Media de 60 segundos del oráculo; un cierre igual o superior a la apertura resuelve Up.
Geografía
Bloquea Estados Unidos.
Docs
docs.limitless.exchange

Cinco pasos, simplificados. Como con Predict.fun, las rutas exactas cambian; lo que importa es la forma.

  1. Inicia sesión con la wallet

    from eth_account import Account
    from eth_account.messages import encode_defunct
    import requests
    
    BASE = "https://api.limitless.exchange"       # confírmalo en la documentación
    acct = Account.from_key(PRIVATE_KEY)
    nonce = requests.get(f"{BASE}/auth/nonce", params={"address": acct.address}).json()["nonce"]
    sig = acct.sign_message(encode_defunct(text=nonce)).signature.hex()
    token = requests.post(f"{BASE}/auth/login", json={"address": acct.address, "signature": sig}).json()["token"]
    H = {"Authorization": f"Bearer {token}"}
  2. Encuentra la ventana actual

    m = requests.get(f"{BASE}/markets/btc-updown-5m-1757500800", headers=H).json()
    print(m["resolvePrice"], m["metadata"])      # resolvePrice aparece después de la liquidación
  3. Lee el libro

    book = requests.get(f"{BASE}/markets/{m['slug']}/orderbook", headers=H).json()
    best_ask, best_bid = book["asks"][0], book["bids"][0]
    if best_ask[0] - best_bid[0] > 0.08:
        pass                                       # la mayoría de las ventanas tardías no pasan este filtro

    El libro tardío suele tener 20 centavos de ancho. Un filtro de spread que funciona en Polymarket bloquea aquí casi todos los disparos; decide de antemano si aceptas el spread más ancho o te saltas el exchange.

  4. Envía una compra taker

    order = {"market": m["slug"], "outcome": "UP", "side": "BUY", "price": best_ask[0], "size": 30}
    signed = sign_order(order, acct)              # la documentación muestra el formato typed-data
    r = requests.post(f"{BASE}/orders", json=signed, headers=H).json()
  5. Lee las ejecuciones desde la cadena

    Cada ejecución es un evento en Base. Un indexador como HyperSync extrae el historial completo de una wallet en minutos, que además es la forma más barata de auditar a un competidor.

    fills = requests.get(f"{BASE}/fills", params={"address": acct.address}, headers=H).json()

Dos hechos que cambian las cuentas

  • La comisión de compra es un porcentaje del precio, no p(1-p), así que los contratos baratos salen caros de comprar y los caros casi gratis. La calculadora de equilibrio de la página de inicio usa la curva publicada.
  • Los modelos entrenados con precios de ejecución en lugar de asks ejecutables parecían excelentes en validación y perdieron en libros reales. Pon precio al lado down desde el libro de down, nunca como uno menos el ask de up.