Documentação dos endpoints públicos — v1 / v2
https://api.safepilotfx.com
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.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| token | string | sim | Token do produto |
| 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)
|
GET /v2/checklicense?token=ABC123&[email protected]&account=12345&account_type=2&version=1.04
| 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
|
{
"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
}
{
"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
}
Mantido para retrocompatibilidade. Valida a licença de um
cliente e registra a conta utilizada. Para novos EAs, prefira
/v2/checklicense.
| Nome | Tipo | Descrição |
|---|---|---|
| token | string | Token do produto |
| string | Email do cliente | |
| account | string | Identificador da conta (ex: número da conta MT5) |
| account_type | number |
0 = Demo · 1 = Contest ·
2 = Real
|
GET /v1/checklicense?token=ABC123&[email protected]&account=12345&account_type=1
{
"licensed": true,
"lots_forex": 10,
"lots_b3": 50,
"message": "License valid"
}
Retorna a versão atual e o link de download de um produto.
| Nome | Tipo | Descrição |
|---|---|---|
| token | string | Token do produto |
| source | string | Abreviação da plataforma (ex: mt5) |
GET /v1/checkversion?token=ABC123&source=mt5
{
"version": "1.04",
"download_url": "https://example.com/download/product-v1.04.ex5",
"message": "Version found"
}
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.
Content-Type: application/json
| Campo | Tipo | Descrição |
|---|---|---|
| token | string | Token do produto |
| 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) |
| 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) |
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"
}
]
}
{
"inserted": 1,
"updated": 0,
"skipped": 0,
"rejected": 0
}
• 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.
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.
Content-Type: application/json
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| token | string | sim | Token do produto |
| string | sim | E-mail do cliente da licença | |
| id | string | sim | UUID da licença (license_id) |
POST /v1/risk-terms-accept
Content-Type: application/json
{
"token": "ABC123",
"email": "[email protected]",
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
{
"success": true,
"license_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"risk_warnings_accepted": true,
"risk_warnings_accepted_at": "2026-06-20T18:42:10.123Z"
}
• 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.