---
title: "Early-warning signals: investigations, violation notices, filings, Prop 65 notices and incident reports"
method: GET
path: "/v1/signals"
---

# Early-warning signals: investigations, violation notices, filings, Prop 65 notices and incident reports

`GET /v1/signals`

## Request

- Base URL: `https://api.recallsapi.com`
- URL: `https://api.recallsapi.com/v1/signals`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Public records that precede or accompany recalls, newest first. `q` words are matched against the title. A signal is not a recall.

## Query parameters

- `q` string
- `kind` 'investigation' | 'violation' | 'press_release' | 'filing' | 'prop65_notice' | 'incident'
- `source` 'nhtsa_inv' | 'cpsc_nov' | 'globenewswire' | 'sec' | 'prop65' | 'spdb'
- `since` string, date
- `until` string, date
- `limit` integer
- `cursor` string

## Response `200`

OK

- object
  - `results` Signal[]
    - `id` string
    - `source` 'nhtsa_inv' | 'cpsc_nov' | 'globenewswire' | 'sec' | 'prop65' | 'spdb': nhtsa_inv: NHTSA defect investigations; cpsc_nov: CPSC notices of violation; globenewswire: GlobeNewswire recall press releases (retired 2026-10-13; the 3 stored releases are kept); sec: SEC EDGAR 8-K filings; prop65: California Attorney General Proposition 65 60-day notices; spdb: CPSC SaferProducts.gov incident reports
    - `kind` 'investigation' | 'violation' | 'press_release' | 'filing' | 'prop65_notice' | 'incident'
    - `title` string
    - `summary` string, nullable: Agency text for investigations and violation notices; for Prop 65 notices the chemicals, the product or source text, the case events, the statement that a notice is a private party's allegation, the AG accuracy disclaimer and the AG notice page; null for press releases and filings, which are stored as facts only (title, date, issuer or filer, link); for SaferProducts incident reports the product, category and incident state, then the CPSC database disclaimer and the statement that a report is a submission to CPSC, not a CPSC finding
    - `firms` string[]: Manufacturer, firm named in the notice, press release issuer, SEC filer or the alleged violators of a Prop 65 notice
    - `products` string[]: Investigations: the components under investigation, then the vehicles as make and model; violation notices: the product name; Prop 65 notices: the product or source text as the noticing party wrote it; empty for facts-only sources
    - `signal_date` string, date, nullable: Date the investigation opened, the violation notice is dated, the filing was filed, the Prop 65 notice was filed with the AG or the incident report was submitted (its publication date when the report date is missing); for a stored GlobeNewswire release, the day it was published
    - `end_date` string, date, nullable: Date an investigation closed; null while open and for other kinds
    - `status` string, nullable: Investigations: open or closed. Violation notices: the action CPSC requested (Recall, Seize, Correct Future Production, Stop Sale and Correct Future Production). Prop 65 notices: notice, complaint, withdrawn or settled, from the case events the AG records. Null otherwise.
    - `flags` string[]: recall_campaign: the investigation led to at least one recall campaign (a campaign identifier names it); recall_requested: CPSC asked for a recall; facts_only: only title, date, issuer or filer and link are stored; allegation: a private party's notice, not a finding (Prop 65); submission: a SaferProducts.gov report, a submission to CPSC, not a CPSC finding
    - `url` string, uri: Human page at the source
    - `source_url` string, uri: Machine-readable file, feed or query we read
    - `first_seen` string, date-time
    - `as_of` string, date-time: When recallsapi.com last saw this record change
    - `identifiers` object[]: Only on /v1/signals/{id}: model, gtin, mmy, mm, campaign, brand (compact firm key), cik
      - `kind` string
      - `value` string
      - `raw` string
  - `next_cursor` string, nullable

## Other responses

- `400`: Invalid input
- `401`: Missing or invalid API key
- `429`: Daily quota reached

---

[API](https://skmtc.dev/recallsapi/apis/recallsapi-com.md) · [All operations](https://skmtc.dev/recallsapi/apis/recallsapi-com/llms.txt) · [OpenAPI document](https://skmtc.dev/recallsapi/apis/recallsapi-com/revisions/2501df40ea54?raw)
