Referência da API

Automação

O cliente liga ou pausa a automação por corretora. Um sinal da estratégia só vira ordem se TODOS os portões permitirem: cliente ativo, estratégia e corretora no contrato, setup válido, sem trava diária, cobrança em dia, conexão ok e (Hyperliquid) builder aprovado.
GET/v1/users/:externalUserId/automation

Estado da automação

Por corretora: automação registrada, se novas entradas estão permitidas (newEntries ALLOWED/BLOCKED), o motivo (blockReason) e a garantia de que a manutenção das posições continua.

blockReason mais comuns: CLIENT_SUSPENDED, B2B_ACCESS_SUSPENDED, OBLIGATION_OVERDUE (fatura vencida), SETUP_DISABLED, AUTOMATION_OFF. Mostre ao cliente o porquê.

Parâmetros de caminho

  • externalUserIdstring (1–120)obrigatório

    id do cliente no SEU sistema

Requisição
curl -X GET "$FIN_API/v1/users/cli-1001/automation" \
  -u "$FIN_CLIENT_ID:$FIN_CLIENT_SECRET"
Resposta200
{
  "externalUserId": "cli-1001",
  "tenantId": "TENANT_A",
  "requestId": "req_muyn0wd0_a0igg83c",
  "providers": [
    {
      "providerId": "BINANCE",
      "setupEnabled": false,
      "mode": "PAPER",
      "haltedToday": false,
      "automation": {
        "strategyId": "FUTURES_MAIN_V1",
        "strategyVersion": "1.0.0",
        "enabled": false,
        "risk": {
          "leverage": 3,
          "maxMarginPerTradeUsd": 10,
          "maxConcurrentTrades": 1,
          "maxDailyLossUsd": 10
        },
        "updatedAt": "2026-10-07T15:34:09.570Z"
      },
      "newEntries": "BLOCKED",
      "blockReason": "SETUP_DISABLED",
      "positionMaintenance": "CONTINUES"
    }
  ]
}
PUT/v1/users/:externalUserId/automation

Ligar ou pausar

Tela do clienteIdempotency-Key obrigatórioVer no app modelo: Operação ↗

Corpo SEMPRE completo, inclusive para desligar (risk é obrigatório). Pausar não fecha posições: a proteção delas continua.

Parâmetros de caminho

  • externalUserIdstring (1–120)obrigatório

    id do cliente no SEU sistema

Corpo (JSON)

  • providerIdBINANCE | HYPERLIQUIDobrigatório

    corretora

  • strategyIdstringobrigatório

    estratégia concedida e selecionada

  • enabledbooleanobrigatório

    ligar/pausar

  • riskobjetoobrigatório

    leverage, maxMarginPerTradeUsd, maxConcurrentTrades, maxDailyLossUsd

  • conditionsobjetoopcional

    symbols, tradingWindowUtc { from, to }, minConfidence (0–100)

Erros comuns

  • 400VALIDATION_ERRORfaltou risk: "Requisição inválida em \"risk\"."
  • 403STRATEGY_NOT_GRANTEDestratégia fora do contrato
Requisição
curl -X PUT "$FIN_API/v1/users/cli-1001/automation" \
  -u "$FIN_CLIENT_ID:$FIN_CLIENT_SECRET" \
  -H "Idempotency-Key: put-automation-cli-1001-$(uuidgen)" \
  -H "content-type: application/json" \
  -d '{
    "providerId": "BINANCE",
    "strategyId": "FUTURES_MAIN_V1",
    "enabled": true,
    "risk": {
      "leverage": 3,
      "maxMarginPerTradeUsd": 10,
      "maxConcurrentTrades": 1,
      "maxDailyLossUsd": 10
    }
  }'
Resposta200
{
  "externalUserId": "cli-1001",
  "automation": {
    "providerId": "BINANCE",
    "strategyId": "FUTURES_MAIN_V1",
    "strategyVersion": "1.0.0",
    "enabled": false,
    "risk": {
      "leverage": 3,
      "maxMarginPerTradeUsd": 10,
      "maxConcurrentTrades": 1,
      "maxDailyLossUsd": 10
    },
    "conditions": {},
    "runtime": "DISABLED"
  },
  "requestId": "req_muyn3x3g_a1jannjw"
}