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
| API | Ruta Base | Descripción |
|---|---|---|
| Marketplace Manager | /api/marketplace/manager | Listados NFT, colecciones, launchpads, ofertas, ForeverMint |
| Analíticas | /api/marketplace/analytics | Analíticas del marketplace y datos de trading (pública, sin autenticación) |
| Usuarios | /api/users | Autenticació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:
- Generar un mensaje de autenticación basado en tiempo
- Firmarlo con tu clave privada de Hedera
- 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
| Header | Descripción | Requerido |
|---|---|---|
Auth | Bearer <TOKEN_JWT> del login | La mayoría de endpoints |
Content-Type | application/json | Peticiones POST/PUT/PATCH |
x-account-id | ID 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ámetro | Tipo | Descripción |
|---|---|---|
skip | entero | Número de registros a saltar |
limit | entero | Máx registros a devolver (1-500) |
orderBy | string | Campo por el que ordenar |
orderDir | string | ASC o DESC |
Los metadatos de paginación se devuelven en los headers de respuesta:
x-Total— Número total de registrosx-Limit— Límite aplicado
Siguientes Pasos
Explora la referencia completa de cada API:
- API de Marketplace Manager — NFTs, colecciones, launchpads, ofertas
- API de Analíticas — Analíticas del marketplace
- API de Usuarios — Autenticación y gestión de usuarios
¿Te resultó útil esta página?