---
title: "Returns FDA FAERS drug adverse-event reports — every adverse-event / medication-error report submitted to FDA (~20M, 2004→present, growing ~2M/yr)"
method: GET
path: "/v1/drug-adverse-events"
---

# Returns FDA FAERS drug adverse-event reports — every adverse-event / medication-error report submitted to FDA (~20M, 2004→present, growing ~2M/yr)

`GET /v1/drug-adverse-events`

## Request

- Base URL: `https://api.keyvex.com`
- URL: `https://api.keyvex.com/v1/drug-adverse-events`
- Auth: API key in header `x-api-key`

Returns FDA FAERS drug adverse-event reports — every adverse-event / medication-error report submitted to FDA (~20M, 2004→present, growing ~2M/yr). LIVE passthrough to openFDA: results reflect FDA's current data and `total_count` is openFDA's authoritative count for the filtered query (the results array is just the requested page). Use this when the user asks about: safety signals on a drug, adverse events by reaction type, death/hospitalization outcome counts for a product, a manufacturer's adverse-event footprint, or to pair a safety-signal trend with recalls, approvals, or insider activity.  count_by returns TOP TERMS + COUNTS instead of records (e.g. count_by:'reaction' with drug:'ozempic' → the most-reported reactions for that drug) — the right first move for 'what are the side effects of X' questions; follow with a record query for detail. Records are openFDA's fields verbatim: deeply nested (patient.drug[] with openFDA annotations, patient.reaction[]), 5-15KB each — keep limit small.  Matching: drug matches brand name, generic name, or the verbatim reported product as a PHRASE ('ozempic', 'semaglutide'); reaction is a MedDRA term phrase ('myocardial infarction'); serious=true filters to reports with a serious outcome; outcome picks one specific flag (death, hospitalization, …). since/until window on receivedate (when FDA received the report).  CRITICAL honesty note (FDA's own): FAERS reports are UNVERIFIED and establish NEITHER causation NOR incidence — anyone can report, duplicates exist, reporting is stimulated by publicity, and there is no denominator (prescriptions dispensed). Counts are a reporting signal, not a risk measure. Surface this caveat when presenting counts.  Pure-publisher posture: FDA's records as published, parsed by KeyVex — no derived safety scores.

## Query parameters

- `drug` string
- `manufacturer` string
- `reaction` string
- `serious` boolean
- `outcome` 'death' | 'life_threatening' | 'hospitalization' | 'disability' | 'congenital_anomaly' | 'other'
- `country` string
- `since` string
- `until` string
- `count_by` 'reaction' | 'drug' | 'brand' | 'manufacturer' | 'country'
- `limit` integer
- `skip` 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)
