Suppressions API
Addresses that are never sent to, by reason and stream.
3 operations. Guide: Send email with the API. Requests and responses are JSON with snake_case fields; authenticate with Authorization: Bearer <api key>. The examples assume a client built as in SDKs and the command line.
List suppressed addresses
GET /v1/suppressions
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | no | Default 20. |
after | query | string | no | A UUID. |
before | query | string | no | A UUID. |
email | query | string | no | |
reason | query | one of "hard_bounce", "complaint", "unsubscribe", "one_click", "manual", "sunset", "imported" | no | |
stream | query | one of "transactional", "marketing" | no | Transactional mail is one-to-one and expected; marketing mail goes to lists and must carry List-Unsubscribe. |
Response
200 Success: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "list" | yes | |
data | array of Suppression | yes | |
data[]. | string | yes | A UUID. |
data[]. | "suppression" | yes | |
data[]. | string | yes | A UUID. |
data[]. | string | yes | |
data[]. | one of "transactional", "marketing", null or null | yes | Transactional mail is one-to-one and expected; marketing mail goes to lists and must carry List-Unsubscribe. |
data[]. | one of "hard_bounce", "complaint", "unsubscribe", "one_click", "manual", "sunset", "imported" | yes | |
data[]. | string | yes | |
data[]. | string or null | yes | A UUID. |
data[]. | string (date-time) | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
data[]. | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
has_more | boolean | yes |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.
Examples
curl https://api.minket.com/v1/suppressions \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.suppressions.list();minket api listSuppressionsfrom minket.api.suppressions import list_suppressions
result = list_suppressions.sync(client=client)res, err := client.ListSuppressionsWithResponse(ctx, &minket.ListSuppressionsParams{})Suppress an address
POST /v1/suppressions
Request body
| Field | Type | Required | Description |
|---|---|---|---|
email | string | yes | An email address without display name. |
stream | one of "transactional", "marketing", null or null | no | Transactional mail is one-to-one and expected; marketing mail goes to lists and must carry List-Unsubscribe. Default null. |
reason | one of "manual", "imported" | no | Default "manual". |
Response
201 Created: Suppression.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | A UUID. |
object | "suppression" | yes | |
project_id | string | yes | A UUID. |
email | string | yes | |
stream | one of "transactional", "marketing", null or null | yes | Transactional mail is one-to-one and expected; marketing mail goes to lists and must carry List-Unsubscribe. |
reason | one of "hard_bounce", "complaint", "unsubscribe", "one_click", "manual", "sunset", "imported" | yes | |
source | string | yes | |
email_id | string or null | yes | A UUID. |
created_at | string (date-time) | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
expires_at | string (date-time) or null | yes | An ISO 8601 timestamp with timezone, for example 2026-10-24T18:00:00.000Z. |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.
Examples
curl -X POST https://api.minket.com/v1/suppressions \
-H "Authorization: Bearer $MINKET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"jane@example.com"}'const result = await minket.suppressions.create({
email: "jane@example.com"
});minket api createSuppression --body '{"email":"jane@example.com"}'from minket.api.suppressions import create_suppression
from minket.models import CreateSuppressionBody
result = create_suppression.sync(client=client, body=CreateSuppressionBody.from_dict({"email":"jane@example.com"}))var body minket.CreateSuppressionJSONRequestBody
res, err := client.CreateSuppressionWithResponse(ctx, body)Remove a suppression
DELETE /v1/suppressions/{id}
Hard bounces and complaints should stay suppressed; removing them is audited.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | A UUID. |
Response
200 Success: object.
| Field | Type | Required | Description |
|---|---|---|---|
object | "suppression" | yes | |
id | string | yes | |
deleted | true | yes |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, with the error body.
Examples
curl -X DELETE https://api.minket.com/v1/suppressions/019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b \
-H "Authorization: Bearer $MINKET_API_KEY"const result = await minket.suppressions.delete("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b");minket api deleteSuppression 019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5bfrom minket.api.suppressions import delete_suppression
result = delete_suppression.sync("019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b", client=client)res, err := client.DeleteSuppressionWithResponse(ctx, "019a2b3c-4d5e-7f60-8a9b-0c1d2e3f4a5b")