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/chains

GET /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/quote

Paramètres de requête (quote)

NomRequisDescription
fromouiChaîne source : un slug (base, arbitrum, eth, sol…) ou un chainId numérique.
toouiChaîne destination : un slug ou un chainId numérique.
fromTokenouiToken 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).
toTokenouiToken destination : un symbole vérifié ou une adresse de token valide pour la chaîne destination.
amountouiMontant à 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.
slippageBpsnonTolérance de slippage en points de base (50 = 0,5 %). Optionnel, défaut 50, plage autorisée 1 à 5000.
fromAddressnonAdresse d'envoi, valide pour la chaîne source. Optionnel ; un placeholder en lecture seule est utilisé si omis.
toAddressnonAdresse 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.
Retour à la doc