For developers and IT teams

XchangeIQ API

Run the Chemical Check from your own systems (ERP, purchasing, compliance or export tools): Indian rules, DGFT import and export policy, import duty, anti-dumping, global treaties, safety and storage, as JSON. Free for RasayanXchange members.

Get a key

API keys are free for RasayanXchange members. We email you a link; opening it shows your key. No card.

Quick start

Send your key in the X-API-Key header (or as Authorization: Bearer …). Ask by name, CAS number or common trade name.

curl -H "X-API-Key: YOUR_KEY" /api/v1/check/108-95-2
import requests

r = requests.get("/api/v1/check/phenol",
                 headers={"X-API-Key": "YOUR_KEY"}, timeout=60)
r.raise_for_status()
check = r.json()
print(check["name"], check["overall"]["level"], check["facts"]["tariff_item"], check["facts"]["duty_pct"])

A first check of a rare chemical can take 10–20 seconds while sources are fetched; repeat checks are fast. Use a timeout of 60 seconds.

Endpoints

CallWhat it doesCounts
GET /api/v1/check/{name or CAS}The full Chemical Check for one chemical.1
POST /api/v1/bulkStart a check of up to 500 chemicals. Body: {"items": ["phenol", "67-64-1"]}. Returns an id.1 per chemical
GET /api/v1/bulk/{id}Progress and summary rows; poll every few seconds until finished is true. Kept for 24 hours.0
GET /api/v1/bulk/{id}/excelThe finished list as an Excel workbook (Summary, Details, About).0
GET /api/v1/suggest/{text}Name suggestions while someone types.0
GET /api/v1/keys/usageToday's use, your limits and the last 30 days.0
POST /api/v1/keys/revokeSwitch off the key you send, for good (if it leaked, say).0

What a check returns

name, cas, formula
Who we identified. Always check this matches what you meant.
overall
level (green OK, amber check, red stop, grey no data) and a one-line text.
cards[]
One per topic, with key: rules, export, global, duty, safety, storage, food, market, patent. Each has level, headline, points[] in plain words and sources[] (name, link, date).
facts
Figures for your columns: tariff_item, duty_pct (total effective import duty), import_policy, export_policy, anti_dumping (countries), anti_dumping_rate (amount for most producers, where the notification's table is in), scomet, ndps, drug_schedule, precursor, eu_cmr (EU harmonised carcinogen, mutagen or reproductive-toxicant category). null means not listed or not known.
generated_at
When the check was made. Results are cached for up to 6 hours.
{
  "name": "Acetone", "cas": "67-64-1", "formula": "C3H6O",
  "overall": { "level": "amber", "text": "OK to trade, but watch: rules in India." },
  "cards": [ { "key": "rules", "title": "Rules in India", "level": "amber",
               "headline": "BIS mark needed (Quality Control Order)", "points": ["…"], "sources": [ … ] }, … ],
  "facts": { "tariff_item": "2914 11 00", "duty_pct": 27.73, "import_policy": "Free", "export_policy": "Free",
             "anti_dumping": [], "scomet": null, "ndps": null, "drug_schedule": null, "precursor": null }
}

Limits and errors

Each key allows 1,000 checks a day (reset at midnight India time) and 120 calls a minute. Every keyed reply carries X-Quota-Used and X-Quota-Limit headers.

401
Key missing, wrong or revoked.
404
We could not identify the chemical. Try its CAS number.
429
Daily quota or per-minute limit reached; see detail and Retry-After.
503
The service is restarting; retry in a minute.

Keep keys on your server, never in a web page or app that customers download. Each email can hold 3 keys.

Guidance from official lists, not legal advice. Rules change; confirm with DGFT, customs or the regulator before you trade. Results come with their sources and dates; show them to your users.