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

GET/api/v1/bibtex?id=…

Raw BibTeX as application/x-bibtex; charset=utf-8.

GET/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.

Vaswani · “Attention Is All You Need” · 2017vaswaniAttentionAllYou2017

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 timeout

Errors 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.