---
title: "Confirm unsubscribe from notifications"
method: POST
path: "/v1/subscribers/unsubscribe/{token}"
tags: ["Subscribers"]
---

# Confirm unsubscribe from notifications

`POST /v1/subscribers/unsubscribe/{token}`

## Request

- Base URL: `https://api.agentonair.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.agentonair.com/v1/subscribers/unsubscribe/{token}`
- Auth: none declared

Public no-auth unsubscribe confirmation. POST validates the signed email token and changes an active subscription to unsubscribed. Browsers receive friendly noindex HTML by default. API clients can append ?format=json or send Accept: application/json to parse status, writes_performed, and retryable without scraping HTML. Repeated, expired, or invalid tokens return an honest no-write receipt.

## Path parameters

- `token` string, required

## Query parameters

- `format` string, nullable

## Response `200`

Confirmed unsubscribe result. Defaults to text/html; JSON receipts are available with ?format=json or Accept: application/json.

- object
  - `status` 'unsubscribed' | 'expired_or_already_unsubscribed' | 'temporary_error', required
  - `message` string, required
  - `writes_performed` boolean, required
  - `retryable` boolean, required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Validation Error
- `429`: Rate Limit Exceeded
- `500`: Internal Server Error
- `503`: Temporary error while processing an unsubscribe token.

---

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