---
title: "Record that the user closed the verify-email prompt"
method: POST
path: "/email-verification/dismiss"
tags: ["email-verification"]
---

# Record that the user closed the verify-email prompt

`POST /email-verification/dismiss`

Call when the user dismisses the in-app prompt without verifying. Increments the dismiss counter and returns the updated status. When called with an email that has no user row yet, the row is created (unverified, default commission plan) so counting starts from the very first prompt. When `mustVerify` is true the app must keep the prompt open until the email is verified. No-op for already verified users.

## Request body

- DismissVerificationDto
  - `userId` number — User ID
  - `email` string — User email, used when userId is not known
  - `name` string — Display name, used only when the email has no user row yet and one is created on this first dismissal. Defaults to the part of the email before @.

## Response `200`

- VerificationStatusResponseDto
  - `success` boolean, required
  - `userId` number, nullable, required — null when the email has no user row yet (tracked=false)
  - `email` string, required
  - `verified` boolean, required
  - `verifiedAt` string, date-time, nullable
  - `dismissCount` number, required — Times the user closed the verify-email prompt without verifying
  - `maxDismissals` number, required — Dismissals allowed before the prompt becomes non-dismissable
  - `remainingDismissals` number, required — Dismissals the user still has left (0 once verified)
  - `mustVerify` boolean, required — True when the email is unverified and the limit is reached: the app must keep the prompt open
  - `lastDismissedAt` string, date-time, nullable
  - `tracked` boolean, required — false when the email has no user row yet; counting starts on the first POST /dismiss
  - `message` string

## Other responses

- `400` — Neither userId nor email supplied, or no commission plan exists to create the user
- `404` — userId given but not found

## Changes

- **2026-09-18** `1f6f3b4ce14b` — 1 breaking, 2 info
  - the response property `userId` became nullable for the status `200`
  - added the new optional request property `name`
  - added the required property `tracked` to the response with the `200` status
- **2026-09-17** `f7cc9325b5b7` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/tonewow/apis/tonewow-database-api/changes/email-verification/dismiss/post.md)

---

[API](https://skmtc.dev/tonewow/apis/tonewow-database-api.md) · [All operations](https://skmtc.dev/tonewow/apis/tonewow-database-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tonewow/apis/tonewow-database-api/revisions/60d5bbdc852a?raw)
