---
title: "Returns SEC comment-letter correspondence: form UPLOAD (the SEC's letter TO the company — the questions) and CORRESP (the company's response)"
method: GET
path: "/v1/sec-comment-letters"
---

# Returns SEC comment-letter correspondence: form UPLOAD (the SEC's letter TO the company — the questions) and CORRESP (the company's response)

`GET /v1/sec-comment-letters`

## Request

- Base URL: `https://api.keyvex.com`
- URL: `https://api.keyvex.com/v1/sec-comment-letters`
- Auth: API key in header `x-api-key`

Returns SEC comment-letter correspondence: form UPLOAD (the SEC's letter TO the company — the questions) and CORRESP (the company's response). The Division of Corporation Finance sends these during filing reviews; they're released ~20+ business days after the review closes. Coverage 2005→present. Use this when the user asks about: whether a company is (or was) under SEC review, accounting-quality red flags before they become enforcement, the back-and-forth around an IPO registration, or to pair with fundamentals / insider activity ('were insiders selling while the SEC was asking questions?').  Reading a thread: filter by ticker or cik, sort date_filed asc — a review is an alternating UPLOAD/CORRESP chain; the final short UPLOAD is typically the 'review complete' letter. v1A is metadata-only: follow filing_index_url for the letter text.  released_date is set on records captured from EDGAR's daily indexes (the dissemination day); older backfilled records carry only date_filed (the letter's own date) — dissemination day isn't recoverable historically and KeyVex never fabricates it.  A comment letter is ROUTINE, not an accusation — most large filers get reviewed on a cycle (Sarbanes-Oxley §408 requires review at least every 3 years). Signal comes from thread LENGTH, topic, and recency, which agents judge from the letter text.  Pure-publisher posture: EDGAR index records as published.

## Query parameters

- `accession_number` string
- `form` 'UPLOAD' | 'CORRESP'
- `ticker` string
- `cik` string
- `company_name` string
- `since` string
- `until` string
- `sort_order` 'asc' | 'desc'
- `limit` integer

## Response `200`

JSON envelope: { results: [...], count, has_more }.

## Other responses

- `400`: Invalid parameter.
- `401`: Missing or invalid API key.
- `402`: This tool requires a higher plan (upgrade_required). Retrying will not help.
- `429`: Tier rate/quota limit reached (rate_limited). Retry-After points at the reset.

---

[API](https://skmtc.dev/keyvex/apis/keyvex-api.md) · [All operations](https://skmtc.dev/keyvex/apis/keyvex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/keyvex/apis/keyvex-api/revisions/01c0210c19cd?raw)
