Prop firm rules API (for AI agents and developers)
Read-only JSON over GET. CORS open. No key needed on the free tier (about 60 requests per minute per IP, best effort). Every response includes a disclaimer field.
The same sourced dataset and math as our drawdown calculator: 9 firms and 13 programs (FTMO, FundedNext, The5ers, E8 Markets, FundingPips, Alpha Capital, Blue Guardian, Topstep, Apex Trader Funding) with daily-loss and max-drawdown rules, reset times, official source links and last-verified dates. The data is the MIT-licensed prop-firm-rules dataset.
Endpoints
| GET | Returns |
|---|---|
/api/v1/firms | Firms and programs with ids, sizes, verification flags, dataset version and last-verified date. |
/api/v1/rules?program=ftmo_2step | Full rule set for one program, plus the firm's copy-trading and automation policy. |
/api/v1/check?program=…&accountSize=…¤tEquity=… | Dollars of room left to the daily loss limit and the max drawdown floor, and whether either is breached. |
/api/v1/openapi.json | OpenAPI 3.1 spec (import it into an agent framework or tool caller). |
/api/v1/check parameters
| Name | Required | Meaning |
|---|---|---|
program | yes | Program id from /api/v1/firms |
accountSize | yes | Nominal size, e.g. 100000 (Topstep and Apex need one of the listed sizes) |
currentEquity | yes | Equity including open P&L |
startingBalance | no | Initial balance (default: accountSize) |
highWaterMark | no | Peak the firm trails from (trailing programs) |
todayPnl | no | P&L since the firm's daily reset, closed + open (default 0) |
currentBalance, dayStartBalance, customDailyLoss | no | Advanced overrides; see the OpenAPI spec |
We compare the lower of balance and equity to each floor (conservative). room can be negative; remaining is never below 0.
Example
curl 'https://floorguard-kappa.vercel.app/api/v1/check?program=ftmo_2step&accountSize=100000¤tEquity=96500&todayPnl=-3000'
{ "ok": true, "apiVersion": "v1",
"result": { "dailyLossRemaining": 2000, "maxDrawdownRemaining": 6500,
"breached": false, "breachedRules": [], "bindingLimit": "daily", "status": "amber", … },
"disclaimer": "Informational only, not financial advice. …" }
Limits, caching and payments
Responses are cached at the edge (rules for up to an hour, checks for a minute). Errors use the same JSON envelope with an error.code (missing_program, unknown_program, invalid_parameters, rate_limited, not_found). The free tier has no key. Paid per-call access over the x402 standard may be added later for heavier use; it is not live, and nothing here asks for a payment today.
Agent discovery: /llms.txt and /.well-known/ai-plugin.json.