FDA Response Events
See when the FDA turns down a drug or halts a trial, how bad the filing says it is, and whether the company ever got past it. Every Complete Response Letter, clinical hold, and refuse-to-file letter disclosed in an SEC 8-K, graded by severity and linked from first disclosure through resolution.
Tell a fixable setback from a fatal one.
severity plus new_trial_required_flag, manufacturing_related_flag, and resubmission_path_stated_flag say which one the filing describes.
Find the setbacks nobody has gotten past.
resolved_flag = 0 marks events still open, and days_to_resolution times the ones that closed.
Size the damage against the company.
market_cap_at_filing and development_phase separate a registrational CRL at a micro-cap from a Phase 1 hold at a large cap.
Which biotechs took an FDA setback this year that they still have not gotten past, and which of those look fixable? Rank them and tell me why.
Your agent translates this into the right action types, the de-duplicated event feed, the open-versus-resolved flags, and the evidence behind each severity grade.
The letters that stop a drug program.
When the FDA pushes back on a drug program, it usually takes one of three forms. A Complete Response Letter (CRL) says the agency reviewed a drug application and will not approve it as it stands, and lists what has to be fixed. A clinical hold orders a trial paused, either entirely (full) or in part (partial). A refuse-to-file letter says an application was too incomplete to begin reviewing. US-listed companies disclose all three in an SEC Form 8-K.
This dataset is those disclosures, structured. Each row carries the event type, the drug program and disease affected, the development phase, and a graded severity with the evidence flags the grade was read from. The result is an event that arrives ready to study instead of one you assemble out of press releases.
Each row includes:
- Which action it was: a Complete Response Letter, a full or partial clinical hold, or a refuse-to-file letter.
- The affected drug program, the disease it targets, and the development phase it had reached.
- A graded severity with the three-state evidence flags the grade was derived from.
- Both date roles: when the FDA acted, and when the company told the market.
- Links back and forward to the same program's other filings, with days_to_resolution once one lands.
- Market cap and shares outstanding as of the session before the filing, plus the EDGAR link to the filing itself.
Two things to get right before you query. A row is a filing, not an event: one FDA action can appear up to three times as it develops, so an unfiltered count overstates events by roughly 2.4x. And severity_rank is grading precedence, not market impact: a rank 5 safety signal with no stated path is a worse commercial outcome than a rank 3 manufacturing issue.
Condition the drawdown on what the letter actually said.
The obvious use is the event study, and the point is that the reaction is not uniform. A CRL citing only manufacturing deficiencies with a stated resubmission path is a different event from one requiring a new clinical trial, and the drawdowns on the two look nothing alike. The severity grade and the evidence flags separate them without you reading the filings.
The second angle is the resolution cycle. Holds get lifted and CRLs get resubmitted, and the linkage columns time-stamp that arc: observed resolutions run from about a month to well over a year. Screening open events past a given age, by development phase and market cap, produces a catalog of potential recovery catalysts.
- Event studies of biotech drawdowns conditioned on event type, severity grade, and evidence flags
- Screens for unresolved CRLs or clinical holds older than N days as recovery-catalyst candidates
- Resolution-cycle timing: days from hold to lift, or from CRL to a disclosed resolution
- Disclosure-latency studies: calendar days between the FDA letter and the 8-K
- Phase- and size-conditioned screens: registrational events on micro-caps vs early-phase events on large caps
Swept from EDGAR, then tracked to resolution.
The source is SEC EDGAR. A recall-first full-text sweep pulls every 8-K that could plausibly describe an adverse FDA action, and a language model classifies each one and extracts the fields. The sweep deliberately over-collects: the filings it retrieved that were audited and rejected as non-events stay in the corpus behind include_rejects=true, so the classification can be checked rather than taken on faith.
The pipeline runs daily after the EDGAR filing day closes. A separate linkage pass connects follow-up and resolution filings back to the original disclosure per company and drug program, writing resolved_flag and days_to_resolution into the older row months after it first published. A sync that only walks a date range will miss those updates, so poll updated_since instead. Coverage begins with filings disclosed on 2024-01-02.
The fields that grade the damage.
The headline fields below are a subset. Every field, with exact types and semantics, is documented in the API reference.
| Field | Type | What it tells you |
|---|---|---|
| event_type | string | Which FDA action: crl, clinical_hold_full, clinical_hold_partial, refuse_to_file, or other_fda_action. |
| filing_role | string | What the filing does about the event: initial_disclosure, follow_up_update, or resolution. Filter to initial_disclosure for a de-duplicated event feed. |
| severity | string | Graded severity, from program_terminated down to unstated, with the supporting evidence flags served alongside. |
| severity_rank | integer or null | Integer 1 to 6 mirroring severity, for sorting and thresholds. Grading-precedence order. |
| drug_or_asset_name | string | The affected drug or asset, by generic or development-code name. |
| development_phase | string | Program stage at the time of the event, from preclinical through registrational and post_marketing. |
| days_letter_to_disclosure | integer or null | Calendar days from the FDA letter to the 8-K. A disclosure-latency measure on initial_disclosure rows. |
| resolved_flag | integer or null | 1 = a later resolution filing exists, 0 = still open, null = this row is itself a resolution. |
| days_to_resolution | integer or null | Calendar days from the disclosure to its linked resolution filing, when one exists. |
| market_cap_at_filing | float or null | Market cap in USD as of the last session before the filing. The population runs from micro-cap to mega-cap. |
One call returns the event and its resolution.
One key works across the REST API, the hosted MCP server, and this dashboard. Every response is JSON with a { count, data } envelope.
import requests
url = "https://api.alphanume.com/v1/biotech/fda-response-events"
params = {
"event_type": "crl",
"filing_role": "initial_disclosure",
"date_gte": "2025-01-01",
"date_lte": "2025-12-31",
"api_key": "alp_abc123"
}
r = requests.get(url, params=params)
print(r.json())curl "https://api.alphanume.com/v1/biotech/fda-response-events?event_type=crl&filing_role=initial_disclosure&date_gte=2025-01-01&api_key=alp_abc123"{
"count": 1,
"data": [
{
"disclosed_date": "2026-03-02",
"filing_timestamp": "2026-03-02T08:05:12-05:00",
"ticker": "ACDB",
"company_name": "Arcadia Biotherapeutics, Inc.",
"accession_number": "0001834501-26-000034",
"form": "8-K",
"event_type": "crl",
"filing_role": "initial_disclosure",
"severity": "manufacturing_only",
"severity_rank": 3,
"drug_or_asset_name": "ARC-101",
"asset_key": "arc101",
"indication": "moderate-to-severe atopic dermatitis",
"development_phase": "registrational",
"fda_stated_reasons": "Deficiencies observed at a third-party fill-finish facility; no clinical or safety issues cited",
"new_trial_required_flag": 0,
"manufacturing_related_flag": 1,
"resubmission_path_stated_flag": 1,
"event_letter_date": "2026-02-27",
"event_letter_date_precision": "day",
"days_letter_to_disclosure": 3,
"resolved_flag": 0,
"days_to_resolution": null,
"market_cap_at_filing": 412356800.0,
"filing_url": "https://www.sec.gov/Archives/edgar/data/1834501/000183450126000034/0001834501-26-000034-index.htm"
}
]
}What this data does not claim.
- Coverage is limited to what companies put in an 8-K. A CRL disclosed only in a 10-Q, mentioned only in a press release, or never disclosed at all is not in this dataset.
- The evidence flags are three-state: 1 means the filing said yes, 0 means it said no, null means the filing was silent. Collapsing null to 0 invents a fact the company never stated.
- days_letter_to_disclosure is meaningful only on initial_disclosure rows and can go negative when a low-precision letter date is extracted as a future date. Screen out negative values and prefer event_letter_date_precision=day.
- Row counts are filings, so any count that is not filtered to filing_role=initial_disclosure counts the same FDA action more than once.
- Fields are extracted by a language model from filing text. Every row links to its EDGAR source, so any value can be checked against the filing it came from.
Asked by researchers, answered plainly.
Is a Complete Response Letter a permanent rejection?
No. It is a decision not to approve the application in its current form, and the deficiencies it lists are often addressable: labeling wording, a manufacturing facility, or more data. Many programs fix the issues, resubmit, and are approved later, which is why an initial disclosure row also points at its resolution.
What is the difference between a full and a partial clinical hold?
A full hold stops all activity in a trial: no new patients enroll, and patients already on the drug must stop unless the FDA allows otherwise. A partial hold stops only part of the work, for example halting new enrollment while current patients continue. The dataset keeps them separate as clinical_hold_full and clinical_hold_partial because they signal different levels of regulatory concern.
How is severity graded in this dataset?
An explicit precedence rule is applied to what the filing states, in this order: program terminated, major delay with a new trial required, manufacturing-only issues, addressable deficiencies with a stated path, safety signal with no path stated, or unstated. The flags the grade came from are served alongside, so you can regrade on your own rule instead of accepting this one.
How many FDA setback events happen in a typical month?
Roughly 1 to 13, so this is a sparse feed by nature. A short date window can legitimately return very few rows or none, which is not an outage. Free keys see a rolling 30-day window of delayed data, which on this dataset can amount to a handful of events.
Free to evaluate. Full history with Pro.
A free key returns a rolling 30-day window of delayed data, enough to test the workflow end to end. Pro unlocks the full point-in-time history, real-time access, and every standard dataset as it launches.