Ir al contenido

Desarrolladores

Guías de la API

Compra y vende, ejecuta estrategias y lanza un token con la API de Ora.

Los ejemplos de esta página usan el cliente ora() de la página API de Ora.

Una operación actúa sobre las wallets de uno de tus tokens. La operación de cada wallet es una transacción propia, espaciada de modo que nunca caigan dos en el mismo bloque.

GET /engine/token/{address}/positions lista cada wallet con su saldo de tokens (unidades en bruto), su SOL y su PnL. Elige las wallets con las que actuar, o deja que Ora elija.

POST /engine/token/{address}/position/sell

const sale = await ora('POST', `/engine/token/${mint}/position/sell`, {
amountToken: '250000000000', // raw units, string; 250,000 tokens at 6 decimals
distribution: 'split', // split | each | concentrate (default)
slippage: 10, // percent, optional
// walletAddresses: ['…'], // optional; default: every holding wallet of the final layer
// maxDelay: 4000, // ms of jitter between wallets; must be > 0 with several named wallets
});
// sale.results → [{ walletAddress, status: 'submitted' | 'failed', signature?, error? }]
// sale.summary → { requested, filled, shortfall } (raw token units, strings)

split reparte la cantidad en proporción a los holdings de cada wallet, each toma la misma cantidad de cada wallet, concentrate usa el menor número posible de wallets, las más grandes. Si pides más de lo que tienes, se vende lo que hay y el resto se indica como shortfall.

POST /engine/token/{address}/position/buy

const buy = await ora('POST', `/engine/token/${mint}/position/buy`, {
amountSol: 0.5, // total to spend, in SOL (the chain's gas asset)
distribution: 'each',
slippage: 10,
});
// buy.summary is in lamports: { requested, filled, shortfall }

Ambas aceptan priorityFee y bribeFee (en SOL) para sustituir las comisiones por defecto. Para una salida total de emergencia, POST /engine/token/{address}/position/nuke vende todo de una vez.

Las estrategias operan por ti mientras tu script está desconectado. Una venta limit se dispara cuando el market cap del token alcanza un objetivo:

POST /engine/strategies/limit-sells

await ora('POST', '/engine/strategies/limit-sells', {
mint,
strategies: [{
triggerMarketCapUsd: 250000,
sellTokens: '100000000000', // raw token units to sell when it fires
wallets: [walletA, walletB], // which of the token's wallets sell
durationSeconds: 86400, // optional expiry; omit to keep it until it fires
}],
});

La misma estructura existe para las ventas mirror (/engine/strategies/mirror-sells, que venden a medida que otras wallets compran) y las ventas TWAP (/engine/strategies/twap-sells, repartidas en el tiempo). Cada estrategia se puede listar, editar con PATCH, activar, desactivar y eliminar; GET /engine/strategies?mint=… lista todas las estrategias de un token. La página Estrategias explica cómo se comporta cada tipo.

Todas las estrategias funcionan también en el otro sentido: son los Mirror Buy, TWAP Buy y Limit Buy de la app. Pasa side: 'buy' al crear una y comprará el token con el activo emparejado de las propias wallets: SOL o ETH, o el token emparejado del lanzamiento si tiene uno. El lado se fija al crearla y no se puede cambiar. Sin él, la estrategia vende.

await ora('POST', '/engine/strategies/limit-sells', {
mint,
strategies: [{
side: 'buy',
triggerMarketCapUsd: 80000, // buys once the market cap drops to this
sellTokens: '500000000', // quote to spend, in base units (here 0.5 SOL)
wallets: [walletA],
}],
});

Los campos conservan sus nombres, pero en una compra todas las cantidades van en unidades base del activo emparejado:

Estrategia Qué hace side: 'buy'
Mirror Responde con compras a las ventas de otras wallets. sellTokens es el presupuesto en activo emparejado, tokensPerSellMin el mínimo de activo emparejado por compra.
TWAP Gasta targetTokens de activo emparejado a lo largo de la duración.
Limit Se dispara cuando el market cap baja hasta triggerMarketCapUsd y gasta sellTokens de activo emparejado.

Cada estrategia que lees lleva side y executedAmount: los tokens vendidos, o el activo emparejado gastado, hasta el momento. Una estrategia activa reserva lo que aún puede gastar. GET /engine/token/{address}/positions lo indica por wallet como lockedTokens (ventas) y lockedQuote (compras), y una compra o una venta manual solo gasta el resto.

Un lanzamiento es la misma secuencia de llamadas que hace el formulario de despliegue de la app:

  1. POST /upload/{protocol}: sube el nombre, el símbolo, la imagen y los enlaces. Devuelve el ID de la información del token.
  2. POST /engine/deploy/plan: obtén una distribución de wallets y la estimación completa del costo para tu configuración.
  3. POST /engine/prepare: crea el token y sus wallets a partir del plan. Devuelve el mint.
  4. POST /engine/fund: devuelve las transacciones de financiación que firma tu wallet (consulta Transacciones que firmas tú). Envíalas y luego llama a POST /engine/fund/confirm.
  5. POST /engine/launch con { "mint": "…" }. El lanzamiento se ejecuta del lado de Ora.
  6. GET /engine/tokens/{mint}/stream: síguelo en tiempo real.

El cuerpo de prepare lleva todas las opciones del formulario de despliegue (launchpad, activo emparejado, capas, ajustes específicos del launchpad), así que es largo. La forma más fácil de acertar es configurar primero un lanzamiento en la app y reproducirlo. Pide al soporte de Ora el esquema actual de cualquier ruta.