# GET /auth/verify-email

> Verify a user's email with a token

Verify a user's email address using the token sent in the verification email. Typically the user clicks a link that opens this endpoint with the token in the query string.

## Endpoint

```http
GET /v1/public/projects/:projectSlug/auth/verify-email?token=<verification_token>
```

## Request Parameters

### Path Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `projectSlug` | string | ✅ | Your project's unique slug |

### Query Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `token` | string | ✅ | Verification token from the email link |

## Example

After the user signs up, they receive an email with a link like:

```
https://api.aerostack.dev/v1/public/projects/your-project/auth/verify-email?token=abc123...
```

When the user opens that link (GET request), the backend marks their email as verified. You can then allow full access or redirect them to your app.

## Response

### Success (200 OK)

```json
{
  "message": "Email verified successfully"
}
```

### Error Responses

| Status Code | Error Code | Description |
|-------------|------------|-------------|
| 400 | `INVALID_TOKEN` | Token is invalid or expired |
| 404 | `TOKEN_NOT_FOUND` | Token not found |
| 500 | `INTERNAL_SERVER_ERROR` | Server error |

## Available Hooks

- **Event**: `auth.email.verified`
  - **When**: After email is successfully verified
  - **Can do**: Send additional onboarding emails, grant access in external systems

Configure in **Project → Hooks**. [Learn more about hooks →](/features/hooks)

## Related Endpoints

- [POST /auth/resend-verification](/reference/authentication/resend-verification) - Resend verification email
- [POST /auth/register](/reference/authentication/register) - Sign up (may require verification)
