Developer API

Score any track record programmatically and embed an honest Wembro verdict in your own product — backtesters, prop dashboards, journals, bots.

Endpoint

POST https://wembro.com/api/v1/score · authenticate with Authorization: Bearer <your key>

Request

curl -X POST https://wembro.com/api/v1/score \
  -H "Authorization: Bearer wk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"data": "1.2,-0.8,2.1,-1.4,0.9,...", "nTrials": 50}'

Body: data (per-trade returns / P&L as a string — comma, space or newline separated; CSV also accepted), nTrials (integer ≥ 1 — strategy variations you tried), optional label.

Response

{
  "id": "ab12cd34ef",
  "edgeScore": 57,
  "band": "FRAGILE",
  "verdict": "There may be a real edge — but it's thin and not yet proven.",
  "confidence": "medium",
  "metrics": {
    "nTrades": 240, "sharpe": 0.31, "winRate": 0.58,
    "deflatedSharpeProb": 0.57, "beatsLuckPercentile": 0.93,
    "minTrackRecordLength": 210, "profitFactor": 1.34, "maxDrawdown": 0.12
  },
  "riskOfRuin": { "probability": 0.02, "threshold": 0.5, "medianMaxDrawdown": 0.09 },
  "reportUrl": "https://wembro.com/r/ab12cd34ef",
  "verifyUrl": "https://wembro.com/verify/ab12cd34ef",
  "signature": "…",
  "disclaimer": "Hypothetical, impersonal statistical analysis…"
}
5,000
requests / key / month
JSON
no HTML, dev-friendly
Signed
every result is verifiable

Rate-limit headers X-RateLimit-Limit / X-RateLimit-Remaining are returned on every call. 401 = bad key, 429 = monthly cap reached.

Screening endpoint (for firms & marketplaces)

POST https://wembro.com/api/v1/screen · same Bearer auth. Returns a pass/reject against your thresholds plus a single-account abuse fingerprint — for vetting applicants, sellers, or managers at volume.

Request

curl -X POST https://wembro.com/api/v1/screen \
  -H "Authorization: Bearer wk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"data": "1.2,-0.8,2.1,...", "nTrials": 1,
       "thresholds": {"minScore": 60, "maxRuinP95": 0.5, "minTrades": 30}}'

Body: data, nTrials (required), optional trialCorrelation and thresholds (minScore, maxRuinP95, minTrades).

Response

{
  "pass": false,
  "edgeScore": 41,
  "band": "FRAGILE",
  "nTrades": 180,
  "ruinP95": 0.6100,
  "fingerprint": {
    "abuseRisk": "elevated",
    "signals": ["post-loss position-size escalation (martingale/grid signature)"],
    "topTradeSharePct": 46.2, "giniConcentration": 0.58, "runsClusteringZ": 2.4
  },
  "scope": "Single-account screen: detects single-account abuse … not cross-account collusion.",
  "failedChecks": ["Edge Score 41 below minimum 60.", "95th-pct drawdown 61% exceeds limit 50%."],
  "persisted": false,
  "disclaimer": "Hypothetical, impersonal statistical analysis…"
}

Privacy: the applicant's record is scored and returned but not persisted — no public report URL is created for third-party data (persisted: false). The fingerprint sees one ledger, so it flags single-account abuse, not cross-account collusion.

Your API keys

Loading…

Developer plan: 5,000 requests / key / month. Keys are anonymous to this browser until accounts + billing go live.
Outputs are hypothetical, impersonal statistical analysis — not investment advice, no guarantee of future results. Developer plan from $99/mo; billing goes live with the launch integrations.