---
title: "Export suppressions as CSV"
method: GET
path: "/email_blocks/export"
tags: ["Email Suppressions"]
---

# Export suppressions as CSV

`GET /email_blocks/export`

Streams the account's suppressions as a chunked CSV (server-side
cursor; never materialized). Content-type `text/csv`, header
`Content-Disposition: attachment; filename="email_blocks_export.csv"`.

Filters (`filter[reason]`, `filter[domain_id]`,
`filter[created_after]`, `filter[created_before]`) are the only
params that affect output. `sort` and `page[*]` are **parsed**
(bad values still produce `400`) but **ignored** — rows stream
`ORDER BY created_at ASC, id ASC` with no pagination.

CSV columns: `id,to,from,reason,source,scope,status,domain_id,
created_at,updated_at,expires_at,group_id`. The CSV carries the
`group_id` column so group-scoped suppressions' group link survives
the export (empty for account-scope rows).

## Query parameters

- `sort` 'created_at' | '-created_at'
- `page[number]` integer
- `page[size]` integer
- `filter[reason]` 'hard_bounce' | 'spam_complaint' | 'unsubscribe' | 'invalid' | 'manual_block'
- `filter[domain_id]` string, uuid
- `filter[created_after]` string, date-time
- `filter[created_before]` string, date-time

## Response `200`

CSV stream.

## Other responses

- `400` — Query-param validation error (`source.pointer /<field>`).
- `401` — Missing or invalid gateway auth.
- `406` — Framework-rendered error (e.g. 406 Not Acceptable, 405 Method Not Allowed, 415 Unsupported Media Type). HTTP status matches the error and the body `code` carries that same status (e.g. `"406"`, not a hardcoded `"500"`). The explicit `500.json` clause still emits `code: "500"` for genuine 500s.

---

[API](https://skmtc.net/team-telnyx/apis/telnyx-api-2.md) · [All operations](https://skmtc.net/team-telnyx/apis/telnyx-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/team-telnyx/telnyx-api-2/versions/8f5f4e537994/schema)
