Saltar al contenido
Docs

Errores

El formato RFC 9457 de los errores de la API de partners de SLAN, por qué se programa contra code y qué hacer con cada código de estado.

Todos los errores de la API llegan con el tipo de contenido application/problem+json y la misma estructura, definida por RFC 9457.

{
"type": "https://docs.slan.mx/problems/400",
"title": "BAD_REQUEST",
"status": 400,
"instance": "/v1/partner/users",
"requestId": "01M2SJ4K5N6P7Q8R9S0T1U2V3W",
"code": "VALIDATION_ERROR",
"errors": ["email debe ser un correo electrónico válido"],
"detail": "Falló la validación del cuerpo."
}
Campo Para qué sirve
code El identificador estable del error. Es contra esto que se programa
status El código de estado HTTP, repetido en el cuerpo
title Nombre corto del estado
detail Explicación legible. Puede cambiar de redacción
errors Lista de campos que fallaron, solo en errores de validación
instance La ruta que produjo el error
requestId El identificador de esa petición concreta
type Enlace a la página que describe ese estado

requestId, o cómo pedir ayuda

Cada error trae un requestId. Guárdalo en tu registro junto con el error.

Cuando algo no cuadre y escribas a soporte, ese identificador nos lleva directamente a la petición exacta: qué llegó, qué se ejecutó y qué falló. Sin él, la única forma de encontrarla es adivinar por fecha y ruta.

Los códigos de estado

Código Qué significa Qué hacer
400 Los datos enviados no son válidos Revisa errors[]: indica qué campo falló y por qué
401 Falta x-api-key, o la llave no existe, expiró o fue revocada Verifica la cabecera. Si expiró, rótala
403 La llave no tiene el scope que ese endpoint exige Consulta GET /v1/partner/me para ver tus scopes y pide el que falte
404 El recurso no existe o no es tuyo Verifica el publicId. Un recurso de otro partner también responde 404
409 El recurso ya existe o hay un conflicto de estado Lee el code para saber la causa
422 Los datos son válidos pero violan una regla de negocio Lee code y detail
429 Excediste el límite de peticiones Espera lo que diga Retry-After y reintenta
500 Error inesperado de nuestro lado Reintenta. Si persiste, reporta el requestId
503 Servicio no disponible temporalmente Reintenta con espera creciente

Cada código tiene su propia página con los code que pueden aparecer con él. Son las mismas URLs que verás en el campo type de cualquier error.

Reintentar, y cuándo no

Reintenta los 429, los 500 y los 503, con espera creciente entre intentos. Si la operación era un POST, reintenta con la misma Idempotency-Key: es lo que evita duplicar el recurso.

No reintentes los 400, 401, 403, 404, 409 ni 422 sin cambiar algo. Son respuestas deterministas: la misma petición va a fallar igual las veces que la mandes.