Haven
API Documentation

Integrate Haven into your procurement stack.

The Haven REST API gives programmatic access to current catalog endpoints, shortage alerts, and the RFQ workflow. Available on Team and Enterprise plans.

Request API accessTalk to the team

Authentication

All API requests require a bearer token. Generate API keys from Portal → Settings → API Keys. Include the key in the Authorization header:

Authorization: Bearer hav_live_your_api_key_here

Base URL

https://havenlifesciences.com/api/v1

Endpoints

GET
/api/v1/drugs

List current catalog product records with optional filters (category, shortage flag, country approval). Paginated. Endpoint name is retained for compatibility.

Scope: drugs:read

GET
/api/v1/drugs/:id

Full catalog product record including formulation or pack details, identifiers, and approval status by jurisdiction.

Scope: drugs:read

GET
/api/v1/drugs/search

Full-text search across product name, identifiers, active ingredient where applicable, and product class.

Scope: drugs:read

GET
/api/v1/shortages

List catalog items currently flagged as shortage-status. Filterable by category and jurisdiction.

Scope: shortages:read

GET
/api/v1/compliance/:drugId

Approval or review status for a catalog product across tracked jurisdictions.

Scope: drugs:read

POST
/api/v1/rfq

Create an RFQ from your ERP. Body currently uses the compatibility field { drugId, quantity, currency, deliveryCountry }.

Scope: rfq:write

GET
/api/v1/rfq/:id

Get the current status and supplier quotes for a previously submitted RFQ.

Scope: rfq:read

Example: search for alternatives

curl -X GET \
  "https://havenlifesciences.com/api/v1/drugs/search?q=vancomycin&shortage=true" \
  -H "Authorization: Bearer hav_live_your_api_key_here" \
  -H "Accept: application/json"

Returns a paginated list of catalog records matching the query with shortageFlag: true.

Rate limits

Default limit is 60 requests per minute per API key. Enterprise plans can request higher limits. Rate limit headers are returned with every response:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1750000000