Biotech Catalyst Sentinel

Accurate FDA PDUFA decision dates for US-listed biotechs — extracted from primary SEC filings, accuracy-tested, and served to your agent per call over x402.

What it is

A PDUFA date is the day the FDA is scheduled to decide on a drug — a binary, market-moving event. Biotech Catalyst Sentinel watches both US 8-K filings and foreign-issuer 6-K filings the moment they're published, uses an LLM to extract the decision date, and keeps only dates whose exact wording is quoted verbatim from the filing. The result is a clean, machine-readable feed of upcoming catalysts and their change history — two paid endpoints, plus a free, independently auditable accuracy track record.

And what it doesn't cover. A PDUFA date is public only because a company chose to announce it — the FDA doesn't publish goal dates in advance. Reading SEC filings means we see the issuers who disclose, which skews to small- and mid-caps where one decision is material, and misses large-cap sponsors who never file an 8-K about a single drug. Our measured coverage is published, unflattered, right next to the accuracy numbers on the track record page — we'd rather you read it there than discover it later.

Primary sources only

Straight from the filing

Every record links to the exact SEC filing it came from. No press-release telephone game, no aggregated guesses.

US + foreign

US and foreign issuers

Tracks both US 8-K filers and foreign issuers that disclose PDUFA dates via 6-K — two filing types, one feed, straight from EDGAR.

Approvals + rejections

We score the “no,” too

Most trackers only note approvals. We capture FDA Complete Response Letters — rejections, the outcome a short position lives or dies on — from the company's own filing and the FDA's records, and put them on the public scorecard next to the approvals.

CBER biologics

Gene & cell therapies openFDA misses

openFDA's main drug dataset omits many CBER-regulated biologics (gene and cell therapies, blood factors). We recover their approvals from the FDA Purple Book — so the newest, highest-stakes modalities aren't a blind spot.

Grounding gate

No hallucinated dates

A date is published only if its source quote appears word-for-word in the filing text. Anything uncertain is held back for human review, never shipped.

History-aware

Set → extended → resolved

Each catalyst is one entity with an event timeline. When the FDA pushes a date back or a decision lands, the record updates and keeps the change on file — so your agent acts on the current date, not a superseded one.

Machine-first

Built for agents

JSON only, no account, no signup, no subscription. Discoverable and payable autonomously via the x402 standard.

Don't trust us — verify

Being right is the entire product. One wrong date on a binary event and an agent operator silently churns forever — so accuracy is measured, published, and free to check before you ever pay.

1 day
median date error
(vs. actual FDA decisions)
~91%
of decisions within
±30 days
$0
to verify — the accuracy
track record is free & public
Predicted dates are reconciled against the FDA's own records — approvals via openFDA, biologics via the FDA Purple Book, and rejections (CRLs) from the issuer's own filing — and the scorecard is served openly at GET /v1/accuracy. Every row lists the FDA application number so you can confirm it yourself. Check the track record first; pay only if it earns it.

A 2023–2025 historical backtest plus every live decision since (n=99 matched FDA decisions, including captured rejections), self-updating as new decisions resolve.

The API

Three endpoints. Two paid, one free. Base URL https://api.biotechcatalystsentinel.com

GET /v1/catalysts/upcoming
Upcoming PDUFA catalysts (default: next 365 days). Pay per call in USDC on Base or Solana — no account, no subscription. Optional query params: within_days (1–365) and limit (1–500).
# Without payment you get the x402 challenge:
curl https://api.biotechcatalystsentinel.com/v1/catalysts/upcoming
# → HTTP 402 Payment Required  (accepts: Base or Solana USDC, $0.02)

# Response after payment (one record shown):
{
  "data": [{
    "drug_name":   "ONS-5010/LYTENAVA (bevacizumab-vikg)",
    "company":     "Outlook Therapeutics, Inc.",
    "ticker":      "OTLK",
    "indication":  "wet AMD",
    "pdufa_date":  "2026-07-29",
    "stage":       "set",
    "confidence":  "high",
    "source_url":  "https://www.sec.gov/Archives/edgar/..."
  }],
  "meta": { "total": 1 }
}
GET /v1/events
The full history of every catalyst we track — set → extended → resolved (date extensions, CRLs/rejections, approvals), newest first, each with its SEC source filing. A superset of /v1/catalysts/upcoming: every event carries its date — including still-upcoming forward dates — plus the resolved outcome and provenance. The full monitoring feed. Optional query params: since (event cursor) and limit (1–500).
# One event (a resolved decision shown); upcoming events carry their forward date + link too:
{
  "data": [{
    "event_type":  "decision_outcome",
    "drug_name":   "ONS-5010/LYTENAVA (bevacizumab-vikg)",
    "ticker":      "OTLK",
    "new_date":    "2025-08-27",
    "outcome":     "approved",
    "source_url":  "https://www.sec.gov/Archives/edgar/..."
  }],
  "meta": { "total": 1 }
}
GET /v1/accuracy free
The public accuracy track record — the receipts behind the feed. Always free, no payment required.

Agents can auto-discover pricing and schema at /.well-known/x402.

How to call it

Built on x402, the open HTTP micropayment standard. Any x402-aware client handles the 402 → pay → retry handshake for you — your agent just makes a GET and gets data back.

# Python — an x402 client signs & settles automatically
from x402 import x402ClientSync
from x402.http.clients.requests import x402_requests
# ...register your Base or Solana signer, then:
resp = session.get("https://api.biotechcatalystsentinel.com/v1/catalysts/upcoming")
print(resp.json()["data"])   # settled in USDC; ~$0.02

Payer pays only the stablecoin — gas is handled by the facilitator. Works with any x402 client (Python, JS x402-fetch, etc.).