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

# Export Negative News

`POST /negative-news/export`

## Request

- Base URL: `https://api.kobaltlabs.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kobaltlabs.com/negative-news/export`
- Auth: none declared

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/kobaltlabs-api.md) - [All operations](https://skmtc.dev/kobaltlabs/apis/kobaltlabs-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kobaltlabs/apis/kobaltlabs-api/revisions/8587332d5e43?raw)
