Errores

Todos los errores llegan con el mismo envelope:

{
  "error": {
    "code": "DRIVER_BOUND_ELSEWHERE",
    "message": "El conductor ya está vinculado a otra flotilla en la plataforma",
    "requestId": "req_a1b2c3d4e5f6a7b8c9d0e1f2"
  }
}
  • code — identificador estable para programar contra él. El catálogo es cerrado y aditivo: nunca renombramos códigos.
  • message — explicación en español para humanos (puede cambiar; no programes contra él).
  • details — contexto opcional (p. ej. los campos inválidos en un VALIDATION).
  • requestId — guárdalo; también viaja en el header X-Request-Id de toda respuesta. Es lo primero que te pedirá soporte.

Códigos HTTP

HTTP Cuándo
400 Entrada inválida (VALIDATION, INVALID_FILE_TYPE)
401 Llave faltante, inválida o revocada (UNAUTHORIZED)
403 Scope insuficiente, cuenta en revisión o plataforma no habilitada
404 El recurso no existe o no es tuyo — la API no distingue
409 Conflicto: duplicado global, estado incompatible, re-invitación
413 Archivo demasiado grande
422 La operación no procede por el estado del recurso o la plataforma
429 Límite de solicitudes — revisa Retry-After
500 Error interno (INTERNAL) — reporta el requestId
503 La plataforma (didi/indrive) no está disponible (PLATFORM_UNAVAILABLE)

Catálogo de códigos

Código HTTP Significado
VALIDATION 400 Payload inválido — details trae los campos
UNAUTHORIZED 401 Problema con la llave
FORBIDDEN / INSUFFICIENT_SCOPE 403 Sin permiso / sin scope
TENANT_PENDING 403 Tu cuenta Credikul sigue en revisión
PLATFORM_NOT_ENABLED 403 Función no habilitada (p. ej. conductores indrive en v1)
NOT_FOUND 404 Recurso inexistente o de otra flotilla
CONFLICT 409 Duplicado (placa/VIN/WhatsApp globales) o estado incompatible
ALREADY_INVITED 409 La plataforma ya tenía una invitación activa
ALREADY_REGISTERED 409 El recurso ya estaba registrado
DRIVER_BOUND_ELSEWHERE 409 El conductor pertenece a otra flotilla en la plataforma
DRIVER_NOT_ON_PLATFORM 422 El conductor no existe en la plataforma
INVALID_PHONE 422 Teléfono inválido para la plataforma
CITY_REQUIRED 422 Falta la ciudad del vehículo para el alta didi
FILE_TOO_LARGE 413 Documento > 4 MB
INVALID_FILE_TYPE 400 Formato de archivo no aceptado
RATE_LIMITED 429 Límite de solicitudes excedido
PLATFORM_REJECTED 422 La plataforma rechazó la operación
PLATFORM_UNAVAILABLE 503 La plataforma no responde — reintenta
INTERNAL 500 Error de Credikul

Reintentos

  • Reintenta con retroceso exponencial: 429 (respeta Retry-After), 500, 503.
  • No reintentes a ciegas los 4xx restantes — el resultado será el mismo.
  • Las mutaciones son seguras de repetir: re-registrar o re-invitar responde 200 idempotente, y los duplicados responden 409 en lugar de crear dobles.