API version 1
One small API, no key required.
Resolve one scholarly identifier at a time. Responses are CORS enabled, cacheable, and limited to 100 conversions per client every 15 minutes.
Endpoints
/api/v1/bibtex?id=…Raw BibTeX as application/x-bibtex; charset=utf-8.
/api/v1/resolve?id=…Structured JSON with the normalized input, DOI, citation key, BibTeX, source URL, and algorithm version.
Both endpoints also support HEAD and CORS OPTIONS. See the machine-readable OpenAPI document.
Examples
curl
curl --get 'https://doi2bbt.org/api/v1/bibtex' \
--data-urlencode 'id=10.1038/187493a0'Python
import requests
response = requests.get(
"https://doi2bbt.org/api/v1/resolve",
params={"id": "10.1038/187493a0"},
timeout=20,
)
response.raise_for_status()
citation = response.json()
print(citation["citation_key"])
print(citation["bibtex"])Agents
GET https://doi2bbt.org/api/v1/resolve?id={url_encoded_identifier}
Accept: application/json
Use citation_key when citing the work.
Use bibtex when updating a .bib file.
If status is 422, report that the record has no associated DOI.Citation keys
Version bbt-default-v1 freezes the Better BibTeX default base formula at auth.lower + shorttitle(3,3) + year. It uses the first author’s family name (or editor fallback), the first three significant title words, and the publication year.
Diacritics and many Greek/Cyrillic characters are folded to ASCII on a best-effort basis. doi2bbt has no library context, so it does not add collision suffixes such as a or b. Two records can therefore produce the same base key. Metadata corrections upstream may change a key after the 24-hour cache expires.
doi2bbt changes only the entry key of DOI-provided BibTeX. It is not a replacement for Better BibTeX’s full Zotero exporter.
Errors
400 malformed input404 unknown identifier422 valid record, no DOI429 quota exceeded502 unusable upstream response504 upstream timeoutErrors use application/problem+json and include a concise, user-safe detail.
Privacy, sources, and credits
There are no accounts, cookies, analytics, saved searches, or stored bibliographies. Short-lived quota counters contain only a daily salted hash of the connecting address; raw addresses are never stored and counters expire within 24 hours.
Metadata comes from DOI content negotiation. PMID and PMCID lookups use NCBI services; arXiv lookups use the arXiv API and fall back to the record's canonical DataCite DOI. This service is not endorsed by or affiliated with DOI Foundation, Crossref, DataCite, NCBI, arXiv, Zotero, Better BibTeX, or doi2bib. Availability depends on those upstream services.
The interaction is intentionally inspired by doi2bib. Citation-key behavior is independently implemented from the documented defaults of Better BibTeX. The source is available under the MIT License on GitHub.