`lumail@2.1.0` · [`lumail.subscribers`](/docs/sdk/v2/subscribers)

```typescript
subscribers.unsubscribe(idOrEmail: string): Promise<LumailResult<UnsubscribeResponse>>
```

Marks the contact unsubscribed.

## Path Parameters

| Name | Type | Description |
| ----------- | ------ | ------------------------------------- |
| `idOrEmail` | string | **Required.** Subscriber id or email. |

## Response Fields

| Field | Type | Description |
| --------- | ------------------ | ---------------------------- |
| `id` | string | Subscriber id when returned. |
| `email` | string | Email when returned. |
| `status` | `SubscriberStatus` | Usually `UNSUBSCRIBED`. |
| `message` | string | Human-readable confirmation. |

`data` is the unsubscribe payload. Failures return `{ data: null, error: { name, message, statusCode } }`.


## API Reference
**Method:** POST
**Endpoint:** /api/v2/subscribers/:subscriber/unsubscribe

### SDK
```ts
import { Lumail } from "lumail";

const lumail = new Lumail({ apiKey: process.env.LUMAIL_API_KEY });
const { data, error } = await lumail.subscribers.unsubscribe(
  "user@example.com",
);
if (error) {
  throw error;
}
console.log(data.status ?? data.message);
```

### cURL
```bash
curl -X POST https://lumail.io/api/v2/subscribers/user@example.com/unsubscribe \
  -H "Authorization: Bearer YOUR_API_TOKEN"
```

### JavaScript
```javascript
const response = await fetch("https://lumail.io/api/v2/subscribers/user@example.com/unsubscribe", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_API_TOKEN",
  },
});
const data = await response.json();
```

### Success Response
```json
{
  "id": "sub_abc123",
  "email": "user@example.com",
  "status": "UNSUBSCRIBED",
  "message": "Subscriber unsubscribed successfully"
}
```

### Error Response
```json
{
  "name": "not_found",
  "message": "Subscriber not found",
  "statusCode": 404
}
```
