Verification
Email verification for user accounts.
Base path: /api/v1/verification
POST /api/v1/verification/email
Verify an email address using the token from the verification link. The token must be unused and not expired (24-hour window).
Authentication: None
Cache: None
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
token | string | Yes | Verification token from the email link |
Sample Request
curl -X POST -H "Content-Type: application/json" \
https://api.grails.app/api/v1/verification/email \
-d '{ "token": "abc123..." }'Response
// 200 OK
{
"success": true,
"data": { "message": "Email verified successfully" },
"meta": { "timestamp": "2026-04-08T00:00:00.000Z", "version": "1.0.0" }
}Error Responses
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_TOKEN | Invalid or expired verification token |
| 400 | VALIDATION_ERROR | Invalid request body |
| 500 | VERIFICATION_FAILED | Failed to verify email |
POST /api/v1/verification/resend
Resend the verification email to the authenticated user’s email address. Generates a new 24-hour token and queues the email for delivery.
Authentication: Required
Cache: None
Sample Request
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
https://api.grails.app/api/v1/verification/resendResponse
// 200 OK
{
"success": true,
"data": { "message": "Verification email sent" },
"meta": { "timestamp": "2026-04-08T00:00:00.000Z", "version": "1.0.0" }
}Error Responses
| Status | Code | Description |
|---|---|---|
| 400 | NO_EMAIL | No email address on file |
| 400 | ALREADY_VERIFIED | Email already verified |
| 401 | UNAUTHORIZED | Not authenticated |
| 404 | USER_NOT_FOUND | User not found |
| 500 | RESEND_FAILED | Failed to resend verification email |
Last updated on