Errores
Formato de error
Section titled “Formato de error”Todos los errores de la API retornan un JSON con el campo error:
{ "error": "descripción del error"}Códigos HTTP comunes
Section titled “Códigos HTTP comunes”| Status | Nombre | Descripción |
|---|---|---|
400 | Bad Request | El body de la petición es inválido o falta data |
401 | Unauthorized | API key faltante, inválida, expirada o revocada |
403 | Forbidden | La API key no tiene el permiso requerido |
404 | Not Found | El recurso no existe |
429 | Too Many Requests | Se excedió el rate limit (RPM o RPD) |
500 | Internal Server Error | Error interno del servidor |
Errores de autenticación (401)
Section titled “Errores de autenticación (401)”| Mensaje | Causa |
|---|---|
missing X-Api-Key header | No se envió el header |
invalid or inactive API key | Key incorrecta o revocada |
API key expired | Key pasó su fecha de expiración |
Errores de permisos (403)
Section titled “Errores de permisos (403)”| Mensaje | Causa |
|---|---|
API key lacks permission: shortlinks:write | Se intentó crear/eliminar sin permiso de escritura |
API key lacks permission: shortlinks:read | Se intentó listar sin permiso de lectura |
Errores de validación (400)
Section titled “Errores de validación (400)”| Mensaje | Causa |
|---|---|
invalid request body | JSON malformado o campos inválidos |
target_url is required | Falta la URL destino |
links array is required | Falta el array de links en batch |
Manejo recomendado
Section titled “Manejo recomendado”const res = await fetch('https://api.linkea.us/api/v1/links', { method: 'POST', headers: { 'X-Api-Key': 'lk_tu_api_key', 'Content-Type': 'application/json', }, body: JSON.stringify({ target_url: 'https://ejemplo.com' }),});
if (!res.ok) { const { error } = await res.json();
if (res.status === 429) { // Retry con backoff exponencial await new Promise(r => setTimeout(r, 2000)); // reintentar... } else { console.error(`API Error ${res.status}: ${error}`); }}