SafePilot API

Documentação dos endpoints públicos — v1 / v2

https://api.safepilotfx.com
GET /v2/checklicense

Versão recomendada. Valida a licença de um cliente, registra a conta utilizada e a versão do EA que fez a requisição. Retorna campos adicionais em relação à v1: license_id, send_trades_history, trades_history_from, risk_warnings_accepted e risk_warnings_accepted_at.

Parâmetros (query string)

Nome Tipo Obrigatório Descrição
token string sim Token do produto
email string sim E-mail do cliente ou UUID da licença
account string sim Identificador da conta (ex: número da conta MT5)
account_type number sim 0 = Demo · 1 = Contest · 2 = Real
version string sim Versão do EA que está fazendo a requisição (ex: 1.04)

Exemplo de requisição

GET /v2/checklicense?token=ABC123&[email protected]&account=12345&account_type=2&version=1.04

Campos da resposta

Campo Tipo Descrição
valid string "1" = licença válida · "0" = inválida
license_id string UUID da licença — use em chamadas a outros endpoints
version string Versão atual do produto
previous_version string Versão anterior do produto
expiration string Data de expiração da licença no formato YYYY-MM-DD
msg string Mensagem descritiva do resultado
accounts string Contas registradas na licença, separadas por ;
lots_b3 string Lotes permitidos para B3
lots_forex string Lotes permitidos para Forex
send_trades_history string "1" = enviar histórico · "0" = não enviar
trades_history_from string Data/hora do último trade recebido, no formato dd/mm/yyyy hh:mm (BRT). Use como ponto de corte para enviar somente trades novos via /v1/trades.
risk_warnings_accepted string "1" = cliente aceitou os avisos de risco · "0" = não aceitou
risk_warnings_accepted_at string Data/hora do aceite dos avisos de risco no formato dd/mm/yyyy hh:mm:ss (BRT). Vazio se ainda não houve aceite.
db number 1 — indicador interno de que a resposta veio do banco de dados

Exemplo de resposta (licença válida)

{
  "valid": "1",
  "license_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "version": "1.04",
  "previous_version": "1.03",
  "expiration": "2026-12-31",
  "msg": "License is valid",
  "accounts": "12345",
  "lots_b3": "50",
  "lots_forex": "10",
  "send_trades_history": "1",
  "trades_history_from": "20/06/2026 14:32",
  "risk_warnings_accepted": "1",
  "risk_warnings_accepted_at": "15/06/2026 09:45:30",
  "db": 1
}

Exemplo de resposta (licença inválida)

{
  "valid": "0",
  "version": "v2",
  "expiration": "",
  "msg": "License expired",
  "accounts": "",
  "lots_b3": "0",
  "lots_forex": "0",
  "send_trades_history": "0",
  "trades_history_from": "",
  "risk_warnings_accepted": "0",
  "risk_warnings_accepted_at": "",
  "db": 1
}
GET /v1/checklicense

Mantido para retrocompatibilidade. Valida a licença de um cliente e registra a conta utilizada. Para novos EAs, prefira /v2/checklicense.

Parâmetros (query string)

Nome Tipo Descrição
token string Token do produto
email string Email do cliente
account string Identificador da conta (ex: número da conta MT5)
account_type number 0 = Demo · 1 = Contest · 2 = Real

Exemplo de requisição

GET /v1/checklicense?token=ABC123&[email protected]&account=12345&account_type=1

Exemplo de resposta

{
  "licensed": true,
  "lots_forex": 10,
  "lots_b3": 50,
  "message": "License valid"
}
GET /v1/checkversion

Retorna a versão atual e o link de download de um produto.

Parâmetros (query string)

Nome Tipo Descrição
token string Token do produto
source string Abreviação da plataforma (ex: mt5)

Exemplo de requisição

GET /v1/checkversion?token=ABC123&source=mt5

Exemplo de resposta

{
  "version": "1.04",
  "download_url": "https://example.com/download/product-v1.04.ex5",
  "message": "Version found"
}
POST /v1/trades

Recebe um lote de trades fechados enviados pelo EA do MetaTrader. Idempotente por (license_id, account, ticket) — chamadas repetidas com os mesmos tickets não duplicam registros.

Headers

Content-Type: application/json

Body (JSON)

Campo Tipo Descrição
token string Token do produto
email string Email do cliente
account string Identificador da conta (ex: número da conta MT5)
ea_version string? Versão do EA que está enviando (opcional)
trades array Lista de trades fechados (máx. 500 por chamada)

Estrutura de cada trade

Campo Tipo Descrição
ticket number Ticket único do trade
symbol string Símbolo (ex: EURUSD)
side string buy ou sell
volume number Volume em lotes
open_price number Preço de abertura
close_price number Preço de fechamento
profit number Lucro / prejuízo
open_time string ISO 8601 (UTC)
close_time string ISO 8601 (UTC)

Exemplo de requisição

POST /v1/trades
Content-Type: application/json

{
  "token": "ABC123",
  "email": "[email protected]",
  "account": "12345",
  "ea_version": "1.04",
  "trades": [
    {
      "ticket": 1001,
      "symbol": "EURUSD",
      "side": "buy",
      "volume": 0.10,
      "open_price": 1.0850,
      "close_price": 1.0875,
      "profit": 25.00,
      "open_time": "2025-04-15T13:20:00Z",
      "close_time": "2025-04-15T15:45:00Z"
    }
  ]
}

Exemplo de resposta

{
  "inserted": 1,
  "updated": 0,
  "skipped": 0,
  "rejected": 0
}

Observações

• Após processar o lote, last_trade_sent_at da licença avança para o maior close_time recebido. Use o campo trades_history_from retornado por /v2/checklicense para enviar apenas os trades novos na próxima chamada.
• Erros: 400 payload inválido · 401 token/licença inválidos · 405 método não permitido.

POST /v1/risk-terms-accept

Registra o aceite dos termos de risco sem autenticação JWT, seguindo o mesmo padrão de validação do endpoint /v1/trades (token + e-mail + licença). O endpoint marca risk_warnings_accepted como true.

Headers

Content-Type: application/json

Body (JSON)

Campo Tipo Obrigatório Descrição
token string sim Token do produto
email string sim E-mail do cliente da licença
id string sim UUID da licença (license_id)

Exemplo de requisição

POST /v1/risk-terms-accept
Content-Type: application/json

{
  "token": "ABC123",
  "email": "[email protected]",
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Exemplo de resposta

{
  "success": true,
  "license_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "risk_warnings_accepted": true,
  "risk_warnings_accepted_at": "2026-06-20T18:42:10.123Z"
}

Observações

• Validação de segurança: o token precisa estar vinculado ao produto/plano da licença e o email deve pertencer ao cliente da licença enviada.
• Erros: 400 campos obrigatórios ausentes · 401 token/e-mail inválidos · 404 licença não encontrada · 405 método não permitido.