# TRDEFI > Non-custodial stablecoin infrastructure: payments, treasury liquidity and on-chain market making. > Funds stay in the owner's wallet; access is always a bounded, revocable allowance. ## Products - [TRDEFI App](https://app.trdefi.com): maker studio — turn a wallet balance into a market maker position across 17 networks, set your own commission, exit in one transaction. - [TRDEFI Yield](https://yield.trdefi.com): institutional treasury liquidity — put idle stablecoin floats to work with no pool deposit, no lock-up and no counterparty. - [Company](https://trdefi.com): crypto payment infrastructure — self-custody wallets for individuals, payment links and automatic settlement for businesses. ## API **Two rules, stated plainly for agents:** 1. **READING IS FREE. NO API KEY IS NEEDED.** Every `GET /api/*` endpoint is open to anyone: catalogue, positions, stats, quotes, badges. No signup, no key, no account. 2. **TO TRADE YOU NEED AN API KEY.** To initiate a trade — create a position or swap through the API — you must request an API key. It is issued after a short human review. Request one at https://yield.trdefi.com/docs/api#access The API **never signs and never broadcasts**. The write path returns *unsigned* transactions; the client's own wallet signs them from the client's own address. There is no signing grant, no delegated key, and no endpoint that accepts a private key or seed phrase. - Base URL: `https://yield.trdefi.com` - [**Request an API key**](https://yield.trdefi.com/docs/api#access): required to create or swap a position - [API reference (HTML)](https://yield.trdefi.com/docs/api): the frozen base contract, authentication, rate limits, error codes, deprecation policy - [API reference (Markdown)](https://yield.trdefi.com/docs/api.md): same content, agent-friendly - [OpenAPI 3.1](https://yield.trdefi.com/openapi.json): the machine-readable contract - [Error codes](https://yield.trdefi.com/docs/api#errors): stable codes with retryability ### Endpoints — READ (no key, free, open to anyone) - `GET /api/stats` — catalogue totals, per-chain breakdown, top pairs by volume and by positions - `GET /api/chains` — live set of supported chains (do not hardcode) - `GET /api/strategies?pair=&chain=&q=` — open liquidity positions - `GET /api/strategy-detail?hash=` — one position in detail - `GET /api/quote?hash=&chain=&amount=` — indicative quote (nothing is signed) - `GET /api/badge?metric=` — shields.io endpoint payload for READMEs ### Endpoints — WRITE (API key required) - `POST /v1/positions` — prepare a position. Returns the ordered set of **unsigned** transactions (allowance steps only where your live allowance is short, then the position itself) plus the fee breakdown. Nothing is broadcast. **An API key is mandatory: without one this returns `401 UNAUTHORIZED`.** - `GET /v1/positions/` — track a position you prepared. Key required; you only see your own. Authentication: `Authorization: Bearer trd_live__`, plus an optional `Idempotency-Key` (the salt is derived from it, so a retry returns the same `strategyHash`). Server-side only. Scoped, origin-restricted, revocable. A key can prepare — it can never sign, broadcast or move value. Tracking: `GET /v1/positions/` (key required) reports **only what we have observed on-chain** — `prepared` (nothing seen yet), `shipped` (it is in the live catalogue, so your wallet signed and broadcast it), `filled` (it has settled volume). We deliberately do not report `signed` (unobservable before broadcast) or `failed` (your own receipt is the authority). A key only ever sees the positions it prepared itself. ### Fees Every newly created position carries a **0.05% protocol fee** embedded in the signed order data. It is the same for the web app and the API, it is reported in the `fee` object of every prepared position, and it cannot be removed by the integrator or by us. Reading data is free. ### Contract summary - Every response carries `X-Request-Id`. - Every reply advertises `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`, `RateLimit-Policy`. - Every error is `{ error: { code, message, requestId, retryable, documentation } }`. - Read responses are `{ data, meta }`; `meta.freshnessSeconds` says how old the roll-up is. - Path-versioned resources, a minimum 90-day deprecation notice, additive changes are not breaking. ## Verification - [Live statistics](https://yield.trdefi.com/stats.html): every figure maps to on-chain transactions - [Built on Circle](https://yield.trdefi.com/circle): each Circle capability documented against its transaction ## Optional - [Live metrics as badges](https://yield.trdefi.com/api/badge?metric=volume30): JSON for `img.shields.io/endpoint` - [Investor deck](https://yield.trdefi.com/presentation.html)