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.

POST /v1/interactions/check
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" }
    ]
  }'
response — trimmed
{
  "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.