Skip to content
Antidote
Checking live services…

Use Antidote as a service

The same pipeline the app uses, over HTTP. OpenAPI at https://antidote-api.vercel.app/docs. Also a hosted MCP server: add https://antidote-api.vercel.app/mcp in Claude, Cursor or any MCP client and your own agent can call list_chemicals, bedside_card, read_guideline_page and surveillance_alerts, with no install. The full local MCP server adds label photos and register filing.

Try the API live

Three steps, all real calls to https://antidote-api.vercel.app.

1. Create an API key

2. Pick a request

curl
curl -X POST https://antidote-api.vercel.app/v1/analyze \
  -H "X-API-Key: <your key>" \
  -H "content-type: application/json" \
  -d '{"label":{"product_name":"Gramoxone","active_ingredients":[{"name":"Paraquat dichloride","percent":"24"}]},"audit":false}'

3. Run it

POST /v1/read-label

Multipart photo in; printed fields out. Nothing clinical is asked of the vision model.

POST /v1/analyze

Label fields and patient context in; chemical, WHO class, stop cards, quoted card, audit, citations and Trace out.

GET /v1/chemicals

The registry: chemicals, groups, WHO classes with verification status, India status.

GET /v1/page/{doc}/{page}

The guideline page behind any citation.

POST /v1/records

File a medico-legal register row. GET lists the demo register.

GET /v1/evals/latest

The published evaluation JSON.

POST /v1/keys

Create a signed API key. Shown once; nothing about it is stored on the server.

GET /v1/keys/verify

Check a key and see how many requests it has left this minute.

curl

curl -X POST https://antidote-api.vercel.app/v1/analyze \
  -H "content-type: application/json" \
  -d '{"label":{"product_name":"Gramoxone","active_ingredients":[{"name":"Paraquat dichloride","percent":"24"}],"triangle_colour":"yellow"},"context":{"route":"ingested"}}'

Python

import httpx
r = httpx.post("https://antidote-api.vercel.app/v1/analyze", json={
    "label": {"product_name": "Dursban", "active_ingredients": [{"name": "Chlorpyriphos", "percent": "20"}], "triangle_colour": "yellow"},
    "context": {"route": "ingested", "time_since_exposure": "1-2 h"},
})
card = r.json()
print(card["chosen"], card["stops"])
for s in card["card"]["manage"]:
    print(s["kind"], s["text"], s["cite"] and s["cite"]["page"])

JavaScript

const r = await fetch("https://antidote-api.vercel.app/v1/analyze", { method: "POST", headers: { "content-type": "application/json" },
  body: JSON.stringify({ label: { product_name: "Celphos", active_ingredients: [{ name: "Aluminium phosphide", percent: "56" }] }, context: {} }) });
const { chosen, stops, card, citations, trace } = await r.json();
Decision support for trained clinicians. Responses quote guidelines and never compute doses. Rate limited on the hosted demo.