/api/quoteLiveQuote an operation
Returns the complete breakdown of a sale: the mid-market rate used, every charge on its own line, the net amount and the effective rate actually obtained. The lines sum to exactly the gap between gross and net — the invariant is checked before the response leaves, and an unbalanced response is never returned.
Authentication: none today. The quote endpoint is open: a quote reveals no personal data.
Parameters
| Field | Type | Description |
|---|---|---|
assetIdrequired | string | Identifier of the deposited asset, for example “btc”, “usdt”, “sol”. |
railIdrequired | string | Identifier of the payout method, for example “sepa_instant”, “br_pix”, “ke_mpesa”. |
networkId | string | Deposit network. Optional: the asset’s first network is used by default. Network cost varies a lot between networks, so this field changes the net amount. |
directionrequired | "sell" | "receive" | Input direction. “sell”: the amount is what you deposit. “receive”: the amount is what you want to receive, and the required deposit is resolved by binary search. |
amountrequired | string | Amount in major units, sent as a STRING. A JSON float would lose minor units on large amounts: a string is the only format on which client and server agree to the cent. |
curl -sS -X POST https://fiatside.com/api/quote \
-H 'Content-Type: application/json' \
-d '{
"assetId": "usdt",
"railId": "sepa_instant",
"networkId": "tron",
"direction": "sell",
"amount": "1000"
}'{
"deposit": { "amount": "1000.000000", "ticker": "USDT", "decimals": 6 },
"gross": "921.68",
"net": "912.28",
"currency": "EUR",
"currencyDecimals": 2,
"midRate": "0.92168430",
"effectiveRate": "0.91228000",
"totalCostBps": 102,
"lines": [
{ "code": "network", "amount": "1.11", "basis": "Cout reseau tron, preleve en USDT" },
{ "code": "spread", "amount": "8.29", "basis": "0.90 % du montant converti" }
],
"settlement": { "p50Minutes": 1, "p95Minutes": 12 },
"lockSeconds": 1800,
"rateAsOf": 1788356981608,
"rateSource": "mock",
"limitError": null
}- The response carries Cache-Control: no-store. A cached quote is a stale price served as a firm one.
- A rail limit breach is not an HTTP error: the quote is returned with a limitError object carrying the below_min or above_max code and the exact limit, so your interface can show the right message without a second call.
- rateSource states where the price came from. The value “mock” is the deterministic development source: it cannot boot in production, where the process refuses to start rather than quote frozen prices.
Possible errors: invalid_request, unknown_asset_or_rail, rail_not_open, asset_not_offered, invalid_amount, rate_stale, rate_unavailable, quote_failed. Full catalogue