Skip to main content
The MedDRA Explorer API gives you public, read-only access to the terminology catalog plus a classifier service that predicts MedDRA codes for narrative descriptions. All endpoints are hosted at https://api.meddra.co. Read-only catalog endpoints remain unauthenticated, while the classifier requires an API key header.

Base URL

https://api.meddra.co

Headers

HeaderPurposeDefault/Value
X-API-KeyAuthenticate requests to POST /classify.sk-<API_KEY>
X-API-VersionOpt into breaking API changes before they become the default.1
X-MedDRA-VersionPin requests to a specific MedDRA release.Latest release
Query/body parameters named version override the X-MedDRA-Version header. When both are supplied and disagree we honour the parameter and log a warning for observability.

Rate limits

We currently allow 120 requests per minute per IP. Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and Retry-After headers when you approach the threshold. Reach out to the team if you need higher limits for production ingestion.

Error handling

All errors return JSON payloads with a consistent structure:
{
	"type": "https://docs.meddra.co/problems/validation",
	"title": "Validation error",
	"status": 400,
	"detail": "Query parameter \"against\" is required.",
	"code": "VALIDATION_ERROR",
	"requestId": "req_01JABCD123",
	"errors": {
		"against": ["Query parameter \"against\" is required."]
	}
}
  • VALIDATION_ERROR – malformed payloads, unsupported parameters, or missing required fields. Inspect the errors object for field-level feedback.
  • CODE_NOT_FOUND / VERSION_NOT_FOUND – resources such as codes, versions, or hierarchy nodes do not exist in the requested release.
  • RATE_LIMITED – too many requests. Respect the retryAfter, limit, and reset values before retrying.
  • INTERNAL_ERROR – unexpected failures. Capture the requestId when contacting support.

Version coverage

We mirror official MedDRA releases as they become available. Use GET /versions to inspect the currently hosted set and access metadata like release date and change counts.

Pagination

Collection responses (such as /codes, /versions, and synonym lists) include an _meta object with pagination details:
{
	"items": [{ "code": "10048801", "term": "Anaphylactic reaction" }],
	"_meta": {
		"page": 1,
		"limit": 20,
		"total": 148,
		"next": "?page=2&limit=20",
		"previous": null
	}
}
Use the next and previous link targets to build pagination controls without recomputing query strings—when a link is null, there are no further pages in that direction.

Examples

# List MedDRA releases
curl https://api.meddra.co/versions

# Search for Preferred Terms in the latest release
curl "https://api.meddra.co/codes?q=neutropenia&limit=10"

# Classify an event narrative against MedDRA 28.1
curl -X POST https://api.meddra.co/classify \
  -H "X-API-Key: sk-<API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Grade 2 neutropenia with fatigue and fever.",
    "assessments": {
      "meddra": {
        "enabled": true,
        "version": "28.1"
      },
      "seriousness": {
        "enabled": true
      },
      "severity": {
        "enabled": true,
        "systems": ["5-level", "3-level"]
      }
    }
  }'
I