Saltar al contenido principal

Verificar Código de Email

Endpoint para verificar el código de 6 dígitos enviado por email después de un login exitoso.


🔄 Flujo de Verificación

  1. Login exitoso en /auth/login retorna verificationType: "EMAIL_CODE"
  2. Código enviado automáticamente al email del usuario
  3. Usuario ingresa código en tu aplicación
  4. Verificación con este endpoint
  5. JWT final retornado para autenticación completa

📋 Tipos de Respuesta

✅ Verificación Exitosa

Código 1008 - El código es válido y la autenticación está completa.

{
"code": 1008,
"message": "OTP code is valid.",
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "user-uuid",
"email": "usuario@ejemplo.com",
"verified": true
}
}
}

❌ Código Inválido

Código 4005 - El código ingresado no es válido o no coincide.

{
"code": 4005,
"message": "Invalid verification code.",
"id": "123-HN-I98"
}

⏰ Código Expirado

Código 4003 - El código ha expirado (tiempo límite: 10 minutos).

{
"code": 4003,
"message": "The OTP code has expired.",
"id": "124-HN-I99"
}

💻 Ejemplo de Implementación

JavaScript/TypeScript

Verificación de código con manejo de errores
const verifyEmailCode = async (code, sessionToken) => {
try {
const response = await fetch('https://api.swapbits.co/auth/login/verify', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
code: code,
token: sessionToken
})
});

const result = await response.json();

if (result.code === 1008) {
// ✅ Código válido - autenticación completa
localStorage.setItem('accessToken', result.data.accessToken);
localStorage.setItem('refreshToken', result.data.refreshToken);

console.log('✅ Autenticación completa:', result.data.user);
return {
success: true,
user: result.data.user,
tokens: {
access: result.data.accessToken,
refresh: result.data.refreshToken
}
};
} else if (result.code === 4005) {
// ❌ Código inválido
console.log('❌ Código incorrecto');
return { success: false, error: 'Código incorrecto' };
} else if (result.code === 4003) {
// ⏰ Código expirado
console.log('⏰ Código expirado, solicitar nuevo login');
return { success: false, error: 'Código expirado', expired: true };
}
} catch (error) {
console.error('❌ Error en verificación:', error);
return { success: false, error: 'Error de conexión' };
}
};

// Uso del componente
const handleVerifyCode = async () => {
const code = document.getElementById('verification-code').value;
const sessionToken = localStorage.getItem('sessionToken');

const result = await verifyEmailCode(code, sessionToken);

if (result.success) {
// Redirigir al dashboard o página principal
window.location.href = '/dashboard';
} else if (result.expired) {
// Redirigir de vuelta al login
window.location.href = '/login';
} else {
// Mostrar error al usuario
showErrorMessage(result.error);
}
};

⚡ Quick Test

POSThttps://api.swapbits.co/auth/login/verify
curl -X POST 'https://api.swapbits.co/auth/login/verify' \
  -H 'Content-Type: application/json' \
  -d '{"code": "123456", "token": "session-token-uuid"}'

📝 Notas Importantes

⏱️ Expiración de Códigos

  • Los códigos de verificación expiran en 10 minutos
  • Después de 3 intentos fallidos, el token de sesión se invalida
  • Si el código expira, el usuario debe hacer login nuevamente

🔐 Tokens de Respuesta

Access Token: Válido por 1 hora, usar para requests autenticados

Refresh Token: Válido por 30 días, usar para renovar el access token


🧪 Probar esta API

¿Quieres probar este endpoint en vivo?

Visita el API Explorer - Verify Code para hacer pruebas interactivas con este endpoint en tiempo real.

En el API Explorer podrás:

  • ✅ Enviar peticiones reales a la API
  • ✅ Ver respuestas en tiempo real
  • ✅ Probar diferentes escenarios
  • ✅ Experimentar con parámetros

🔗 Enlaces Relacionados