Appearance
Rates feed
A public, read-only feed of Textile's live rates across every deployed corridor, in the standard exchange-integration format (the tickers / pairs shape aggregators like CoinGecko and Monierate consume). Poll it directly — no key, no signing.
Every corridor we run is listed automatically: cNGN (NGN), plus BRL, ARS, XAUt, WETH, USDC and more. New corridors appear as soon as they deploy, with no config.
Base URL: https://api.textilecredit.com
GET only. CORS is open. Responses are cached for a few seconds, so poll as often as you like.
Conventions
- Each pair is quoted in its natural direction, so the price reads as a normal number:
- Fiat corridors quote the foreign currency per stablecoin —
USDT_NGN= NGN per USDT (~1394). cNGN is the naira stablecoin, 1:1 with NGN, so it's published asNGN. - Asset corridors quote the stablecoin per unit —
WETH_USDT= USDT per WETH (~1918).
- Fiat corridors quote the foreign currency per stablecoin —
ticker_idisBASE_TARGET.last_priceis always target per base (the CoinGecko convention).- Numeric fields are decimal strings.
GET /tickers
Live rate for every pair. Pass ticker_id (or base + optional target) to filter.
| Param | Required | Example | Description |
|---|---|---|---|
ticker_id | no | USDT_NGN | Return only this pair. Unknown id → 404. |
base | no | USDT | Return every pair with this base. |
target | no | NGN | Combine with base to pin one pair. |
No parameters returns all pairs.
json
[
{
"ticker_id": "USDT_NGN",
"base_currency": "USDT",
"target_currency": "NGN",
"last_price": "1394.02",
"bid": "1394.02",
"ask": "1394.28",
"high": "1394.28",
"low": "1394.02",
"base_volume": "0",
"target_volume": "0"
}
]| Field | Description |
|---|---|
ticker_id | Pair identifier, BASE_TARGET. |
base_currency / target_currency | The two legs. |
last_price | Our best available rate right now (the more competitive of bid/ask), target per base. |
bid / ask | Best available (top-of-book) rate from the live order book, net of fees — bid = best rate selling the base, ask = best rate buying it. |
high / low | Highest / lowest cleared price over the last 24h. |
base_volume / target_volume | 24h traded volume in the base / target asset. |
bid/ask are the fee-inclusive rate of the best slice on our order book — the rate a small, top-of-book trade clears at, not an indicative mid. A corridor with no live order book falls back to the market mid.
GET /pairs
The pairs the feed supports. Updates automatically as corridors deploy.
json
[
{ "ticker_id": "USDT_NGN", "base": "USDT", "target": "NGN" },
{ "ticker_id": "USDC_NGN", "base": "USDC", "target": "NGN" },
{ "ticker_id": "WETH_USDT", "base": "WETH", "target": "USDT" }
]Historical trades
GET /historical_trades (recent executed trades per pair) is planned. It'll follow the same standard shape (buy / sell arrays with price, base_volume, target_volume, trade_timestamp).
Errors
Errors return { "error": "..." } with an appropriate status: 404 for an unknown ticker_id, 405 for a non-GET method, 502 when the feed can't be built.