---
title: "Request an async encrypted conversation/session export"
method: POST
path: "/v1/conversations/exports"
tags: ["conversation-exports"]
---

# Request an async encrypted conversation/session export

`POST /v1/conversations/exports`

## Request body

- ConversationExportRequest — POST body for an async encrypted conversation/session export. Every optional field below is a narrowing filter with the SAME meaning and the SAME implementation as the matching ``GET /v1/conversations`` query param — both go through ``src/conversation/session_filters.py``, so an export cannot select a different set of sessions than the list the operator was looking at. The export is channel-agnostic by default; ``channel`` just narrows it. ``[start, end)`` is always required and is not a "filter" in this sense — it bounds the job's size.
  - `export_format` 'csv' | 'ndjson'
  - `start` string, date-time, required
  - `end` string, date-time, required
  - `channel` string, nullable
  - `status` string, nullable
  - `end_user_id` string, uuid, nullable
  - `assigned_agent_id` string, uuid, nullable
  - `priority` 'low' | 'normal' | 'high' | 'urgent', nullable
  - `eval_filter` 'has_evals' | 'no_evals' | 'all_passed' | 'any_failed', nullable
  - `q` string, nullable
  - `from_number` string, nullable
  - `to_number` string, nullable
  - `email` string, nullable
  - `id` string, uuid, nullable
  - `external_session_id` string, nullable

## Response `202`

Successful Response

- ConversationExportJobResponse — Status view of an export job (with per-file download tokens when ready).
  - `id` string, uuid, required
  - `status` string, required
  - `export_format` string, required
  - `window_start` string, date-time, nullable
  - `window_end` string, date-time, nullable
  - `created_at` string, date-time, required
  - `started_at` string, date-time, nullable
  - `finalized_at` string, date-time, nullable
  - `expires_at` string, date-time, nullable
  - `total_rows` integer, nullable
  - `error_code` string, nullable
  - `filters` object, nullable
  - `files` ConversationExportFile[]
    - `name` string, required
    - `sha256_plaintext` string, nullable
    - `download_token` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/revisions/5a5597ebb2d6/schema)
