Show unsubscribe status

Overview

Decodes the tamper-proof, server-encrypted UnsubscribeToken from a campaign-email unsubscribe link and returns the masked recipient address plus whether they are already on the suppression list. Render-only — no state change. A generic the endpoint returns 404 for any invalid/expired token so the response never reveals whether a specific address or token is valid.

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

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

Authentication

  • No bearer token required.

  • Public — no bearer token (unauthenticated campaign group; item marked noauth). Reached from the unsubscribe link in customizable emails.

Rate limit

  • 30 requests/min per IP (public).

Path parameters

ParameterTypeRequiredDescription
unsubscribeTokenstringRequiredIdentifier for the record you are targeting.

How it works

  • 200 (success) email_masked shows only the first local-part character (e.g. j***@example.com); already_unsubscribed is true when the address is on the blacklists suppression list.
  • 404 (notFoundResponse) "Invalid or expired unsubscribe link." for any bad/expired token.

Response

200 OK · 200

{
  "data": {
    "status": "success",
    "data": {
      "email_masked": "j***@example.com",
      "already_unsubscribed": false
    }
  }
}

404 Invalid token · 404

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

Errors

StatusMeaning
404Invalid token
500Unexpected server error

Example request

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

Did this page help you?