Research API

Access the Blossom psychedelic research database programmatically. Papers, clinical trials, compounds, researchers, and co-authorship networks — available as JSON, CSV, and downloadable datasets for R, Python, and SPSS.

Quick Start

1. Authenticate

All API requests require a Clerk JWT. Sign in to Blossom, then use your session token in the Authorization header.

2. Make a request

curl -H "Authorization: Bearer YOUR_JWT" \
  "https://blossom.pub/api/v1/papers?limit=10&compound=psilocybin"

3. Get CSV for R/SPSS

curl -H "Authorization: Bearer YOUR_JWT" \
  "https://blossom.pub/api/v1/papers?format=csv&compound=psilocybin" \
  -o papers.csv

Endpoints

MethodPathDescriptionTier
GET/api/v1/papersList papers with metadata (paginated, filterable)free
GET/api/v1/papers/:slugSingle paper detail — Pro adds outcome measures & adverse eventsfree
GET/api/v1/trialsList clinical trials (paginated, filterable)free
GET/api/v1/trials/:slugSingle trial detail — Pro adds arms, dosing, eligibilityfree
GET/api/v1/compoundsList compounds with trial/paper countsfree
GET/api/v1/topicsList topics/indications with trial/paper countsfree
GET/api/v1/personsList researchers with affiliationsfree
GET/api/v1/journalsList journals with h-indexfree
GET/api/v1/networkCo-authorship network graph (nodes + edges)pro
GET/api/v1/evidence-matrixCompound × topic evidence matrixpro
GET/api/v1/downloadsList available dataset files for downloadfree

Query Parameters

All list endpoints support these query parameters:

ParameterDescription
limitResults per page (1–100, default 25)
cursorPagination cursor (use value from response meta.cursor)
compoundFilter by compound slug (e.g., psilocybin)
topicFilter by topic slug (e.g., depression)
sinceFilter by date (ISO 8601, e.g., 2024-01-01)
formatResponse format: json (default) or csv

Response Format

JSON responses follow a consistent envelope:

{
  "data": [ ... ],
  "meta": {
    "cursor": "abc123",
    "hasMore": true
  }
}

Code Examples

Python

import requests

headers = {"Authorization": "Bearer YOUR_JWT"}
resp = requests.get(
    "https://blossom.pub/api/v1/papers",
    params={"compound": "psilocybin", "limit": 50},
    headers=headers,
)
papers = resp.json()["data"]

R (httr2)

library(httr2)

resp <- request("https://blossom.pub/api/v1/papers") |>
  req_headers(Authorization = paste("Bearer", Sys.getenv("BLOSSOM_JWT"))) |>
  req_url_query(compound = "psilocybin", format = "csv") |>
  req_perform()

papers <- read.csv(textConnection(resp_body_string(resp)))

R (download CSV)

# Download a pre-generated dataset (daily updated)
papers <- read.csv("https://blossom.pub/api/v1/downloads/papers-metadata.csv",
                   na.strings = "NA", fileEncoding = "UTF-8-BOM")

Downloadable Datasets

Pre-generated datasets are refreshed daily. Available in CSV (R/SPSS compatible) and JSON formats. Use the /api/v1/downloads endpoint to list all available files with download URLs.

FileDescriptionTier
papers-metadata.csvAll papers: DOI, PMID, title, date, study type, authors, compounds, topicsfree
papers-outcomes.csvPer-arm outcome measures: timepoints, estimates, CIspro
papers-contrasts.csvBetween-group contrasts: effect sizes, p-valuespro
papers-adverse-events.csvPer-arm TEAE countspro
trials.csvAll trials: registry, phase, status, compound, sponsorfree
trials-detailed.csvTrials with eligibility, therapy, sitespro
persons.csvResearchers with affiliations and paper/trial countsfree
compounds.csvCompounds with pharmacology and countsfree
topics.csvIndications with prevalence and countsfree
evidence-matrix.csvCompound x topic evidence ratingspro
network.jsonCo-authorship network graphpro

Rate Limits

Free

100

requests / minute

Pro

500

requests / minute

CSV Conventions

All CSV files follow these conventions for compatibility with R, SPSS, JASP, and Excel:

  • UTF-8 with BOM (Windows Excel compatible)
  • Comma-delimited
  • NA for missing values (R convention)
  • ISO 8601 dates (YYYY-MM-DD)
  • Multi-value fields joined with semicolons (e.g., "compound1; compound2")
  • snake_case column names