Referencia de la APIManejo de errores

Manejo de errores

Formato de error

La mayoría de los errores de API devuelven un objeto JSON con una única cadena error. Esta referencia cubre códigos HTTP, mensajes de validación, guía de reintentos y manejo de fallos en handlers de webhook.

{ "error": "Monitor not found" }

Algunos errores incluyen campos adicionales:

Errores de límite de tasa (429) incluyen un campo retry_after_seconds:

{
  "error": "Too many requests",
  "retry_after_seconds": 60
}

Errores de token de OAuth siguen a RFC 6749 e incluyen un error_description:

{
  "error": "invalid_client",
  "error_description": "Invalid client credentials"
}

Códigos de estado HTTP

EstadoSignificado
400Solicitud incorrecta: campos faltantes o no válidos
401Sin autenticar: token faltante, no válido o caducado
403Prohibido: token válido pero permisos insuficientes o se alcanzó el límite del plan
404Recurso no encontrado
429Tarifa limitada: retroceda y vuelva a intentarlo
500Error interno del servidor: transitorio, reinténtelo con retroceso
503Servicio no disponible: la dependencia ascendente (por ejemplo, el proveedor de OAuth) está inactiva

Mensajes de error comunes

MensajeEstado¿Qué pasó?
"Authorization header missing or invalid"401Sin encabezado Authorization: Bearer <token>
"Invalid or expired token"401El token ha caducado o ha sido manipulado: volver a autenticarse
"Invalid API key"401La clave API utilizada para generar este token ha sido revocada
"Monitor not found"404No existe ningún monitor con este ID en su equipo
"Your plan allows a maximum of N monitors"403Actualice su plan para crear más monitores
"Too many requests"429Ha excedido el límite de tasa; consulte el campo retry_after_seconds
"Internal server error"500Error transitorio del servidor: vuelva a intentarlo con retroceso exponencial

Manejo de errores en el código

const res = await fetch('https://www.diffhook.com/api/monitors', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${accessToken}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload),
})

if (!res.ok) {
  const body = await res.json()
  const message = body.error

  if (res.status === 429) {
    const retryAfter = body.retry_after_seconds ?? 60
    // wait and retry
  } else if (res.status === 401) {
    // re-authenticate with POST /api/oauth/token
  } else {
    console.error(message)
  }
}

errores 5xx

Los errores del servidor son transitorios. Vuelva a intentarlo con un retroceso exponencial; la mayoría se resuelve en segundos. Si un 500 o 503 persiste durante más de unos minutos, consulte nuestra página de estado o envíe un correo electrónico a support@diffhook.com.