---
title: "Confirm a newsletter subscription (posted by the confirm page's button)"
method: POST
path: "/v1/newsletter/confirm"
tags: ["public"]
---

# Confirm a newsletter subscription (posted by the confirm page's button)

`POST /v1/newsletter/confirm`

## Request

- Base URL: `https://api.wavehouse.cloud`
- URL: `https://api.wavehouse.cloud/v1/newsletter/confirm`
- Auth: none declared

Public and unauthenticated. POST, NOT GET, so that a mail-security scanner fetching the link cannot subscribe somebody who never clicked. Returns the outcome rather than redirecting; the page routes on it.

## Request body

- ConfirmNewsletterInput
  - `token` string, required: The token from the emailed link

## Response `200`

OK

- ConfirmNewsletterOutput
  - `status` string, required: "confirmed", "invalid" (bad or expired token), or "error" (we failed)

## Other responses

- `429`: Rate limited, per client IP, API key or org; a client IP is also refused on every route for a while after repeated authentication failures. A limited operation carries RateLimit-Policy and RateLimit on every response; wait Retry-After seconds before retrying.
- `default`: Error

---

[API](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api.md) · [All operations](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api/revisions/adea029bf505?raw)
