For developers

build

Read the same data as View data from your own code, or connect an AI agent over MCP. Both are read-only and always return the latest extraction run for each paper and gene.

Authentication

Send the lab API key in the X-API-Key header on every request except /health. Ask Dr. Mandel for the key.

export API_URL="https://mandel.jasonlo.dev"
export API_KEY="<lab api key>"

curl -H "X-API-Key: $API_KEY" "$API_URL/health"
GET/papers/{pmid}Paper metadata plus its extracted genes, with aliases.
GET/papers?doi=… | pmc_id=…The same paper payload, looked up by DOI or PMC ID.
GET/genesGene records across papers. Filter by name, locus_tag, exact, any has_* flag, or any extracted field. Paged with limit and offset.
GET/search?q=…Substring search over paper metadata and every gene text field.
GET/healthLiveness check. No key needed.

Repeat a field to match any of several values; different fields must all match. Paged responses return {items, total, next}. Follow next until it is null.

# One gene, exact name
curl -H "X-API-Key: $API_KEY" "$API_URL/genes?name=luxR&exact=true"

# Altered in squid colonization AND reduced motility
curl -H "X-API-Key: $API_KEY" \
  "$API_URL/genes?squid_monocolonization=yes&motility_mutant_impact=down"

# A paper and all its genes
curl -H "X-API-Key: $API_KEY" "$API_URL/papers/15901683"

Tip: the API line on View data shows the request for whatever filters you have set.