Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.blockradar.co/llms.txt

Use this file to discover all available pages before exploring further.

Swap y Bridge
En resumen
La API Swap de Blockradar le permite intercambiar activos en la misma cadena (swap) o transferir activos entre cadenas distintas (bridge) mediante un único endpoint unificado.

Requisitos previos

Antes de utilizar la API Swap, asegúrese de contar con:
1

Clave de API

Obtenga su clave de API desde el Dashboard de Blockradar. Vaya a Developers para generar una.
2

Wallet creada

Cree una wallet a través de la API Create Wallet o desde el dashboard. Necesitará el walletId para las operaciones de swap.
3

IDs de activos

Obtenga el assetId de sus activos de origen y destino desde Assets en el dashboard o mediante la API Get Assets.
4

Saldo suficiente

Asegúrese de que su wallet tenga saldo suficiente del activo de origen para cubrir el monto del swap más las comisiones de red.

Cómo funciona

Blockradar determina automáticamente si su transacción es un swap o un bridge según los activos seleccionados:

Swap

Intercambie distintos activos en la misma blockchain.Ejemplo: USDC → USDT en Base

Bridge

Mueva activos entre blockchains diferentes.Ejemplo: USDC en BSC → USDC en Optimism
No necesita especificar si se trata de un swap o un bridge: la API lo gestiona automáticamente según el fromAssetId y el toAssetId que proporcione.

Activos y cadenas compatibles

La API Swap admite las principales stablecoins en las cadenas compatibles con Blockradar:
StablecoinDescripción
USDTTether USD
USDCUSD Coin
DAIDai Stablecoin
BUSDBinance USD
cNGNStablecoin de Naira
EURCEuro Coin
IDRXStablecoin de Indonesia
JPYCStablecoin de Yen Japonés
La disponibilidad de activos varía según la cadena. Utilice siempre la API Get Assets para obtener la lista actualizada de activos compatibles y sus valores de assetId en las cadenas de destino.
Consulte Integraciones para ver la lista completa de redes y stablecoins compatibles.

Master Wallet vs Child Address

La API Swap está disponible en dos niveles:

Master Wallet

Ejecute swaps directamente desde su master wallet. Ideal para operaciones de tesorería.

Child Address

Ejecute swaps desde child addresses individuales. Perfecto para operaciones específicas de cada usuario.

Endpoints

OperaciónMaster WalletChild Address
Obtener cotizaciónPOST /v1/wallets/{walletId}/swaps/quotePOST /v1/wallets/{walletId}/addresses/{addressId}/swaps/quote
EjecutarPOST /v1/wallets/{walletId}/swaps/executePOST /v1/wallets/{walletId}/addresses/{addressId}/swaps/execute

Paso 1: Obtener una cotización

Solicite siempre una cotización antes de ejecutar un swap para mostrar al usuario el resultado esperado.

Parámetros de la solicitud

ParámetroTipoRequeridoDescripción
fromAssetIdstringEl asset ID desde el que se intercambia
toAssetIdstringEl asset ID hacia el que se intercambia
amountstringEl monto a intercambiar
orderstringNoPreferencia de cotización: FASTEST, CHEAPEST, RECOMMENDED, NO_SLIPPAGE
recipientAddressstringNoDirección de wallet externa (para enviar a wallets que no son de Blockradar)

Ejemplo de cotización

curl --request POST \
  --url https://api.blockradar.co/v1/wallets/{walletId}/swaps/quote \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '{
    "fromAssetId": "asset_usdc_base_mainnet",
    "toAssetId": "asset_usdt_bsc_mainnet",
    "amount": "100",
    "order": "RECOMMENDED"
  }'

Respuesta de la cotización

{
  "message": "Swap quote fetched successfully",
  "statusCode": 200,
  "data": {
    "amount": "99.45",
    "minAmount": "98.95",
    "rate": "0.9945",
    "impact": "0.12",
    "slippage": "0.5",
    "networkFee": "0.002",
    "networkFeeInUSD": "0.15",
    "estimatedArrivalTime": 180
  }
}

Cómo interpretar los campos de la cotización

CampoDescripción
amountMonto estimado que recibirá tras el swap
minAmountMonto mínimo garantizado (considerando el slippage)
rateTasa de cambio efectiva (toAmount / fromAmount)
impactPorcentaje de impacto en el precio
slippagePorcentaje máximo de variación de precio permitida
networkFeeComisión de gas en unidades del token nativo
networkFeeInUSDComisión de gas convertida a USD
estimatedArrivalTimeTiempo estimado de finalización en segundos
Muestre siempre como mínimo: monto a recibir, tiempo estimado de llegada y comisiones antes de que el usuario confirme el swap.

Paso 2: Ejecutar el Swap

Una vez que el usuario confirme la cotización, ejecute el swap.

Parámetros de la solicitud

ParámetroTipoRequeridoDescripción
fromAssetIdstringEl asset ID desde el que se intercambia
toAssetIdstringEl asset ID hacia el que se intercambia
amountstringEl monto a intercambiar
orderstringNoPreferencia de cotización: FASTEST, CHEAPEST, RECOMMENDED, NO_SLIPPAGE
recipientAddressstringNoDirección de wallet externa (para enviar a wallets que no son de Blockradar)
referencestringNoSu ID interno de seguimiento
metadataobjectNoDatos personalizados que se transmiten mediante webhooks

Ejemplo de ejecución

curl --request POST \
  --url https://api.blockradar.co/v1/wallets/{walletId}/swaps/execute \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '{
    "fromAssetId": "asset_usdc_base_mainnet",
    "toAssetId": "asset_usdt_bsc_mainnet",
    "amount": "100",
    "order": "RECOMMENDED",
    "reference": "swap-order-12345",
    "metadata": {
      "userId": "user_abc123",
      "orderId": "order_xyz789"
    }
  }'

Respuesta de la ejecución

{
  "message": "Swap transaction created successfully",
  "statusCode": 200,
  "data": {
    "id": "swap-uuid-123",
    "type": "SWAP",
    "status": "PENDING",
    "fromAsset": {
      "symbol": "USDC",
      "amount": "100",
      "blockchain": "base"
    },
    "toAsset": {
      "symbol": "USDT",
      "amount": "99.45",
      "blockchain": "bsc"
    },
    "reference": "swap-order-12345",
    "metadata": {
      "userId": "user_abc123",
      "orderId": "order_xyz789"
    },
    "createdAt": "2024-01-15T10:30:00Z"
  }
}
Las operaciones de swap son asíncronas. La respuesta inicial muestra el estado PENDING. Escuche el webhook swap.success o swap.failed para confirmar la finalización.

Tipos de orden

Elija el tipo de orden adecuado según su caso de uso:
Tipo de ordenDescripciónRecomendado para
FASTESTPrioriza la velocidad sobre el costoTransacciones sensibles al tiempo
CHEAPESTMinimiza las comisionesOperaciones sensibles al costo
RECOMMENDEDEnfoque equilibrado (predeterminado)La mayoría de los casos
NO_SLIPPAGEMonto exacto o fallaRequisitos de monto preciso

Eventos de Webhook

Monitoree la finalización del swap mediante webhooks:
EventoDescripción
swap.successSwap completado correctamente
swap.failedSwap fallido

Carga útil del Webhook

{
  "event": "swap.success",
  "data": {
    "id": "swap-uuid-123",
    "type": "SWAP",
    "status": "SUCCESS",
    "fromAsset": {
      "symbol": "USDC",
      "amount": "100",
      "blockchain": "base",
      "hash": "0xabc..."
    },
    "toAsset": {
      "symbol": "USDT",
      "amount": "99.45",
      "blockchain": "bsc",
      "hash": "0xdef..."
    },
    "reference": "swap-order-12345",
    "metadata": {
      "userId": "user_abc123",
      "orderId": "order_xyz789"
    },
    "completedAt": "2024-01-15T10:33:00Z"
  }
}

Ejemplo de flujo completo

A continuación se muestra una implementación completa con el flujo cotización → confirmación → ejecución:
async function executeSwap(walletId, fromAssetId, toAssetId, amount) {
  const apiKey = process.env.BLOCKRADAR_API_KEY;
  const baseUrl = 'https://api.blockradar.co/v1';

  // Step 1: Get quote
  const quote = await fetch(
    `${baseUrl}/wallets/${walletId}/swaps/quote`,
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': apiKey
      },
      body: JSON.stringify({
        fromAssetId,
        toAssetId,
        amount,
        order: 'RECOMMENDED'
      })
    }
  ).then(r => r.json());

  // Step 2: Display quote to user
  console.log(`You will receive: ${quote.data.amount}`);
  console.log(`Minimum amount: ${quote.data.minAmount}`);
  console.log(`Network fee: $${quote.data.networkFeeInUSD}`);
  console.log(`Estimated time: ${quote.data.estimatedArrivalTime}s`);

  // Step 3: Execute swap (after user confirmation)
  const swap = await fetch(
    `${baseUrl}/wallets/${walletId}/swaps/execute`,
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': apiKey
      },
      body: JSON.stringify({
        fromAssetId,
        toAssetId,
        amount,
        order: 'RECOMMENDED',
        reference: `swap-${Date.now()}`
      })
    }
  ).then(r => r.json());

  console.log('Swap initiated:', swap.data.id);
  console.log('Status:', swap.data.status);

  // Step 4: Listen for webhook to confirm completion
  return swap.data;
}

// Usage
executeSwap(
  'wallet-uuid',
  'asset_usdc_base_mainnet',
  'asset_usdt_bsc_mainnet',
  '100'
);

Respuestas de error

{
  "message": "Insufficient balance for swap",
  "statusCode": 400,
  "error": "INSUFFICIENT_BALANCE",
  "data": {
    "required": "100",
    "available": "50.25",
    "asset": "USDC"
  }
}
{
  "message": "Asset not found",
  "statusCode": 404,
  "error": "ASSET_NOT_FOUND",
  "data": {
    "assetId": "invalid_asset_id"
  }
}
{
  "message": "No swap route available for this pair",
  "statusCode": 400,
  "error": "NO_ROUTE_AVAILABLE",
  "data": {
    "fromAsset": "USDC",
    "toAsset": "CUSTOM_TOKEN"
  }
}
{
  "message": "Amount below minimum swap threshold",
  "statusCode": 400,
  "error": "AMOUNT_TOO_LOW",
  "data": {
    "minimum": "10",
    "provided": "1"
  }
}
{
  "message": "Price moved beyond slippage tolerance",
  "statusCode": 400,
  "error": "SLIPPAGE_EXCEEDED",
  "data": {
    "expectedAmount": "99.45",
    "actualAmount": "97.00",
    "slippageTolerance": "0.5%"
  }
}

Buenas prácticas

Experiencia de usuario

  • Muestre siempre las cotizaciones: presente monto, comisiones y tiempo estimado antes de ejecutar
  • Gestione el slippage: informe a los usuarios sobre posibles variaciones de precio
  • Muestre el progreso: utilice webhooks para mantener informados a los usuarios sobre el estado del swap

Seguridad

  • Valide los montos: asegúrese de que los montos del swap se encuentren dentro de rangos aceptables
  • Use referencias: rastree los swaps con IDs de referencia únicos
  • Monitoree los webhooks: verifique siempre la finalización del swap mediante webhooks

Rendimiento

  • Cachee los asset IDs: almacene los asset IDs localmente para evitar consultas repetidas
  • Use los tipos de orden adecuados: elija FASTEST para transacciones sensibles al tiempo y CHEAPEST para las sensibles al costo
  • Implemente reintentos: maneje fallos transitorios con retroceso exponencial

Referencia de API

EndpointDescripción
Master Wallet Get QuoteObtener cotización de swap desde la master wallet
Master Wallet ExecuteEjecutar swap desde la master wallet
Child Address Get QuoteObtener cotización de swap desde una child address
Child Address ExecuteEjecutar swap desde una child address

Soporte

La API Swap proporciona una interfaz unificada para swaps en la misma cadena y bridges entre cadenas. Comience con pequeños montos de prueba en testnets antes de pasar a producción.