Amass API Overview
The Amass API gives you programmatic access to Amass Cores — curated and enriched life sciences datasets.
Base URL
https://api.amass.tech/api/v1Interactive docs: https://platform.amass.tech/api-reference
OpenAPI spec: https://api.amass.tech/api/doc/openapi.json
What are Cores?
Cores are the primary data products in the Amass platform. Each Core covers a distinct domain and exposes its own set of endpoints under /v1/cores/{coreName}/.
| Core | Path | Description | Status |
|---|---|---|---|
| BiomedCore | /cores/biomedcore | 39M+ biomedical citations sourced from PubMed and PMC with citation counts, journal quality indicators, and enriched metadata. Updated daily. | Available |
| TrialCore | /cores/trialcore | 575K+ clinical trial records sourced from ClinicalTrials.gov. Covers trial protocols, eligibility, endpoints, sponsors, recruitment status, and results. Updated daily. | Available |
| DrugCore | /cores/drugcore | 22K+ harmonized drug and molecule records sourced from ChEMBL. Covers names, trade names, synonyms, modality, clinical stage, and chemical structure, cross-linked to trials and literature. | Available |
| RegulatoryCore | /cores/regulatorycore | Cross-agency drug regulatory authorizations from the FDA (US) and EMA (EU), normalized onto a shared schema — unified authorization status, procedure type, and regulatory designations on common comparison axes. Updated weekly. | Available |
All Cores share the same authentication, error format, and rate limits. Endpoints and record schemas are specific to each Core.
Pagination
The API does not support cursor-based or offset pagination. Each search request returns up to 300 results via the limit parameter. To retrieve the most relevant results, use specific queries and filters to narrow your search rather than paging through large result sets.
Shared Endpoint Patterns
Every Core follows the same three-endpoint pattern:
| Endpoint | Method | Description |
|---|---|---|
/cores/{core}/records | GET | Search records with filters |
/cores/{core}/records/{amassId} | GET | Get a single record by Amass ID |
/cores/{core}/records/lookup | POST | Convert external IDs to Amass IDs in batch |
Errors
All errors follow the same shape across all Cores:
{
"error": {
"status": 400,
"code": "BAD_REQUEST",
"message": "Human-readable description"
}
}Validation errors include per-field details:
{
"error": {
"status": 400,
"code": "BAD_REQUEST",
"message": "Validation failed",
"in": "query",
"fields": { "limit": "Must be between 1 and 300" }
}
}| Status | Code | Meaning |
|---|---|---|
| 400 | BAD_REQUEST | Invalid parameters |
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | Valid key but insufficient permissions |
| 404 | NOT_FOUND | Record not found |
| 422 | UNPROCESSABLE_ENTITY | Semantically invalid input |
| 429 | TOO_MANY_REQUESTS | Rate limited |
| 500 | INTERNAL_SERVER_ERROR | Server error |
Rate Limits
Rate limits apply across all Cores.
Default: 60 requests per 60-second window, keyed by user + organization.
Every response includes these headers:
| Header | Example | Description |
|---|---|---|
X-RateLimit-Limit | 60 | Requests allowed per window |
X-RateLimit-Remaining | 55 | Requests left in current window |
X-RateLimit-Reset | 2030-01-01T00:00:10Z | When the window resets |
When you hit the limit you get a 429 with a Retry-After header (seconds). Implement exponential backoff — see the Quickstart for an example.
Next Steps
- Quickstart — Make your first API call in under a minute
- Authentication — Set up your API key
- BiomedCore — Search biomedical literature
- TrialCore — Search clinical trials
- DrugCore — Search drugs and molecules
- RegulatoryCore — Search FDA & EMA drug authorizations
- API Workflows — Real-world queries with example responses
- LLM Quick Reference — Compact reference for AI agents