API v1.0 All systems operational

Axo Health API

Structured clinical medication data for healthcare apps. Access FDA drug data, limited distribution requirements, and patient assistance programs via REST, GraphQL, and MCP.

763
Drug master records
761
LDD records
888
PAP records
2,412
Total records
Updated June 2026
DatasetEndpointRecordsDescription
axo_drugs/v1/drugs763FDA-approved specialty drugs
ldd/v1/ldd761Limited distribution / REMS
pap/v1/pap888Patient assistance programs

Base URL: https://api.axohealth.co

Authentication

All endpoints (except /health) require an API key passed in the x-api-key request header.

To get an API key, contact hello@axohealth.co. Keys are provisioned manually and follow the format axo_XXXXXXXXXXXXXXXXXXXXXXXX.
HTTPRequest headers
GET /v1/drugs HTTP/1.1 Host: api.axohealth.co x-api-key: axo_YOUR_API_KEY

Quickstart

JavaScript / Node.js

JavaScript
const res = await fetch( 'https://api.axohealth.co/v1/drugs?limit=10', { headers: { 'x-api-key': 'axo_YOUR_KEY' } } ); const data = await res.json(); console.log(data.data[0].drug_name); // ABECMA

Python

Python
import requests resp = requests.get( 'https://api.axohealth.co/v1/drugs', params={'limit': 10}, headers={'x-api-key': 'axo_YOUR_KEY'} ) data = resp.json() print(data['data'][0]['drug_name'])

cURL

cURL
curl 'https://api.axohealth.co/v1/drugs?limit=5' \ --header 'x-api-key: axo_YOUR_KEY' | python3 -m json.tool

GET /v1/drugs

GEThttps://api.axohealth.co/v1/drugs

FDA-approved specialty drugs with clinical metadata, RxNorm codes, and cross-dataset flags.

Query Parameters

ParamTypeDefaultDescription
limitinteger100Results per page (max 1000)
offsetinteger0Pagination offset
drug_namestringExact match on brand or generic name (case-insensitive)
rxcuistringMatch on rxcui_brand or rxcui_ingredient
searchstringBroad text search across all fields
versionstringDated snapshot e.g. 20260609

Lookup Examples

HTTPSingle drug lookups
# By brand name (exact, case-insensitive) GET /v1/drugs?drug_name=KEYTRUDA # By generic name GET /v1/drugs?drug_name=pembrolizumab # By RxNorm brand CUI GET /v1/drugs?rxcui=2049106 # By RxNorm ingredient CUI (same param — matches either) GET /v1/drugs?rxcui=1276186 # Broad search across all fields GET /v1/drugs?search=myeloma

Response Schema

FieldTypeDescription
dataarrayArray of drug records
totalintegerTotal matching records
limitintegerPage size used
offsetintegerCurrent offset
has_morebooleanMore pages available

Example Response

JSON
{ "data": [ { "gdi": "GDI-000001", "drug_name": "ABECMA", "generic_name": "idecabtagene vicleucel", "therapeutic_category": "Oncology - Multiple Myeloma CAR-T", "manufacturer": "Bristol Myers Squibb", "rxcui_brand": "2536435", "rxcui_ingredient": "2536430", "in_ldd": "FALSE", "in_pap": "TRUE" } ], "total": 763, "limit": 100, "offset": 0, "has_more": true }

GET /v1/ldd

GEThttps://api.axohealth.co/v1/ldd

Limited distribution drug channels — authorized specialty pharmacies, REMS programs, and hub networks for drugs with restricted access.

Query Parameters

ParamTypeDescription
limitintegerResults per page (max 1000)
offsetintegerPagination offset
drug_namestringExact match on brand or generic name
rxcuistringMatch on rxcui_brand or rxcui_ingredient
searchstringBroad text search across all fields
versionstringDated snapshot e.g. 20260609

Lookup Examples

HTTP
# All distribution channels for a specific drug GET /v1/ldd?drug_name=KEYTRUDA # Find by RxNorm CUI GET /v1/ldd?rxcui=2049106 # Search for all REMS drugs GET /v1/ldd?search=REMS

GET /v1/pap

GEThttps://api.axohealth.co/v1/pap

Manufacturer patient assistance program eligibility data — copay cards, free drug programs, and vouchers.

Query Parameters

ParamTypeDescription
limitintegerResults per page (max 1000)
offsetintegerPagination offset
drug_namestringExact match on brand or generic name
rxcuistringMatch on rxcui_brand or rxcui_ingredient
searchstringBroad text search across all fields
versionstringDated snapshot e.g. 20260609

Lookup Examples

HTTP
# All PAP programs for a specific drug GET /v1/pap?drug_name=HUMIRA # Find by RxNorm CUI GET /v1/pap?rxcui=327361 # Search for copay card programs GET /v1/pap?search=copay

GET /v1/stats

GEThttps://api.axohealth.co/v1/stats

Returns live dataset record counts and metadata. Requires API key.

JSONResponse
{ "datasets": { "axo_drugs": { "count": 763, "updated_at": "2026-06-09T..." }, "ldd": { "count": 761, "updated_at": "2026-06-09T..." }, "pap": { "count": 888, "updated_at": "2026-06-09T..." } } }

POST /graphql

POSThttps://api.axohealth.co/graphql

Query any dataset using GraphQL. Supports drugs, ldd, pap, and stats queries with limit, offset, and search arguments.

Example Query

GraphQL
POST https://api.axohealth.co/graphql x-api-key: axo_YOUR_KEY Content-Type: application/json { "query": "{ drugs(limit: 5, search: \"KEYTRUDA\") { gdi drug_name generic_name } }" }

Available Queries

QueryArgumentsDescription
drugslimit, offset, searchDrug master records
lddlimit, offset, searchLDD channel records
paplimit, offset, searchPAP program records
statsRecord counts per dataset

MCP Server

○ MCP server at mcp.axohealth.co — coming soon. The /mcp endpoint on api.axohealth.co is available now for direct tool calls.

Use Axo Health with Claude, Cursor, or any MCP-compatible AI assistant via the /mcp endpoint.

Direct MCP Endpoint (Available Now)

HTTP
POST https://api.axohealth.co/mcp x-api-key: axo_YOUR_KEY Content-Type: application/json {"method": "tools/list"}

Available Tools

ToolDescription
query_drugsSearch the drug master database
query_lddQuery limited distribution drug records
query_papQuery patient assistance program records
get_statsGet dataset record counts

Claude Desktop Config

JSON~/.config/claude/claude_desktop_config.json
{ "mcpServers": { "axohealth": { "url": "https://api.axohealth.co/mcp", "headers": { "x-api-key": "axo_YOUR_KEY" } } } }

Versioning

Every dataset upload creates a dated snapshot. You can query any historical version by passing a version parameter.

HTTP
# Current data (default) GET /v1/drugs?limit=10 # Specific snapshot GET /v1/drugs?limit=10&version=20260609 # Version in response { "data": [...], "total": 763, "version": "20260609" }

Version strings are in YYYYMMDD format. Contact support to get a list of available snapshots for your account.

Pricing

Sandbox
Free forever
  • 100 requests/day
  • All 3 datasets
  • REST + GraphQL
  • MCP access
Scale
$2,000/month
  • Unlimited requests
  • All datasets
  • REST + GraphQL + MCP
  • CSV downloads
  • Priority support
  • Version history access
To get an API key or upgrade your plan, contact hello@axohealth.co.

Error Codes

CodeMeaning
200Success
401Invalid or missing API key
404Endpoint or snapshot not found
500Internal server error
JSONError response
{ "error": "Invalid or expired API key" }