Referência da API
Risco
Setup da corretora. setupStatus.issues lista o que falta para ligar, campo a campo, com mensagem pronta para a tela.
Parâmetros de caminho
- externalUserIdstring (1–120)obrigatório
id do cliente no SEU sistema
Query string
- providerIdBINANCE | HYPERLIQUIDobrigatório
corretora
curl -X GET "$FIN_API/v1/users/cli-1001/setup?providerId=BINANCE" \
-u "$FIN_CLIENT_ID:$FIN_CLIENT_SECRET"{
"externalUserId": "cli-1001",
"providerId": "BINANCE",
"mode": "PAPER",
"enabled": false,
"market": "FUTURES",
"leverage": 2,
"marginType": "ISOLATED",
"orderSizeUsd": 5,
"sizingStatus": "AVAILABLE",
"maxConcurrentTrades": 3,
"maxMarginPerTradeUsd": 5,
"allowedSymbols": [],
"allowMemecoins": false,
"autoStopLoss": true,
"autoTakeProfit": true,
"autoBreakEven": true,
"maxAdverseEntryPercent": 0.15,
"quoteCurrency": null,
"capitalBase": null,
"maxLossPerTrade": null,
"entryTimeoutMinutes": null,
"allowedStrategies": [
"FUTURES_MAIN_V1"
],
"setupStatus": {
"status": "SETUP_INCOMPLETE",
"issues": [
{
"code": "CAPITAL_BASE_REQUIRED",
"field": "capitalBase",
"message": "Defina o capital base (valor maior que zero)."
},
{
"code": "MAX_LOSS_REQUIRED",
"field": "maxLossPerTrade",
"message": "Defina a perda máxima por operação (maior que zero)."
},
{
"code": "ENTRY_TIMEOUT_REQUIRED",
"field": "entryTimeoutMinutes",
"message": "Defina o tempo máximo de uma entrada pendente (1–1440 minutos)."
}
]
},
"risk": {
"maxDailyLossUsd": 1.5,
"maxOpenNotionalUsd": 30,
"maxSameDirection": 2,
"haltedToday": false
},
"safety": {
"policyVersion": "2026-10-05.1",
"fingerprint": "849d46a1ab2fbe753c262109c41309716c6813c0d0dd44445070811b5dd2281d",
"required": false,
"acknowledged": true,
"flags": []
},
"apiConfigured": false,
"requestId": "req_muyn0w4r_ss9gkaoj"
}/v1/users/:externalUserId/setup/previewPrévia do setup
NÃO grava nada. Valida contra os limites do contrato e devolve os alertas da combinação (safety.flags) e o fingerprint. Se safety.required for true e acknowledged false, o cliente precisa confirmar os alertas antes de gravar. Funciona antes de conectar a corretora.
Parâmetros de caminho
- externalUserIdstring (1–120)obrigatório
id do cliente no SEU sistema
Corpo (JSON)
- providerIdBINANCE | HYPERLIQUIDobrigatório
corretora
- mode"REAL"obrigatório
PAPER não é oferecido no B2B (PAPER_NOT_GRANTED)
- enabledbooleanobrigatório
liga o setup
- leverageinteiro 1–125obrigatório
alavancagem; limitada pelo contrato
- orderSizeUsdnúmero ≥ 1obrigatório
tamanho por operação
- maxConcurrentTradesinteiro 1–20obrigatório
operações simultâneas; limitada pelo contrato
- maxMarginPerTradeUsdnúmero ≥ 0obrigatório
margem máxima por operação; limitada pelo contrato
- maxDailyLossUsdnúmero ≥ 0obrigatório
perda máxima diária; atingiu → sem novas entradas até o dia seguinte (UTC)
- capitalBasenúmero > 0para ligar
capital base
- maxLossPerTradenúmero > 0para ligar
perda máxima por operação
- entryTimeoutMinutesinteiro 1–1440para ligar
tempo máximo de uma entrada pendente
- marginTypeISOLATED | CROSSEDopcional
tipo de margem
- allowedSymbolsstring[]opcional
ativos permitidos, ex.: ["BTCUSDT"]
- autoStopLoss · autoTakeProfit · autoBreakEvenbooleanopcional
proteções automáticas
- allowMemecoinsbooleanopcional
- maxOpenNotionalUsd · maxSameDirection · maxAdverseEntryPercentnúmeroopcional
limites adicionais
Erros comuns
- 422RISK_ENVELOPE_EXCEEDEDacima do contrato, ex.: "Alavancagem acima do limite do parceiro (50 > 5)."
- 403PAPER_NOT_GRANTEDmode PAPER
curl -X POST "$FIN_API/v1/users/cli-1001/setup/preview" \
-u "$FIN_CLIENT_ID:$FIN_CLIENT_SECRET" \
-H "content-type: application/json" \
-d '{
"providerId": "BINANCE",
"mode": "REAL",
"enabled": true,
"leverage": 3,
"orderSizeUsd": 10,
"maxConcurrentTrades": 1,
"maxMarginPerTradeUsd": 10,
"maxDailyLossUsd": 10,
"capitalBase": 100,
"maxLossPerTrade": 2,
"entryTimeoutMinutes": 30
}'{
"externalUserId": "cli-1001",
"providerId": "BINANCE",
"safety": {
"policyVersion": "2026-10-05.1",
"fingerprint": "18ed74468f4bf6542a7353ea2749cb0ad2f524523c47cc021c16bc740bf70391",
"required": true,
"acknowledged": false,
"flags": []
},
"requestId": "req_muyn0wq4_amphkip7"
}/v1/users/:externalUserId/setupGravar setup
Grava o setup COMPLETO (não é remendo: envie todos os campos). Com alertas exigidos, inclua riskAcknowledgement com o fingerprint da prévia e os códigos de safety.flags. Resposta: o setup gravado (mesmo formato do GET).
Parâmetros de caminho
- externalUserIdstring (1–120)obrigatório
id do cliente no SEU sistema
Corpo (JSON)
- providerIdBINANCE | HYPERLIQUIDobrigatório
corretora
- mode"REAL"obrigatório
PAPER não é oferecido no B2B (PAPER_NOT_GRANTED)
- enabledbooleanobrigatório
liga o setup
- leverageinteiro 1–125obrigatório
alavancagem; limitada pelo contrato
- orderSizeUsdnúmero ≥ 1obrigatório
tamanho por operação
- maxConcurrentTradesinteiro 1–20obrigatório
operações simultâneas; limitada pelo contrato
- maxMarginPerTradeUsdnúmero ≥ 0obrigatório
margem máxima por operação; limitada pelo contrato
- maxDailyLossUsdnúmero ≥ 0obrigatório
perda máxima diária; atingiu → sem novas entradas até o dia seguinte (UTC)
- capitalBasenúmero > 0para ligar
capital base
- maxLossPerTradenúmero > 0para ligar
perda máxima por operação
- entryTimeoutMinutesinteiro 1–1440para ligar
tempo máximo de uma entrada pendente
- marginTypeISOLATED | CROSSEDopcional
tipo de margem
- allowedSymbolsstring[]opcional
ativos permitidos, ex.: ["BTCUSDT"]
- autoStopLoss · autoTakeProfit · autoBreakEvenbooleanopcional
proteções automáticas
- allowMemecoinsbooleanopcional
- maxOpenNotionalUsd · maxSameDirection · maxAdverseEntryPercentnúmeroopcional
limites adicionais
- riskAcknowledgement{ fingerprint, codes[] }condicional
aceite dos alertas da prévia (só no PUT, quando safety.required)
Erros comuns
- 422RISK_ACK_REQUIREDfaltou confirmar os alertas → refaça a prévia e peça a confirmação
- 422API_NOT_CONFIGUREDcorretora ainda não conectada → "Conecte a corretora antes de ativar"
- 422RISK_ENVELOPE_EXCEEDEDacima do limite do contrato (o limite vem na mensagem)
- 400SETUP_INCOMPLETEfaltam campos para ligar → setupStatus.issues
- 403PAPER_NOT_GRANTEDuse mode "REAL"
- 422DAILY_LOSS_HALTtrava diária atingida; volta no dia seguinte (UTC)
curl -X PUT "$FIN_API/v1/users/cli-1001/setup" \
-u "$FIN_CLIENT_ID:$FIN_CLIENT_SECRET" \
-H "Idempotency-Key: put-setup-cli-1001-$(uuidgen)" \
-H "content-type: application/json" \
-d '{
"providerId": "BINANCE",
"mode": "REAL",
"enabled": true,
"leverage": 3,
"orderSizeUsd": 10,
"maxConcurrentTrades": 1,
"maxMarginPerTradeUsd": 10,
"maxDailyLossUsd": 10,
"capitalBase": 100,
"maxLossPerTrade": 2,
"entryTimeoutMinutes": 30,
"riskAcknowledgement": {
"fingerprint": "18ed74468f4bf6542a7353ea2749cb0ad2f524523c47cc021c16bc740bf70391",
"codes": []
}
}'Atualiza só os limites de risco, sem mexer em alavancagem, tamanho ou ligado. Resposta: o setup atualizado.
Parâmetros de caminho
- externalUserIdstring (1–120)obrigatório
id do cliente no SEU sistema
Corpo (JSON)
- providerIdBINANCE | HYPERLIQUIDobrigatório
corretora
- maxConcurrentTradesinteiro 1–20obrigatório
- maxMarginPerTradeUsdnúmero ≥ 0obrigatório
- maxDailyLossUsdnúmero ≥ 0obrigatório
- demais campos opcionais do setup—opcional
capitalBase, maxLossPerTrade, allowedSymbols…
curl -X PUT "$FIN_API/v1/users/cli-1001/risk" \
-u "$FIN_CLIENT_ID:$FIN_CLIENT_SECRET" \
-H "Idempotency-Key: put-risk-cli-1001-$(uuidgen)" \
-H "content-type: application/json" \
-d '{
"providerId": "BINANCE",
"maxConcurrentTrades": 1,
"maxMarginPerTradeUsd": 10,
"maxDailyLossUsd": 10
}'