The Bot Ledger
PT

Início / Guias

Guia da API da Limitless: Conecte um Bot em 5 Passos

API da Limitless Exchange para um bot: autenticação por carteira, mercados, o livro, ordens assinadas, execuções on-chain na Base e uma taxa paga em tokens.

A world map with a network of connections
Autenticação
Assinatura de carteira; as ordens são mensagens assinadas que liquidam na Base.
Leitura
REST para mercados e livros; os snapshots do livro trazem os termos do programa de liquidez inline.
Operação
Ordens limitadas assinadas; as execuções são eventos on-chain.
Taxa de taker
Cerca de 3 por cento a 50 centavos, caindo para menos de 0,5 por cento perto de 1.00, paga em tokens do resultado. Makers não pagam nada.
Liquidação
Média de 60 segundos do oráculo; fechamento igual ou acima da abertura resolve como Up.
Geografia
Bloqueia os EUA.
Docs
docs.limitless.exchange

Cinco passos, simplificados. Como na Predict.fun, os caminhos exatos mudam; o que importa é o formato.

  1. Entre com a carteira

    from eth_account import Account
    from eth_account.messages import encode_defunct
    import requests
    
    BASE = "https://api.limitless.exchange"       # confirme na documentação
    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. Encontre a janela atual

    m = requests.get(f"{BASE}/markets/btc-updown-5m-1757500800", headers=H).json()
    print(m["resolvePrice"], m["metadata"])      # resolvePrice aparece após a liquidação
  3. Leia o livro

    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                                       # a maioria das janelas tardias falha neste filtro

    O livro tardio costuma ter 20 centavos de largura. Um filtro de spread que funciona na Polymarket bloqueia quase todo disparo aqui; decida de antemão se aceita o spread mais largo ou se pula a exchange.

  4. Envie uma compra taker

    order = {"market": m["slug"], "outcome": "UP", "side": "BUY", "price": best_ask[0], "size": 30}
    signed = sign_order(order, acct)              # a documentação mostra o layout dos typed data
    r = requests.post(f"{BASE}/orders", json=signed, headers=H).json()
  5. Leia as execuções da chain

    Cada execução é um evento na Base. Um indexador como o HyperSync puxa o histórico completo de uma carteira em minutos, o que também é a forma mais barata de auditar um concorrente.

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

Dois fatos que mudam a conta

  • A taxa de compra é uma porcentagem do preço, não p(1-p), então contratos baratos são caros de comprar e contratos caros saem quase de graça. A calculadora de equilíbrio na página inicial usa a curva publicada.
  • Modelos treinados em preços de execução em vez de asks executáveis pareciam excelentes na validação e perderam em livros reais. Precifique o lado down pelo livro de down, nunca como um menos o ask de up.