For developers
last changed 2026-10-20
The record's addresses
Every page of the site is drawn from answers the record gives at these addresses, as JSON, to a plain GET. They need no key and no account, and the removal of a person applies to them as it does to the pages. Most take root, a person's id as the search lists it: a Wikidata item such as Q7186, an OpenAlex author, or a person a repository names. Where an address takes several people, their ids are joined by |.
https://academicancestry.org/api/lineage?root=Q7186
Each reader gets 120 answers a minute across all of these addresses, counted by the network address they ask from, and is told to wait past that. An assistant's calls are counted against its account instead. An answer that is not a 200 says why in its error: 400 for a parameter not sent, 410 for a person who asked not to be shown, 429 past the minute, 502 where a source did not answer. CloudFront, the network in front of the site, keeps a 200 for a day; the last column says which are never kept.
| address | takes | answers | kept a day |
|---|---|---|---|
| /api/resolve | q, and optionally more, openalex, source, country, institution, since, until, level | ranked candidates by name and works by title, and which sources did not answer | no |
| /api/current | of, ids joined by | | the id each person is under now, where the record has since joined their ids | yes |
| /api/person | root | one person whole: their theses, those they supervised and sat beside, the ORCID iDs the record gives them, and the runs | yes |
| /api/thesis | source, as /api/sources lists it, and id, the thesis record's OAI identifier | one thesis whole: its title, year, level, school, landing page and file, the people on it by role with the kind of each link, and, where it names no supervisor, why | yes |
| /api/works | id, a person as the search lists them | the works and theses the repositories' records list them as an author of, the newest first: each with its type as served, the category read from it and whether that reading has been checked, their place among its authors, its landing page and DOI, and how many there are from how many sources | yes |
| /api/work | source, as /api/sources lists it, and id, the work record's OAI identifier | one work whole: its title, year, type, category, landing page, DOI and file, and its authors by place with the ids the record gives them | yes |
| /api/claimed | id, a person as the search lists them | the works ORCID lists under their ORCID iDs, their own word, kept apart from the record's works and never counted with them | yes |
| /api/lineage | root | advisors up and students down, each link with its kind, level and run | yes |
| /api/advisors | root | the supervisors of their own doctoral thesis | yes |
| /api/advised | root | their own doctoral students, with the year of each thesis | yes |
| /api/alongside | root | the people who studied under their supervisors | yes |
| /api/group | root, rule (circle, examiners, together or panel), most | the people the rule ranks around them, with the theses they share | yes |
| /api/beside | root | who sat on, refereed or examined the theses of their lineage, by role | yes |
| /api/around | ids joined by | | everyone around each person, in every role the thesis record names | yes |
| /api/theses | root, a Wikidata item | what Wikidata says of the thesis behind each link of the lineage | yes |
| /api/institutions | root | where the people of the lineage studied or worked | yes |
| /api/coauthors | root | the people who share the most works with them, from OpenAlex | yes |
| /api/citations | root | the authors they cite most and are cited by most, from OpenAlex | yes |
| /api/mentors | root | teachers and mentors above and the taught below, pairs read by hand marked likely | yes |
| /api/neighbours | root, a Wikidata item | a person's advisors and students on Wikidata, one step away | yes |
| /api/above | root | the line above a person, four steps of advisors in the record and on Wikidata, each kind apart, and how many stand below within three steps | yes |
| /api/facts | root, a Wikidata item | what Wikidata states of the person | yes |
| /api/papers | root | their papers from OpenAlex, under a key the record holds for them | yes |
| /api/paper | root, an OpenAlex work | one paper whole | yes |
| /api/training | root, an OpenAlex author | the degree, school and year Medicare's list of clinicians holds under their name, said to be unconfirmed | yes |
| /api/term | q, and optionally field, from | a term's curve by year, its fields and its early adopters | yes |
| /api/phrase | root, as term: and the phrase | a term's curve and fields as a card asks for them | yes |
| /api/connect | a and b, or ids joined by | | the routes between two to six people, the ten between a pair | yes |
| /api/ties | ids joined by |, level | the fewest routes that tie two to six people together, each hop naming its kind, run and level | yes |
| /api/evidence | nothing | the line a model read off the thesis for each extracted link | yes |
| /api/schools | nothing | every school with its doctorates, the doctors followed from it and where they went on | yes |
| /api/school | id, and optionally to | one school's flows; with to, the people of the flow to that school | yes |
| /api/sources | nothing | the sources read, with their runs, records and relations, and the others by status | yes |
| /api/coverage | nothing | where the record stops, counted: supervisions with both people linked to other records, by source, country and decade | yes |
| /api/gates | nothing | every check a reading of the sources was held to: what it read, when, its sample, how many agreed, its score, the bar and whether it passed | yes |
| /api/counts | nothing | what the record holds: theses, sources, countries and Wikidata's statements, each naming its run | yes |
| /api/picks | nothing | the newest picks run: the landing's lists | yes |
| /api/browse | source, with decade and institution, or field | the advisors with the most cited doctoral students in that slice | yes |
| /api/fields | nothing | every field the newest picks run offers | yes |
| /api/pair | nothing | the day's pair of advisors and the route between them | no |
| /api/surprise | nothing | one person at random | no |
| /api/tonight | nothing | what last night's runs brought, a source a line | yes |
the table is wider than the screen: slide it sideways to read every column.
Pages for a person or a thesis
A person has a page at /person/ID, where ID is the id the search lists for them, the one the addresses above take as root. A thesis has a page at /thesis/SOURCE/ID, where SOURCE is the repository the thesis record is from, as /api/sources lists it, and ID the thesis record's OAI identifier. Add /jsonld to either address and the same page comes as schema.org data (JSON-LD). Like the addresses above, these answer a plain GET and need no key.
| address | answers |
|---|---|
| /thesis/SOURCE/ID | a thesis's page: its title, where it is held, and the people on it by role, each with the kind of the link |
| /person/ID/jsonld | a person's page as schema.org data: their name, their theses and the registers the record links them to |
| /thesis/SOURCE/ID/jsonld | a thesis's page as schema.org data: its title, where it is held, its author and each person on it with their role and the kind of the link |
the table is wider than the screen: slide it sideways to read every column.
An address of a person the record links to Wikidata or OpenAlex holds; any other may move when the record reads a name differently, and the old address then says where the person went. How many of the people in the record are linked to another register is counted every night, and said on the coverage page.
Your assistant
An assistant can ask the record for you. It has 13 tools, which answer what the pages answer: who taught whom, how two people are related, and where the record stops. All but the last is a call to one of the addresses above, made in your name, so a person who asked not to be shown is not shown to an assistant either. The last, report_missing, posts to /api/missing what the form at /missing sends, of a missing advisor or, with kind work, of a missing work.
| tool | asks |
|---|---|
| find_person | ranked candidates for a name, with the facts that tell them apart |
| person | one person whole: theses, roles held, Wikidata's facts |
| lineage | advisors up, students down, each link with its kind and run |
| relation_between | the shortest routes between two people, or where the record stops |
| ties | the fewest routes that tie two to six people together |
| around | everyone beside the lineage: committees, coauthors, teachers |
| students_of | a person's own doctoral students, with the year of each thesis |
| schools | the schools the record follows doctors from, counted and filtered |
| school | one school's flows: where its doctors went on to supervise |
| coverage | where the record stops for a person |
| sources | the sources read and the ones known and not read |
| evidence | the line a model read off a thesis for an extracted link |
| report_missing | a missing advisor or a missing work reported, the one tool that writes |
the table is wider than the screen: slide it sideways to read every column.
Add the connector at the address of the provider you sign in with. ORCID is the one to pick: the identity academics already hold. In Claude, on the web or in the desktop app, open Settings, then Connectors, then "Add custom connector", paste the address, and press Connect. It sends you to that provider's sign-in page, and after that the tools answer in your conversations.
ORCID · https://academicancestry.org/mcp/orcid/
Google · https://academicancestry.org/mcp/google/
GitHub · https://academicancestry.org/mcp/github/
A command-line tool or a script cannot sign in through a browser, so it carries a key instead. Make one on your account page: it is shown once. Send it as a bearer token in the Authorization header to any of the three addresses, and every answer it asks for is counted under your account. In Claude Code, one line adds the connector:
claude mcp add --transport http academic-ancestry https://academicancestry.org/mcp/orcid/ --header "Authorization: Bearer YOUR KEY"
replace YOUR KEY with the key you made. The address ends in a slash; keep it.
Allowances
Each account has a daily allowance, counted until midnight UTC: on the free plan 1,000 answers and 100 searches of OpenAlex's authors, and on the institution plan 10,000 answers and 1,000 searches. A key counts against the account that made it, with that account's connector, and an account holds 5 live keys at once. When an allowance is used up, the refusal names the number. An institution that needs more writes to academicancestry@proton.me, and its plan is set by hand.
Terms and the notice
The terms for accounts say what an account may be used for, and the privacy notice says what the site shows about the people it names and what it records of its readers. The tools are for asking questions, not for copying the record whole.
The data
The record's supervisions as files, for a program that wants them whole and not a question at a time, are not published yet; until they are, the addresses above are the way in.
Citing
To cite the site, give its name and address, Academic Ancestry, https://academicancestry.org, and the day you read it. To cite a number, give the run it names: the answers and the pages name the runs they were read in. Where a link rests on a source, cite that source too; the sources lists each one.