---
title: "Poll an import job"
method: GET
path: "/email_blocks/import/{id}"
tags: ["Email Suppression Imports"]
---

# Poll an import job

`GET /email_blocks/import/{id}`

Account-scoped fetch (cross-account → 404; malformed UUID → 404).
Nullable fields are omitted until terminal: `provider`/`completed_at`
when nil; `processed_rows`/`created_count`/`existing_count`/
`skipped_count`/`error_count` only when `status == completed`;
`errors` only when non-empty; `failure_reason` only on terminal
failure.

## Response `200`

The import record.

- EmailBlockImportResponse
  - `data` EmailBlockImport, required — Import job. Schema fields hidden: `account_id`, `csv_content`, `block_ttl_days`. Nullable fields use the omit-nullable pattern.
    - `id` string, uuid, required
    - `record_type` 'email_block_import', required — View-only.
    - `status` 'pending' | 'processing' | 'completed' | 'failed', required
    - `total` integer, required — Data-row count at upload.
    - `provider` 'sendgrid' | 'mailgun' | 'ses' | 'generic' — Omitted when nil.
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `completed_at` string, date-time — Omitted until terminal success.
    - `processed_rows` integer — Only when `status == completed`.
    - `created_count` integer — Only when `status == completed`.
    - `existing_count` integer — Only when `status == completed`.
    - `skipped_count` integer — Only when `status == completed`.
    - `error_count` integer — Only when `status == completed`.
    - `errors` object — `{row_number: reason}`; only rendered when non-empty.
    - `failure_reason` string — Only on terminal failure.

## Other responses

- `401` — Missing or invalid gateway auth.
- `404` — Resource not found (cross-account lookups and malformed UUIDs also return 404 — no leak).
- `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)
