curl -X POST 'https://drug-database.com/v1/interactions/check' \
-H 'Authorization: Bearer ms_live_…' \
-H 'Content-Type: application/json' \
-d '{
"drugs": [
{ "atc_code": "B01AC06" },
{ "atc_code": "B01AA03" },
{ "system": "gtin", "code": "7680651870019" }
]
}'Drug Interaction API
Drug Interaction API — check interactions across CH, EU & US
One POST checks a whole medication list for interactions. The API resolves every drug you send — by ATC code, internal ID, or market identifier (Pharmacode, GTIN, NDC, PZN, CIP13) — down to its WHO ATC code, generates every unique pair, and returns the interactions it finds with a graded severity, the mechanism, and a clinical recommendation.
Matching is ATC-based, so it is jurisdiction-agnostic: a Swiss Pharmacode and a US NDC for the same molecule collapse to the same ATC and interact identically. Interaction content is sourced from EPha, BAG-SL, and ODDB and carries a last_reviewed date.
{
"interactions": [
{
"atc_a": "B01AA03",
"atc_b": "B01AC06",
"severity": "severe",
"mechanism": "Additive antiplatelet/anticoagulant effect",
"recommendation": "Avoid combination; monitor for bleeding.",
"last_reviewed": "2026-02-14"
}
],
"severity_max": "severe",
"unresolved_drugs": [],
"_meta": { "sources": [ "epha", "bag_sl", "oddb" ] }
}What you get
N-way, one call
Send up to 50 drugs; the API builds and checks every unique pair. No client-side pairing.
Graded severity
A 5-step ordered scale plus severity_max for a single-field gate in your dispense flow.
Mixed identifiers
ATC, drug ID, or Pharmacode / GTIN / NDC / PZN / CIP13 in the same request — all resolved for you.
Frequently asked
How does the severity scale work?
Each interaction is graded on a 5-step ordered scale: info, minor, moderate, severe, contraindicated. The response also returns severity_max so you can gate a dispense flow on a single field.
Can I check more than two drugs at once?
Yes. Send 2 to 50 drugs in one request. The API generates every unique pair from your list (N-way), checks each against the interactions table, and returns all hits — you do not pair them up yourself.
How do I reference a drug?
Each entry can be an ATC code ({ "atc_code": "B01AC06" }), an internal drug ID, or a market identifier ({ "system": "gtin", "code": "..." }). Identifiers and IDs are resolved to their ATC code server-side.
Anything that cannot be resolved?
Inputs that do not resolve to an ATC code are returned in unresolved_drugs with the original input echoed back, so nothing fails silently.
Start free — 100 requests/day
Free tier: 100 requests/day, no card. Interaction checks need the interactions:write scope. See the full request and response schema in the docs.