Adverse drug event reports from FDA's Adverse Event Reporting System (FAERS) — 9M+ records since 1968 covering serious adverse events, hospitalizations, deaths, and disabilities. Search by drug name (brand/generic/substance, all OR-matched) and optionally filter by MedDRA reaction term. Returns report ID, received date, seriousness flags, patient demographics, MedDRA-coded reactions, implicated drugs (up to 5 per report), and reporting country. Backed by OpenFDA; data is public-domain US government records.
/api/gov/fda-drug-eventsPAYMENT-SIGNATURE.The fda drug events API is a pay-per-call gov endpoint built for AI agents and autonomous software. Adverse drug event reports from FDA's Adverse Event Reporting System (FAERS) — 9M+ records since 1968 covering serious adverse events, hospitalizations, deaths, and disabilities.
There is no signup and no API key. An agent (or any HTTP client) hits the endpoint, receives an x402 "402 Payment Required" challenge, signs a sub-cent USDC payment on Base or Solana, and retries — the data comes back on the paid request. That makes it a drop-in fda drug events data source for an agent tool-use loop, an MCP host, or a backend that needs gov data on demand without onboarding to yet another vendor portal.
| Name | Type | Description |
|---|---|---|
drugrequired | string | Drug name (brand, generic, or substance). Examples: "tylenol", "metformin", "lisinopril". Case-insensitive. min 2 chars · max 100 chars |
reaction | string | Optional MedDRA preferred-term reaction filter. Examples: "headache", "nausea", "anaphylaxis". min 2 chars · max 100 chars |
limit | integer | Max reports to return (1-100). Default 10. min 1 · max 100 |
# 1. Probe with no auth → 402 envelope with PaymentRequirements curl -sS 'https://2s.io/api/gov/fda-drug-events?drug=xx&reaction=xx&limit=10' # 2. Sign + retry with PAYMENT-SIGNATURE: curl -sS 'https://2s.io/api/gov/fda-drug-events?drug=xx&reaction=xx&limit=10' \ -H 'PAYMENT-SIGNATURE: <base64-json-payload>' # Or use the canonical runner (handles probe → sign → retry): # EVM_PRIVATE_KEY=0x... node --env-file=.env.local \ # --experimental-strip-types scripts/x402-pay.ts \ # 'https://2s.io/api/gov/fda-drug-events?drug=xx&reaction=xx&limit=10'
import { TwoS } from '@2sio/sdk'
const client = new TwoS({
privateKey: process.env.EVM_PRIVATE_KEY as `0x${string}`,
})
const result = await client.gov.fdaDrugEvents({
"drug": "xx",
"reaction": "xx",
"limit": 10
})
console.log('endpoint:', result.endpoint)
console.log('cost:', result.costUsd, 'USDC')
console.log('tx:', result.settlement?.txHash)
console.log('data:', result.data)import os
from twosio import TwoS
client = TwoS(private_key=os.environ["EVM_PRIVATE_KEY"])
result = client.gov.fda_drug_events(drug="xx", reaction="xx", limit=10)
print("endpoint:", result.endpoint)
print("cost:", result.cost_usd, "USDC")
print("tx:", (result.settlement or {}).get("tx_hash"))
print("data:", result.data)// 1. Add @2sio/mcp to your MCP host config (Claude Desktop example below).
// EVM_PRIVATE_KEY funds x402 payments per call.
// claude_desktop_config.json
{
"mcpServers": {
"2sio": {
"command": "npx",
"args": ["-y", "@2sio/mcp"],
"env": { "EVM_PRIVATE_KEY": "0x..." }
}
}
}
// 2. Once the server is running, agents call this tool via standard MCP:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "gov.fda-drug-events",
"arguments": {
"drug": "xx",
"reaction": "xx",
"limit": 10
}
}
}| Field | Type | Description |
|---|---|---|
ok | boolean | one of: true |
items | array | |
total | integer | Total matching rows upstream; null when unknown. |
source | object | |
meta | object |
{
"ok": true,
"items": [
{
"safetyReportId": "example",
"receivedDate": "example",
"serious": false,
"hospitalization": false,
"death": false,
"disabling": false,
"lifeThreatening": false,
"patientSex": "example",
"patientAge": "example",
"reactions": [
"example"
],
"drugs": [
{
"medicinalProduct": "example",
"brandName": "example",
"indication": "example",
"dosageText": "example"
}
],
"occurCountry": "example"
}
],
"total": 1,
"source": {
"provider": "example",
"url": "example",
"license": "example"
},
"meta": {
"query": {
"drug": "example",
"reaction": "example",
"limit": 1
}
}
}