Documentation Index Fetch the complete documentation index at: https://docs.killb.com/llms.txt
Use this file to discover all available pages before exploring further.
KillB retorna respuestas de error estandarizadas:
{
"errorCode" : "USER.0001" ,
"message" : [ "Usuario no encontrado" ],
"statusCode" : "404" ,
"arguments" : [
{
"key" : "userId" ,
"value" : "invalid-id"
}
]
}
Códigos de Estado HTTP
Estado Significado Acción 200Éxito Procesar respuesta 201Creado Recurso creado exitosamente 400Solicitud Incorrecta Corregir parámetros de solicitud 401No Autorizado Actualizar token 403Prohibido Verificar permisos 404No Encontrado Recurso no existe 409Conflicto Recurso ya existe 429Demasiadas Solicitudes Implementar backoff 500Error del Servidor Reintentar con backoff
Códigos de Error Comunes
Errores de Autenticación
Código Mensaje Solución AUTH.0001Credenciales inválidas Verificar email/contraseña AUTH.0002Token expirado Actualizar token de acceso AUTH.0003Token inválido Re-autenticar
Errores de Usuario
Código Mensaje Solución USER.0001Usuario no encontrado Verificar ID del usuario USER.0002Documento inválido Verificar formato del documento USER.0003Email ya existe Usar email diferente USER.0004Usuario menor de edad Usuario debe tener 18+
Errores de Ramp
Código Mensaje Solución RAMP.0001Cotización expirada Crear nueva cotización RAMP.0002Saldo insuficiente Verificar saldo pre-fondeado RAMP.0003Límite del usuario excedido Actualizar nivel KYC RAMP.0004Cuenta inválida Verificar estado de cuenta
Estrategia de Manejo de Errores
class KillBAPIError extends Error {
constructor ( response ) {
super ( response . message . join ( ', ' ));
this . errorCode = response . errorCode ;
this . statusCode = response . statusCode ;
this . arguments = response . arguments ;
}
}
const makeAPIRequest = async ( endpoint , options ) => {
try {
const response = await fetch ( endpoint , options );
if ( ! response . ok ) {
const error = await response . json ();
throw new KillBAPIError ( error );
}
return await response . json ();
} catch ( error ) {
if ( error instanceof KillBAPIError ) {
// Manejar errores de API
console . error ( `Error de API ${ error . errorCode } :` , error . message );
if ( error . statusCode === '401' ) {
// Token expirado, actualizar
await refreshToken ();
return makeAPIRequest ( endpoint , options );
}
if ( error . errorCode === 'RAMP.0001' ) {
// Cotización expirada, obtener nueva
const newQuote = await getNewQuotation ();
// Reintentar con nueva cotización
}
}
throw error ;
}
};
Lógica de Reintento
Implementa backoff exponencial:
const retryWithBackoff = async ( fn , maxRetries = 3 ) => {
for ( let i = 0 ; i < maxRetries ; i ++ ) {
try {
return await fn ();
} catch ( error ) {
if ( i === maxRetries - 1 ) throw error ;
// No reintentar errores de cliente (4xx)
if ( error . statusCode && error . statusCode < 500 ) {
throw error ;
}
// Backoff exponencial
const delay = Math . pow ( 2 , i ) * 1000 ;
await new Promise ( resolve => setTimeout ( resolve , delay ));
}
}
};
// Uso
const user = await retryWithBackoff (() => createUser ( userData ));
Mensajes Amigables al Usuario
Mapea errores técnicos a mensajes de usuario:
const getUserMessage = ( error ) => {
const messages = {
'AUTH.0002' : 'Tu sesión expiró. Por favor, inicia sesión nuevamente.' ,
'USER.0003' : 'Este email ya está registrado.' ,
'RAMP.0001' : 'La cotización de precio expiró. Por favor, intenta nuevamente.' ,
'RAMP.0003' : 'El monto de transacción excede tu límite. Por favor, verifica tu identidad para aumentar límites.'
};
return messages [ error . errorCode ] || 'Ocurrió un error. Por favor, intenta nuevamente.' ;
};
Próximos Pasos
Límites de Tasa Comprendiendo límites de tasa de API
Mejores Prácticas Consejos de integración de producción