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
- Login exitoso en
/auth/loginretornaverificationType: "EMAIL_CODE" - Código enviado automáticamente al email del usuario
- Usuario ingresa código en tu aplicación
- Verificación con este endpoint
- 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
POST
https://api.swapbits.co/auth/login/verifycurl -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
- 🔐 Login de Usuario
- 🛡️ Verificar Código 2FA
- 🔄 Refreshing Session (See Session Management)
- 👤 Obtener Perfil de Usuario