Confirm unsubscribe

Overview

Confirm an email unsubscribe. Safe to call repeatedly for the same address. On success the decoded email is added to the blacklists suppression table (type=email, event=unsub, source=unsubscribe, plus the token's company_id) so the email dispatcher never sends to it again. An audit event is logged. A generic the endpoint returns 404 for any invalid/expired token.

Prerequisites

  • No authentication — this endpoint is public.
  • The unsubscribeToken of the record you are targeting.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/campaign/email/unsubscribe/{unsubscribeToken}

Authentication

  • No bearer token required.

  • Public — no bearer token (unauthenticated campaign group; item marked noauth). Posted from the unsubscribe confirmation page.

Rate limit

  • 30 requests/min per IP (public).

Path parameters

ParameterTypeRequiredDescription
unsubscribeTokenstringRequiredIdentifier for the record you are targeting.

Request

  • None. The recipient email + company id are carried inside the encrypted {token} path segment.

How it works

  • 200 { status: "success", message: "You have been unsubscribed." } (same response whether the address was newly added or already present).
  • 404 (notFoundResponse) "Invalid or expired unsubscribe link." for any bad/expired token.
  • 500 (defaultErrorResponse) on unexpected error.

Response

200 OK · 200

{
  "data": {
    "status": "success",
    "message": "You have been unsubscribed."
  }
}

404 Invalid token · 404

{
  "status": "error",
  "message": "Invalid or expired unsubscribe link.",
  "errors": []
}

Errors

StatusMeaning
404Invalid token
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/campaign/email/unsubscribe/<unsubscribeToken>" \
  --header 'Accept: application/json'

Did this page help you?