API publique
Une API HTTP versionnée et en lecture seule pour comparer les routes cross-chain comme le fait rempart.app. Elle ne renvoie que des comparaisons : aucune transaction n'est jamais construite ni signée par l'API.
URL de base: https://rempart.app/api/v1
GET /api/v1/chains
Renvoie les chaînes supportées, chacune avec son id numérique, son slug d'URL, son nom d'affichage et son kind (evm ou svm). Aucun paramètre. Limité à 60 requêtes par minute par IP.
GET https://rempart.app/api/v1/chainsGET /api/v1/quote
Compare les routes en direct pour un swap, sur tous les providers qui couvrent la paire, triées par minimum garanti reçu. Limité à 30 requêtes par minute par IP.
GET https://rempart.app/api/v1/quoteParamètres de requête (quote)
| Nom | Requis | Description |
|---|---|---|
| from | oui | Chaîne source : un slug (base, arbitrum, eth, sol…) ou un chainId numérique. |
| to | oui | Chaîne destination : un slug ou un chainId numérique. |
| fromToken | oui | Token source : un symbole vérifié (USDC, ETH…, insensible à la casse) ou une adresse de token valide pour la chaîne source (0x… en EVM, base58 sur Solana). |
| toToken | oui | Token destination : un symbole vérifié ou une adresse de token valide pour la chaîne destination. |
| amount | oui | Montant à swapper, en unités de base (base units) du token source, un entier et non un décimal. 5 USDC sur un token à 6 décimales s'écrit 5000000. Doit être un entier positif, au plus 78 chiffres. |
| slippageBps | non | Tolérance de slippage en points de base (50 = 0,5 %). Optionnel, défaut 50, plage autorisée 1 à 5000. |
| fromAddress | non | Adresse d'envoi, valide pour la chaîne source. Optionnel ; un placeholder en lecture seule est utilisé si omis. |
| toAddress | non | Adresse de réception, valide pour la chaîne destination. Optionnel ; par défaut l'adresse d'envoi pour un swap intra-écosystème, sinon un placeholder. |
Exemple : curl
Comparer un swap de 5 USDC de Base vers Arbitrum :
curl "https://rempart.app/api/v1/quote?from=base&to=arbitrum&fromToken=USDC&toToken=USDC&amount=5000000"Exemple : fetch JavaScript
La même requête depuis le navigateur ou Node. Le CORS est ouvert, aucun proxy n'est nécessaire :
const res = await fetch(
"https://rempart.app/api/v1/quote?from=base&to=arbitrum&fromToken=USDC&toToken=USDC&amount=5000000"
);
const data = await res.json();
// Trié par minimum garanti décroissant : la meilleure route est en tête.
console.log(data.quotes[0]?.providerId, data.quotes[0]?.toAmountMin);Forme de la réponse
Un contrat stable et additif : les champs ne font que s'ajouter, jamais retirés ni renommés. Les montants sont des chaînes (unités de base). Abrégé à une seule quote ci-dessous :
{
"version": "v1",
"request": {
"fromChainId": 8453,
"toChainId": 42161,
"fromToken": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"toToken": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"fromAmount": "5000000",
"slippageBps": 50
},
"quotes": [
{
"providerId": "lifi",
"providerName": "LI.FI",
"toAmount": "4998210",
"toAmountMin": "4973219",
"estimatedDurationSec": 32,
"gasCostUsd": 0.12,
"feeCostUsd": 0.02,
"toTokenPriceUsd": 1,
"steps": [
{ "type": "bridge", "tool": "across", "fromChainId": 8453, "toChainId": 42161 }
],
"expiresAt": 1753238400000
}
],
"failures": []
}Clé API (optionnelle)
Vous n'avez pas besoin de clé. Si vous envoyez un en-tête x-api-key correspondant à une clé que nous vous avons remise, la limite passe à 120 requêtes par minute ; sinon l'en-tête est ignoré. C'est le crochet pour de futurs quotas et l'attribution, rien de plus.
Les limites, honnêtement
- Comparaison seule : l'API ne renvoie jamais de donnée de transaction. Il n'existe aucun endpoint d'exécution. L'exécution a toujours lieu dans le wallet de l'utilisateur, sur rempart.app.
- Limité à 30 requêtes par minute par IP sur /quote (60 sur /chains). Chaque réponse porte un en-tête X-RateLimit-Remaining ; au-delà, HTTP 429.
- Les montants sont toujours en unités de base (des entiers), jamais des décimaux. Se tromper de décimales du token est la façon classique de se tromper d'un facteur million.
- Les quotes périment vite, en 30 secondes environ. Les requêtes identiques sont mises en cache côté serveur quelques secondes (x-rempart-cache : hit ou miss).
- Le CORS est ouvert (Access-Control-Allow-Origin : *) sur /api/v1 uniquement, donc utilisable depuis n'importe quelle origine. Les routes d'exécution n'ont pas de CORS et n'en auront jamais.
- L'API peut être coupée sans préavis pour des raisons d'exploitation ; le cas échéant, toutes les routes v1 renvoient HTTP 503.
- Rempart est non-custodial : il ne détient ni ne relaie jamais de fonds, et cette API ne peut en déplacer aucun. L'exécution a toujours lieu dans le wallet de l'utilisateur, sur rempart.app.