---
title: "Get everyone who has stopped this list"
method: GET
path: "/lists/{list_id}/unsubscribes"
tags: ["Lists"]
---

# Get everyone who has stopped this list

`GET /lists/{list_id}/unsubscribes`

## Request

- Base URL: `https://api.sendfox.com`
- URL: `https://api.sendfox.com/lists/{list_id}/unsubscribes`
- Auth: OAuth 2
  - Authorization code: `https://sendfox.com/oauth/authorize`
  - Token URL: `https://sendfox.com/oauth/token`

Members who no longer receive this list, and when they stopped. Each row is a Contact with two extra fields.
The two timestamps are never merged. `list_unsubscribed_at` is this list only. `unsubscribed_at` keeps the meaning it has everywhere else in this API: the account-wide opt-out. Treating a per-list timestamp as an account-wide one would suppress that person across your whole integration because they left a single list, so read `unsubscribed_scope` if you need one field to branch on.

## Query parameters

- `query` string

## Response `200`

Successful response

- object
  - `data` object[]
    - `id` integer
    - `email` string, email, required
    - `first_name` string
    - `last_name` string
    - `ip_address` string
    - `unsubscribed_at` string, date-time, nullable
    - `bounced_at` string, date-time, nullable: When this address hard bounced. A hard bounce also sets unsubscribed_at. If unsubscribed_at is null, or far from this date, the bounce isn't what's stopping their email; they were resubscribed or opted out separately.
    - `bounce_paused_at` string, date-time, nullable: When this contact was last paused for repeated bounces. Can remain set after the pause has ended; read bounce_paused_until to tell.
    - `bounce_paused_until` string, date-time, nullable: When the current repeated-bounce pause ends. Null if the contact isn't paused, or has since unsubscribed or become invalid, since no retry is coming.
    - `invalid_at` string, date-time, nullable: When this address was found to be invalid. It isn't mailed while this is set.
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `list_unsubscribed_at` string, date-time, nullable: When they stopped THIS list. Null if they never named it and only hold an account-wide unsubscribe.
    - `unsubscribed_scope` 'list' | 'account' | 'both': `list` they left this list only; `account` they unsubscribed from everything without naming this list; `both` they hold both marks, which is what clicking unsubscribe in one of this list's emails produces.
  - `current_page` integer
  - `total` integer
  - `per_page` integer

## Other responses

- `403`: Forbidden. Most often an ownership/authorization failure (Laravel's default `{"message": "..."}` shape). If the account is restricted by SendFox, the response instead carries the structured `account_restricted` body with a link to the account status page.
- `429`: Rate limit reached: 60 requests per minute per user, shared across all endpoints. Wait for the `Retry-After` seconds, then try again.

## Changes

- **2026-11-07** `ae5d5ba1d502`: 5 info
  - added the non-success response with the status `429`
  - added the optional property `data/items/allOf[#/components/schemas/Contact]/bounce_paused_at` to the response with the `200` status
  - added the optional property `data/items/allOf[#/components/schemas/Contact]/bounce_paused_until` to the response with the `200` status
  - added the optional property `data/items/allOf[#/components/schemas/Contact]/bounced_at` to the response with the `200` status
  - …1 more
- **2026-09-30** `1c85e046fea0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sendfox/apis/sendfox-api/changes/lists/:list_id/unsubscribes/get.md)

---

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