Eternal Search API v1

Open data on longevity funding and science: grants with solicitation documents, funding organizations, investors with dossiers, companies with evidence, heroes, projects, theories, the ideas graph. No key needed for any of it.

Base URL: https://eternalsearch.net/api/v1

OpenAPI 3.1 spec (machine-readable, start here for agents/tools): /api/v1/openapi (also at /openapi.json)

Docs as JSON: /api/v1/docs?format=json

AI-agent site map: /llms.txt

MCP server (add as a connector in Claude / ChatGPT / Cursor, no auth): https://eternalsearch.net/api/mcp

Omega Point through your agent: /omega-point/agents · spec /omega-point/api/agent/v1/openapi.json · MCP https://eternalsearch.net/api/mcp/omega-agent

Catalogue of holdings (how much we have, per family): /api/v1/catalogue

Nightly dataset dumps (NDJSON.gz per family): /datasets/index.json

Change feed for re-sync: /api/v1/changes?since=…

Developer landing page: /developers

Restricted-tier docs (Deep Intelligence): /api/v1/docs/intelligence

Licence and text policy

Data produced by Eternal Search (scores, rationale, extracted requirements, theories, summaries, the ideas graph) is licensed CC BY 4.0, attribution "Eternal Search (eternalsearch.net), powered by Open Longevity". Third-party texts we harvested keep their authors' rights: each record carries text_policy. full (public-domain, open-licence, press-wire or funder-hosted sources) returns the whole text; excerpt_only returns a short quotation plus the source URL. A team key returns full text for every row.

Anonymous requests: 600 per minute per IP (429 with Retry-After beyond that). Use the dumps for bulk access.

Authentication

Authorization: Bearer es_your_api_key_here

Every open endpoint works without a key. A team key (es_…) adds team-private working data (CRM, contacts, research jobs, pipeline state, emails) and full third-party text. The personal Deep Intelligence layer is served only to the Open Longevity team.

External Access

/api/v1 and /api/public send CORS headers and answer browser preflight requests. Configure allowed origins with API_ALLOWED_ORIGINS as * or a comma-separated allowlist.

Response Shapes

Open endpoints (no key)

PathAccessNotes
GET /catalogueopenRow counts per family, evidence sub-counts, API and dump URLs. Start here.
GET /changesopenRows updated since a moment; cursor via next_since.
GET /grantsopenscope=verified_open (site promise) | verified | all. Verification flags on every row.
GET /grants/{public_id}openDocuments with parsed text, extracted requirements with evidence, label relevance rationale, deep-read history.
GET /grants/{public_id}/documents/{id}openOne solicitation document.
GET /organizations, /organizations/{public_id}openFunders with labels, relevance rationale and their grants. contact_email needs a team key.
GET /investors, /investors/{public_id}openProfiles, capital estimates with sources, dossier, funding events, belief timeline, links. Emails/CRM need a team key.
GET /investors/{public_id}/contentopenHarvested posts, talks, interviews; text_policy per row.
GET /companies, /companies/{public_id}openAll 689 companies with publication_status; scores, per-dimension rationale, theories, evidence, dossier expansion.
GET /companies/{public_id}/publications | records | projects | funding | trialsopenPaginated evidence sub-resources.
GET /ratings/companies[/{public_id}]openAliases of /companies.
GET /ratings/preservation[/{public_id}]openEvery scored preservation company with the full evidence dossier.
GET /ratings/projects[/{public_id}], /ratings/fundsopenRated projects with per-dimension scores, rationale and evidence; rated funds.
GET /heroes, /heroes/{public_id}openScores, full dimension rationale, investments, donations, organizations founded, every source, beliefs.
GET /theories, /theories/clusters, /theories/{id}openTheories with Popperian evaluations, clusters, relationships.
GET /ideasopenCanonical ideas graph: nodes and paged relationships.
GET /taxonomy, /sponsors, /events, /search, /statsopenTaxonomy, sponsors, events, search, stats with catalogue totals.

Omega Point through your agent

The Omega Point engine breaks a research goal into open questions, competing hypotheses and deciding experiments. Through the agent door your agent starts a run, follows its status and hands you the published result; at present the run executes on our server from the engine to the titles, deduplication, explanations, question headings, translations and the Russian report (the status says run_mode server), up to three runs per person at a time. Russian versions are the user's choice. Skill package and Node connector at /omega-point/api/agent/v1/skill; remote MCP server at /api/mcp/omega-agent.

Team endpoints (Bearer key)

PathAccessNotes
GET /leads, /contacts, /pipeline, /crm, /crm/claimsteamWorking data of the key's team.
GET, POST /researchteamResearch jobs spend tokens: never open.
GET /intelligence/*restrictedDeep Intelligence personal layer; Open Longevity team only.

Example

curl "https://eternalsearch.net/api/v1/catalogue"
curl "https://eternalsearch.net/api/v1/grants?scope=all&limit=5"
curl "https://eternalsearch.net/api/v1/investors?is_person=true&q=aging"
curl "https://eternalsearch.net/api/v1/companies?publication_status=published&limit=5"

Research Job Example

{
  "grants_job": { "id": "uuid", "status": "pending", "job_type": "grants" },
  "events_job": { "id": "uuid", "status": "pending", "job_type": "events" }
}