Primeros Pasos con las REST APIs de Kabila

Kabila proporciona un conjunto de REST APIs que potencian el marketplace, las analíticas y la gestión de usuarios. Todas las APIs siguen la especificación OpenAPI 3.0, y su documentación siempre está actualizada — generada directamente desde las specs en vivo de la API.

URL Base

Todas las peticiones a la API se realizan a:

https://labs.kabila.app

APIs Disponibles

APIRuta BaseDescripción
Marketplace Manager/api/marketplace/managerListados NFT, colecciones, launchpads, ofertas, ForeverMint
Analíticas/api/marketplace/analyticsAnalíticas del marketplace y datos de trading (pública, sin autenticación)
Usuarios/api/usersAutenticación, perfiles de usuario, gestión de cuentas

Autenticación

1. Token Bearer (JWT)

La mayoría de endpoints requieren un token JWT obtenido del endpoint de login de la API de Usuarios. Pásalo en el header Auth:

curl -X GET "https://labs.kabila.app/api/marketplace/manager/nft-collections" \
  -H "Auth: Bearer TU_TOKEN_JWT" \
  -H "Content-Type: application/json"

2. Autenticación con Firma de Hedera

Algunas operaciones del marketplace (listar, deslistar, actualizar precios) requieren una firma adicional de Hedera para verificación on-chain. Esto implica:

  1. Generar un mensaje de autenticación basado en tiempo
  2. Firmarlo con tu clave privada de Hedera
  3. Codificar el mapa de firmas en base64
import { proto } from '@hiero-ledger/proto';
import { Wallet, AccountId, PrivateKey } from '@hiero-ledger/sdk';
 
// Generar el mensaje de autenticación basado en tiempo
function getKabilaAuthMessage(): string {
  return 'Kabila wallet authentication' + '-' + Math.floor(new Date().getTime() / 300000);
}
 
// Prefijar el mensaje siguiendo la convención de firma de Hedera
function prefixMessageToSign(message: string): string {
  return '\x19Hedera Signed Message:\n' + message.length + message;
}
 
// Firmar el mensaje con tu wallet
async function getSignedAuthMessage(wallet: Wallet): Promise<string> {
  const authMessage = getKabilaAuthMessage();
  const authMessageToSign = [Buffer.from(prefixMessageToSign(authMessage))];
  const signerSignatures = await wallet.sign(authMessageToSign);
  const signatureMap = proto.SignatureMap.create(
    signerSignaturesToSignatureMap(signerSignatures)
  );
  return signatureMapToBase64String(signatureMap);
}

Headers de Petición

HeaderDescripciónRequerido
AuthBearer <TOKEN_JWT> del loginLa mayoría de endpoints
Content-Typeapplication/jsonPeticiones POST/PUT/PATCH
x-account-idID de cuenta Hedera (ej. 0.0.1234567)Endpoints con firma

Formato de Respuesta

Todas las respuestas de la API usan JSON. Las respuestas exitosas devuelven los datos directamente. Las respuestas de error siguen esta estructura:

{
  "reason": "ERROR_REASON",
  "message": "Mensaje de error legible",
  "payload": {}
}

Paginación

Los endpoints de lista soportan paginación con estos parámetros de consulta:

ParámetroTipoDescripción
skipenteroNúmero de registros a saltar
limitenteroMáx registros a devolver (1-500)
orderBystringCampo por el que ordenar
orderDirstringASC o DESC

Los metadatos de paginación se devuelven en los headers de respuesta:

  • x-Total — Número total de registros
  • x-Limit — Límite aplicado

Siguientes Pasos

Explora la referencia completa de cada API:

¿Te resultó útil esta página?