---
title: "Export Negative News"
method: POST
path: "/negative-news/export"
tags: ["negative-news"]
---

# Export Negative News

`POST /negative-news/export`

The feed as a styled Excel digest, uploaded to S3 and handed back as a
presigned URL — the same shape every other table export returns.

The client names the rows rather than re-describing its filters. It can:
``GET /all`` hands it the whole feed, so the rows it has filtered and sorted
are every matching hit and only the 20 rendered are a page. That keeps the
workbook in the reader's own sort order, and keeps the filter rules (a
multi-select per column, a range over freeform ``when`` text) in one place
rather than in a second copy here that has to agree with the browser's.

Rows still resolve against the caller's own feed, so a ``hit_key`` for a
company they cannot see resolves to nothing. Gated like ``GET /all``.

## Query parameters

- `entity_type` EntityType[], nullable

## Request body

- NegativeNewsExportRequest
  - `hits` NegativeNewsExportHit[], required
    - `vendor_id` string, uuid, required
    - `hit_key` string, required
  - `columns` string[], nullable
  - `filter_label` string, nullable

## Response `200`

Successful Response

- NegativeNewsExportResponse
  - `download_url` string, required
  - `filename` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/kobaltlabs/apis/fastapi.md) · [All operations](https://skmtc.dev/kobaltlabs/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kobaltlabs/fastapi/revisions/3ff4c0bd276b/schema)
