Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

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

Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →

¿Qué es la API de Transacciones?

La API de Transacciones de Raydium (Route V2) es un servicio del lado del servidor que construye transacciones de intercambio de Solana serializadas sin requerir que los clientes mantengan una conexión RPC o incluyan el SDK completo de Raydium. Esto simplifica drásticamente la integración para:
  • Interfaces web que no pueden ejecutar un cliente RPC local
  • Aplicaciones móviles con recursos limitados
  • Bots de trading sin interfaz
  • Agregadores y proveedores de monederos
En lugar de realizar enrutamiento complejo de pools y construcción de transacciones en el cliente, solicitas cotizaciones de intercambio y construcción de transacciones a nuestra API, luego firmas y transmites el resultado usando cualquier RPC de Solana.

Descripción General del Flujo de Trabajo

La API de Transacciones separa las responsabilidades en dos fases:

1. Fase de Cálculo: Obtener una Cotización

Llama a /compute/swap-base-in o /compute/swap-base-out para recibir el resultado esperado del intercambio (o entrada requerida) basado en los estados actuales de los pools. Este endpoint es de solo lectura y no requiere ninguna firma:
GET /compute/swap-base-in?inputMint=EPjF...&outputMint=So111...&amount=1000000&slippageBps=50&txVersion=V0
La respuesta incluye:
  • Cantidad de salida esperada
  • Desglose de ruta (qué pools y fuentes de liquidez se utilizan)
  • Impacto de precio

2. Fase de Transacción: Construir y Firmar

Una vez que tengas la respuesta de cálculo, pásala (junto con la cartera y la configuración) a /transaction/swap-base-in o /transaction/swap-base-out:
POST /transaction/swap-base-in
Content-Type: application/json

{
  "wallet": "YourWalletAddress",
  "swapResponse": { ...response from /compute/swap-base-in },
  "txVersion": "V0",
  "computeUnitPriceMicroLamports": "1000",
  "wrapSol": false,
  "unwrapSol": false,
  "inputAccount": "TokenAccount1...",
  "outputAccount": "TokenAccount2..."
}
La respuesta contiene:
  • Una transacción versionada codificada en base64 lista para firmar
  • Direcciones de tabla de búsqueda de direcciones (si txVersion=V0)
Tu cliente entonces:
  1. Decodifica la transacción
  2. La firma con la clave privada del usuario
  3. La transmite a través de cualquier RPC de Solana
  4. Aguarda la confirmación

Endpoints de Cálculo

GET /compute/swap-base-in

Caso de uso: El usuario especifica la cantidad de entrada, calculamos la salida. Parámetros de consulta requeridos:
  • inputMint – Dirección mint del token que envías
  • outputMint – Dirección mint del token que deseas
  • amount – Cantidad de entrada en lamports (unidad más pequeña)
  • slippageBps – Deslizamiento máximo aceptable en puntos base (0–10000)
  • txVersionV0 o LEGACY
Opcional:
  • referrerBps – Si tienes una autoridad de referidor, puntos base de la salida a recaudar como tarifa de referidor

GET /compute/swap-base-out

Caso de uso: El usuario especifica la salida deseada, calculamos la entrada requerida. Parámetros de consulta requeridos:
  • inputMint, outputMint, amount (salida deseada), slippageBps, txVersion
Nota: Sin puntos base de referidor para base-out (aún no implementado).

Endpoints de Transacción

POST /transaction/swap-base-in

Construye una transacción para una cantidad de entrada fija. Cuerpo requerido:
  • wallet – Tu dirección de cartera de firma
  • swapResponse – El objeto de respuesta de cálculo completo
  • txVersion – Versión de transacción
  • computeUnitPriceMicroLamports – Tarifa de prioridad en micro-lamports
Opcional:
  • wrapSol – Si es verdadero, envuelve SOL nativo para entrada
  • unwrapSol – Si es verdadero, desenvuelve WSOL a SOL en salida
  • inputAccount – Cuenta de token para entrada (requerida si no envuelves SOL)
  • outputAccount – Cuenta de token para salida
  • nonceInfo – Nonce duradero para firma sin conexión
  • jitoInfo – Parámetros de paquete de protección MEV de Jito
  • referrerWallet – Cartera de referidor para recaudación de tarifas

POST /transaction/swap-base-out

Construye una transacción para una cantidad de salida fija. Los mismos parámetros que base-in, excepto:
  • El campo referrerInfo está comentado actualmente (aún no implementado)

Envoltorio de Respuesta

Todos los endpoints devuelven un envoltorio estándar:
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "success": true,
  "version": "V1",
  "data": { ... }
}
En caso de error, success es false y msg contiene el código de error (por ejemplo, REQ_WALLET_ERROR, REQ_SLIPPAGE_BPS_ERROR).

Forma de Respuesta de Transacción

Una respuesta de transacción exitosa se ve así:
{
  "id": "...",
  "success": true,
  "version": "V1",
  "data": {
    "transaction": "AgABB...",  // Base64-encoded transaction
    "addressLookupTableAddresses": ["Address1...", "Address2..."]  // For V0 only
  }
}

Ejemplo de Integración

Aquí hay un flujo típico en pseudocódigo:
// 1. Get quote
const quote = await fetch(
  'https://transaction-v1.raydium.io/compute/swap-base-in?' +
  'inputMint=EPjF...&outputMint=So111...&amount=1000000&slippageBps=50&txVersion=V0'
).then(r => r.json());

// 2. Validate quote
if (!quote.success) {
  throw new Error(quote.msg);
}

// 3. Build transaction
const tx = await fetch(
  'https://transaction-v1.raydium.io/transaction/swap-base-in',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      wallet: userWalletAddress,
      swapResponse: quote,
      txVersion: 'V0',
      computeUnitPriceMicroLamports: '1000',
      inputAccount: userInputTokenAccount,
      outputAccount: userOutputTokenAccount,
    }),
  }
).then(r => r.json());

// 4. Decode and sign
const transaction = VersionedTransaction.deserialize(
  Buffer.from(tx.data.transaction, 'base64')
);
transaction.sign([userKeypair]);

// 5. Send via RPC
const rpc = new Connection('https://api.mainnet-beta.solana.com');
const sig = await rpc.sendTransaction(transaction);
await rpc.confirmTransaction(sig);

Parámetros Clave Explicados

txVersion

  • V0: Transacción moderna de Solana con Tablas de Búsqueda de Direcciones (ALTs). Tamaño de serialización más pequeño, tarifas más bajas.
  • LEGACY: Formato de transacción anterior a ALT. Más grande, pero funciona con todos los endpoints RPC.
Elige V0 cuando sea posible; retrocede a LEGACY si tu RPC o cartera no admite ALTs.

computeUnitPriceMicroLamports

Tarifa de prioridad para inclusión más rápida en bloques. Establece en 0 sin tarifa de prioridad, o valores más altos (por ejemplo, 1000) para competir en redes congestionadas. Las unidades son micro-lamports por unidad de computación.

slippageBps

Tolerancia de deslizamiento máximo en puntos base. 100 = 1%, 50 = 0.5%.
  • Usa valores más bajos (por ejemplo, 25–50 bps) para intercambios más estables
  • Aumenta para pares volátiles o de baja liquidez

wrapSol y unwrapSol

  • wrapSol: Si es true, la API envuelve tu SOL nativo en WSOL. No se necesita inputAccount.
  • unwrapSol: Si es true, la API desenvuelve el WSOL de salida nuevamente a SOL nativo. No se necesita outputAccount.
Si ambos son false, debes proporcionar cuentas de token explícitas.

Endpoints de Red

RedMainnetDevnet
Hosttransaction-v1.raydium.iotransaction-v1-devnet.raydium.io
ProtocoloHTTPSHTTPS

Códigos de Error

Mensajes de error comunes:
CódigoSignificado
REQ_SLIPPAGE_BPS_ERROREl deslizamiento es inválido o está fuera de rango
REQ_INPUT_MINT_ERRORLa dirección mint de entrada es inválida
REQ_OUTPUT_MINT_ERRORLa dirección mint de salida es inválida
REQ_AMOUNT_ERRORLa cantidad no es un número válido
REQ_TX_VERSION_ERRORtxVersion debe ser V0 o LEGACY
REQ_WALLET_ERRORLa dirección de cartera es inválida
REQ_INPUT_ACCOUT_ERRORCuenta de token de entrada faltante o inválida
REQ_OUTPUT_ACCOUT_ERRORCuenta de token de salida faltante o inválida
UNKNOWN_ERRORError del lado del servidor; verifica los parámetros de tu solicitud

Ver También