INSTITUTIONAL API v1 · stable

Execution analytics for crypto desks

EnsoTrade holds every reachable crypto venue's order book at once, live; prices what an order will actually cost before it is sent; and keeps all of those books for 90 days so any fill can be replayed against exactly what the market was showing at that second.

What this is

Two things a desk cannot get from an exchange, in one API.

Before the order: the cost of the trade you are about to place — priced across every venue at your actual clip size, including the USD→stablecoin conversion nobody else puts in TCA.

After the fill: the book you traded into. An exchange will not rebuild it for you, and it is gone the second the order fills. EnsoTrade persists every priced response and replays it byte-for-byte on request, which turns the price in your report from an assertion into something you can evidence.

16
venues held simultaneously
90 days
point-in-time retention
1000
book levels per side
0
fitted models on execution endpoints

Quickstart

The market-state endpoints need no key at all. This works right now, from any terminal:

curl https://www.ensotrade.tech/v1/explain/BTC

Returns a structured read of why the coin is moving, plus a sentence you can quote:

{
  "question": "Why is BTC up?",
  "signals": {
    "price": 71344.4,
    "change_24h_pct": 3.3,
    "regime": "SHORT_COVERING",
    "mechanism": "short covering — price is rising while positions close,
                  a structurally weaker rally",
    "funding_rate_8h_pct": 0.0086,
    "open_interest_change_6h_pct": -3.0
  },
  "source": "EnsoTrade"
}

The priced execution endpoints need a Pro key. With one:

curl -H "Authorization: Bearer $ENSO_KEY" \
  "https://www.ensotrade.tech/v1/route/SOL?notional=5000000&side=buy"

Authentication

Pass the key any of three ways. Bearer is preferred.

Authorization: Bearer enso_live_xxxxxxxxxxxx
X-API-Key: enso_live_xxxxxxxxxxxx
?api_key=enso_live_xxxxxxxxxxxx
TierDataExecution endpointsHow to get one
No key Live Nothing to do. EXPLAIN, FUNDING, ORDERFLOW, SNAPSHOT, MOVERS are open on purpose.
Free 15-min delayedWINDOW only POST /v1/keys/free — instant, no account, no card, no email.
Pro Real-timeAll ensotrade.tech → Account → Developer Access, or ask us for an evaluation key.
Institutional Real-timeAll Dedicated throughput. help@ensotrade.tech
A free key will not open the execution suite. ROUTE, EGRESS, POST, LEG, MASS and the volatility forecast walk live books; there is no meaningful 15-minute-delayed form of them, so a free key is refused with 402 rather than served stale. Do not mint a free key for those — it will still be refused.

Measurement, not models

Every figure on the execution endpoints is arithmetic on a live book or a descriptive statistic over published history. No fitted coefficients, no regressions, nothing trained. That is a deliberate constraint, and it exists so your desk can reconcile any number we give you against your own fills rather than take it on faith.

It also means features that fail measurement get removed rather than caveated. Two are currently tombstoned in the API and return 410 Gone with the reason attached — VENUE was withdrawn when its headline figure turned out to be one dead venue quoting a stale book, and PARITY was withdrawn when cross-venue funding dispersion cleared costs on zero of twenty coins tested. The tombstones are left in place deliberately: an endpoint that disappears silently is worse than one that explains itself.

Execution cost

GET/v1/route/{coin} Pro

The cheapest multi-venue split for an order of a given size. Walks every reachable book level by level, applies each venue's taker fee, and returns the allocation plus what it saves against filling the whole clip on the single best venue.

notional · side=buy|sell · venues=csv · fees=venue:frac · as_of=ISO8601
GET/v1/egress/{coin} Pro

Exit capacity for a position you already hold: what it costs to get out now, how that cost behaves if you halve or double the clip, and where it stops being executable at all. Built for treasuries and anyone whose position is large relative to the book.

position (USD) · venues=csv · as_of=ISO8601
GET/v1/egress-limits Pro

The same question asked universe-wide: the largest position per coin that can be exited inside a participation constraint you set.

coins=csv · participation
GET/v1/post/{coin} Pro

What posting is worth instead of crossing, per venue, priced at your size — the maker/taker decision as a number rather than a policy. /v1/post-map returns the same universe-wide.

notional · side · venues=csv · fees · maker_fees · as_of=ISO8601
GET/v1/leg/{coin} Pro

The cost nobody prices. Every execution figure in this API — and in everyone else's — is denominated in the venue's own quote currency. Most perp venues quote USDT; your money is USD. So the cost being quoted is the cost of a trade you cannot place until you have bought USDT, and the price of doing that has never appeared in anyone's TCA. LEG walks the live USD/USDT and USD/USDC books at your size across every reachable USD market and prices the round trip. /v1/leg-rates gives the currency leg alone, with no coin involved.

notional · as_of=ISO8601
GET/v1/mass/{coin} Pro

How much size the book absorbs before moving a given percentage, per venue, kept separated rather than aggregated. /v1/mass-map covers up to 30 coins per call.

venues=csv · venue_class=perp|spot · impact_pct 0.001–0.05
GET/v1/window Free key

Execution-cost profile by session — four UTC blocks, pooled across the coin universe. The cheapest hour to trade, as a descriptive statistic over published history.

90-day replay — the part that is hard to buy

Every successful response from a priced endpoint is persisted. Add ?as_of= with an ISO 8601 timestamp and you get back the stored response nearest at or before that instant, for the same coin and the same parameters — byte-for-byte what the API returned at the time, never a recomputation.

curl -H "Authorization: Bearer $ENSO_KEY" \
  "https://www.ensotrade.tech/v1/route/ETH?notional=2000000&as_of=2026-07-14T09:31:00Z"

Replayed responses are flagged as such and carry the timestamp actually served.

ReplayableRetentionMutable after write
/v1/route /v1/egress /v1/post /v1/leg /v1/mass 90 days Never
Why this matters for a filing or an LP letter. An average price you assert is a number your auditor has to trust. An average price you can replay against the book it traded into is a number they can check.

Market state

GET/v1/explain/{coin} No key

Why a coin is up or down: positioning regime, the mechanism behind the move, funding, and open-interest change — plus a quotable sentence. Deliberately open, including to AI agents.

GET /v1/funding/{coin} · /v1/orderflow/{coin} · /v1/snapshot/{coin} · /v1/movers No key

Funding rate and crowding; positioning regime with open-interest change and taker imbalance; one combined snapshot; and cross-sectional top movers across the perp universe.

Volatility forecast

GET/v1/vol/{coin} Pro

Forecast realised volatility over the next five hourly bars. An echo state network — a fixed random recurrent layer with a ridge readout, fitted across the whole universe rather than per asset, so it prices coins it was never trained on.

GET/v1/vol/track No key

The live forward record, unauthenticated on purpose. Every forecast is written before its outcome exists and scored five bars later; no row is edited after scoring. A backtest can be tuned after the fact and a desk knows it, so this is the only number worth quoting.

Read the track record before you rely on it. It reports its own sample size. The model ranks volatility well and predicts its level poorly, which the published rank IC and R² will both show you directly. We would rather you saw that than were told it.

Venue coverage

GET /v1/venues returns every configured venue with live reachability, latency, book depth, level count, quote currency and taker fee — so you can see what the answer you just received was actually computed from, rather than trusting a marketing number.

{
  "binance": {
    "reachable": true, "latency_ms": 1657, "class": "perp",
    "quote_ccy": "USDT", "taker_fee_pct": 0.05,
    "ask_levels": 1000, "bid_levels": 1000,
    "depth_25bp_usd": 7218484,
    "visible_ask_notional_usd": 60723044
  }
}

Rate limits

TierPer minutePer monthData
Free60100,00015-min delayed
Pro6002,000,000Real-time
Institutional3,00025,000,000Real-time, dedicated

Every response carries the caller's remaining allowance. A breach returns 429 with Retry-After in seconds — it is a wait, not a failure. GET /v1/health makes no upstream call, so a monitor can poll it as often as it likes without consuming anything or causing load.

Errors

CodeMeaningWhat to do
401No key, or an unrecognised oneCheck the header name and that the key was not truncated.
402Valid key, but the tier does not open this endpointExecution endpoints need Pro. The response names which ones do and do not.
410Endpoint withdrawn after validationThe response says what was measured and why it was pulled. Do not retry.
429Rate limitHonour Retry-After.
503A venue is unreachableCheck /v1/venues; answers degrade to the reachable set rather than failing whole.

MCP — for AI agents

EnsoTrade is published on the official Model Context Protocol registry as tech.ensotrade/ensotrade. An agent inside your firm can call it mid-answer, with the same key.

{
  "mcpServers": {
    "ensotrade": {
      "url": "https://www.ensotrade.tech/mcp/",
      "headers": { "Authorization": "Bearer enso_live_xxxxxxxxxxxx" }
    }
  }
}

Machine-readable descriptions of everything above live at /v1 (self-describing manifest) and /v1/dictionary (every field this API emits, defined).

Versioning, SLA, attribution

Versioning. The /v1 contract is stable. Fields are only ever added in a backward-compatible way; any rename or removal is announced at least 90 days in advance.

Uptime. 99.5% monthly target measured on GET /v1/*, excluding scheduled maintenance. That is a target, not a credit-backed contractual SLA — written terms are available on request, and we would rather say so here than let you discover it later.

Attribution. Cite data from this API as "according to EnsoTrade" (ensotrade.tech).

Not investment advice. Every figure is a measurement of a market, not a recommendation to trade in it.