Open Portal

REST API

Read your TradeSgnl signals, deliveries, accounts and performance, or send a signal, from any tool that can make an HTTP request.

Overview

Every tool the MCP server offers is also a plain JSON endpoint under https://portal.tradesgnl.com/api/v1/. Use it from a spreadsheet, a WordPress table plugin, a cron job or your own code.

Authenticate with a key from the portal (Profile, API access) as a Bearer token:

curl https://portal.tradesgnl.com/api/v1/signals?limit=20 \
  -H "Authorization: Bearer tsk_YOUR_KEY"

The full list of endpoints, parameters and responses is published as an OpenAPI document at https://portal.tradesgnl.com/openapi/v1.json. Tools like WP Data Tables, Postman or any OpenAPI client can be pointed at that URL directly.

Endpoints

Method and pathWhat it does
GET /api/v1/signalsSignal log, most recent first (symbol, command, limit, date_from, date_to)
GET /api/v1/deliveriesPer-account delivery status (status, limit, date_from, date_to)
GET /api/v1/clientsConnected accounts (include_ea_settings)
GET /api/v1/analyticsBalance and equity per account (client_id)
GET /api/v1/tradesPositions for one account (client_id, limit, date_from, date_to)
GET /api/v1/performancePerformance metrics (client_id)
GET /api/v1/performance/breakdownsBreakdowns by symbol, direction, strategy, day (client_id, breakdown_type, date_from, date_to)
GET /api/v1/backtestsBacktest results (symbol, limit)
GET /api/v1/alertsAlert history (alert_type, limit, date_from, date_to)
GET /api/v1/alerts/preferencesAlert preferences
GET /api/v1/subscriptionYour plan
GET /api/v1/licensesLicence codes
GET /api/v1/presetsSaved signal presets
GET /api/v1/docs/searchSearch this documentation (query)
GET /api/v1/analyst/accountsAccounts the Market Analyst can read prices from
GET /api/v1/analyst/symbolsBroker symbol catalog (client_id, query)
GET /api/v1/analyst/candlesLive candles (client_id, symbol, interval, count)
GET /api/v1/analyst/quoteLive quote (client_id, symbol)
GET /api/v1/analyst/reportRun the Market Analyst (client_id, symbol, style). Spends AI credits
POST /api/v1/signalsSend a trade signal. Needs a key with the trade permission

Query parameters map one to one onto the tool inputs; numbers and booleans are read from the query string. Dates are YYYY-MM-DD.

Sending a signal

curl -X POST https://portal.tradesgnl.com/api/v1/signals \
  -H "Authorization: Bearer tsk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "license_code": "12345",
    "symbol": "EURUSD",
    "action": "buy",
    "volume": { "lots": 0.1 },
    "stop_loss": { "pips": 30 },
    "take_profit": { "pips": 60 },
    "comment": "Strategy1"
  }'

The response carries the exact signal syntax that was sent and a signal_id. Check GET /api/v1/deliveries?signal_id=... afterwards to see whether each account executed it, or read GET /api/v1/signals?include_deliveries=true to get signals and their per-account status in one call.

Add "dry_run": true to the body to validate the order and see the syntax and the accounts it would reach, without sending anything.

List endpoints take limit and offset for paging. Error codes on signals, deliveries and alerts come with an error_message that says what the code means. Each signal carries units (how to read its volume, sl and tp: lots, pips, price, and so on) and params, every parameter exactly as it was sent.

Actions: buy, sell, buystop, buylimit, sellstop, selllimit (pending orders need entry as { "pips": n } or { "price": n }), closebuy, closesell (optionally partial as { "percent": n } or { "lots": n }), closeall, cancellong, cancelshort, and the reversals closelongsell, closeshortbuy, closelongbuy, closeshortsell. Size is { "lots": n }, { "percentBalance": n } or { "percentEquity": n }. Stop loss and take profit take pips, points or price.

Errors and limits

Errors are JSON with an error message and a reason code, and use the usual statuses: 401 for a bad key, 403 when the plan or key does not allow the call, 429 when a rate limit is reached (see the X-RateLimit-Reset header), 402 when AI credits are exhausted.

Limits: 60 calls per minute; POST /api/v1/signals 10 per minute and 200 per day. The API is included from the Advanced plan.

On this page