API de N1

Errores

Formato RFC 9457 de los errores y la tabla de códigos estables.


Los errores siguen RFC 9457 (Content-Type: application/problem+json):

{
  "type": "https://in.n1.app/developers?error=insufficient_scope",
  "title": "Permiso (scope) insuficiente",
  "status": 403,
  "detail": "La clave de API no tiene el scope requerido: contacts:write.",
  "instance": "/v1/companies/12/contacts",
  "code": "insufficient_scope",
  "request_id": "3f2b…",
  "errors": [ { "loc": ["body", "email"], "msg": "…", "type": "…" } ]
}

errors solo aparece en errores de validación. Códigos estables:

CódigoEstadoSignificado
invalid_api_key401Falta la clave, el formato es incorrecto o el secreto no coincide.
api_key_expired401La clave superó su fecha de vencimiento.
api_key_revoked401La clave fue revocada desde el panel.
feature_not_enabled403La cuenta no tiene habilitada la API pública.
company_not_authorized403La clave no tiene acceso a la empresa o el usuario ya no es miembro.
insufficient_scope403La clave no tiene el scope de la operación.
insufficient_role403El rol del usuario en la empresa no alcanza el mínimo requerido.
forbidden403Acceso denegado por otra razón; ver detail.
validation_error400 / 422Parámetros, cuerpo o cursor inválidos; ver errors.
not_found404El recurso no existe en esa empresa.
file_not_available404El documento existe, pero N1 no tiene esa variante del archivo (o no pudo generarla).
conflict409El estado actual del recurso impide la operación.
idempotency_in_progress409Otra solicitud con el mismo Idempotency-Key sigue en curso.
idempotency_key_reused422El Idempotency-Key ya se usó con otro método, ruta o cuerpo.
export_not_ready422El documento no cumple los requisitos para causarse.
rate_limited429Se superó el límite de solicitudes; ver Retry-After.
internal_error500Error inesperado; incluye request_id al contactar soporte.
http_errorotrosCualquier otro estado HTTP no cubierto por los códigos anteriores.

Todos los códigos son estables: puedes usarlos en tu lógica de reintentos. Los mensajes de title y detail están en español y pueden cambiar.