Build on Epsilon
Epsilon is a trading platform on Robinhood Chain with advanced order types (limit, stop loss, DCA, trailing stop) for memecoins and RWAs. The developer platform gives you a keyed REST API — quotes, smart order routing, order placement, and market data — plus MCP servers so AI agents in Cursor, Claude, and any MCP client can trade programmatically.
Quickstart
1 — Get an API key. Keys are issued per Epsilon account. During
early access, keys are concierge-issued — ask in the community or DM
@TradeEpsilon. (Self-serve issuance with your
Privy login lands with the developer dashboard.) Keys look like
eps_… and are shown once at creation.
2 — First call: quote a swap. Amounts are raw token units (scaled by the token's decimals):
curl "https://api.epsilon.exchange/v1/route?tokenIn=0x…&tokenOut=0x…&amountIn=1500000000000000000&slippagePpm=10000" \
-H "X-API-Key: eps_YOUR_KEY"
The response contains the best route, expected and minimum output, price
impact in ppm, and the feeLegs that a signed order must embed.
3 — Explore the surface. Everything lives under
/v1 and is documented in the interactive API
reference:
| Endpoint | What it does |
|---|---|
GET/v1/quote | venue-by-venue quotes for a pair |
GET/v1/route | best executable route + feeLegs |
GET/v1/order-preflight | will an order for this pair/size be executable? |
POST/v1/orders | submit an EIP-712-signed order |
GET/v1/orders/{hash} | order status (+ /fills) |
DEL/v1/orders/{hash} | cancel a pending order (maker-signed) |
GET/v1/orderbook/{pair} | open orders for a token pair |
GET/v1/swaps · /v1/volume · /v1/stats | market data |
GET/v1/errors · /v1/config · /v1/openapi.json | error catalog, chain config, spec (no key needed) |
Authentication
Every keyed endpoint accepts the key in either header form:
X-API-Key: eps_YOUR_KEY
# or
Authorization: Bearer eps_YOUR_KEY
Keys are secrets: server-side only, never in browser code or repos. A leaked key can be disabled instantly and reissued — rotation is free.
Rate limits
Limits are per key (not per IP) over a sliding minute, in three buckets:
| Bucket | Endpoints | Free tier |
|---|---|---|
| Quote | /v1/quote, /v1/route, /v1/order-preflight | 120 / min |
| Read | orders, orderbook, swaps, volume, stats | 600 / min |
| Order | POST /v1/orders, cancel | 30 / min |
Every response carries X-RateLimit-Limit and
X-RateLimit-Remaining; a 429 includes Retry-After.
Order submission additionally has per-maker-wallet limits.
Amounts & prices
- Amounts are raw token units — decimal strings already scaled
by the token's decimals.
1.5WETH (18 decimals) is"1500000000000000000". - Slippage is ppm (parts per million) in
/v1params: basis points × 100. 1% = 100 bps =10000ppm. - Trigger prices are the price of 1 tokenIn expressed in
tokenOut, scaled to tokenOut's decimals.
0means execute at market (DCA legs). - Chain: Robinhood Chain, id
4663. Live contract addresses at/v1/config.
Signed orders
Epsilon is non-custodial: an order is an EIP-712 message signed by the
maker's wallet (domain EpsilonRouter v7, chain 4663), executed
on-chain by keepers when the trigger condition is met. Funds stay in the maker's
wallet until fill. The API key on POST /v1/orders is attribution and
rate limiting — authorization is the signature itself.
Two integration paths:
- Local MCP package (
@epsilon-exchange/mcp) — signs and submits for you; the private key never leaves your machine. Recommended. See the MCP guide. - Raw HTTP — build and sign the order struct yourself, then
POST /v1/orders. The full schema, maker-traits bit layout, and fee-leg rules are in the API reference. Fee fields must exactly match thefeeLegsserved byGET /v1/routefor the same wallet.
Cancelling a pending order is also signed: EIP-712
OrderCancel(bytes32 orderHash) by the maker, sent with
DELETE /v1/orders/{hash}.
Errors
Errors are JSON with a stable machine-readable code:
{ "error": "human-readable message", "code": "MACHINE_CODE" }
| Code | Meaning |
|---|---|
RATE_LIMITED | per-key limit hit — honor Retry-After |
MAKER_RATE_LIMITED | too many orders from one maker wallet |
BAD_SIGNATURE | signature doesn't recover to the maker |
FEE_PARAMS_MISMATCH | order fee fields don't match the served feeLegs |
INVALID_TRAITS | makerTraits flags invalid for the order type |
ALREADY_EXISTS | order hash already indexed |
UNSUPPORTED_PAIR / NO_ORACLE | pair can't be safely executed as a triggered order |
NO_ROUTE / NO_POOL | no executable liquidity right now |
The complete, always-current catalog with retry guidance is served live at
GET /v1/errors (no key required).