Quick reference for endpoints, parameters, examples, and headers. New to the API? Start with the Citation API overview for what it does and a quickstart, then come back here for the full reference. See the glossary for definitions of the identifier types and export formats referenced below.
Fork the Scholar Sidekick collection into your own Postman workspace to run live requests against the API.
Or browse the verified Scholar Sidekick public workspace on Postman directly - fork the collection, run requests against the live API, or share it with your team.
All endpoints are relative to your deployment origin. See /api/health for a quick status snapshot.
OpenAPI specs: /openapi/openapi.yml (public) and /openapi/rapidapi/openapi.yml (RapidAPI).
GET /api/health POST /api/format POST /api/format/stream (NDJSON) POST /api/format-items POST /api/export POST /api/verify (citation verifier) POST /api/audit (bibliography audit) POST /api/retraction-check POST /api/oa-check
Formats a list of identifiers (DOI / PMID / PMCID / ISBN / ISSN / arXiv / ADS bibcode / WHO IRIS). Detects and normalises automatically.
POST /api/format
Content-Type: application/json
{
"text": "10.1038/nphys1170\nPMID: 34812345\n9780306406157",
"style": "vancouver", // or "ama" | "apa" | "ieee" | any CSL style id (e.g., "chicago-author-date")
"locale": "en-US", // optional CSL locale (e.g., "en-GB")
"output": "text", // "text" | "html" (CSL)
"footnotes": false // when output=html, render as footnotes
}200 OK
X-Scholar-Cache: ENABLED|BYPASS
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1736569200
{
"ok": true,
"items": [
{ "ok": true, "formatted": "Doe J, ..." , "_source": { "id": "10.1038/nphys1170", "fetchedAt": "..." } },
{ "ok": false, "error": "PMID not found" }
]
}curl -sS -X POST https://scholar-sidekick.com/api/format \
-H "Content-Type: application/json" \
-d '{"text":"10.1038/nphys1170","style":"vancouver","output":"text"}'Anonymous calls work for evaluation - see pricing & limits below.
Streams events: start → item → done.
curl -N -sS -X POST https://scholar-sidekick.com/api/format/stream \
-H "Content-Type: application/json" \
-d '{"text":"10.1038/nphys1170\nPMID:34812345","style":"apa","output":"html"}'Like /api/format but accepts already-resolved CSL JSON items.
Exports to TXT, BibTeX, RIS, CSL JSON, EndNote (Refer/XML), RefWorks, MEDLINE, CSV, Zotero RDF.
Print to stdout:
curl -sS -X POST https://scholar-sidekick.com/api/export \
-H "Content-Type: application/json" \
-d '{"text":"10.1038/nphys1170\n9780306406157","format":"ris","style":"vancouver"}'Or save to a file:
curl -sS -X POST https://scholar-sidekick.com/api/export \
-H "Content-Type: application/json" \
-d '{"text":"10.1038/nphys1170\n9780306406157","format":"ris","style":"vancouver"}' \
> citations.risChecks whether a claimed citation matches the record its identifier resolves to - catching the dominant AI-era fabrication pattern (a real, resolving DOI paired with a fabricated title). Returns a verdict of matched | mismatch | ambiguous | not_found, each with a confidence tier. The verdict is the answer: 200 OK on every produced verdict; 4xx/5xx only for protocol errors.
claimed.title is required; an identifier is optional but recommended. Known limitations are published at /citation-integrity/known-failures.md.
POST /api/verify
Content-Type: application/json
{
"claimed": {
"title": "A Novel Deep Learning Framework for Real-Time Citation Verification",
"authors": [{ "family": "Chen", "given": "F" }], // optional
"year": 2023, // optional
"container": "Neuroscience", // optional
"doi": "10.1016/S0140-6736(26)00603-3" // optional identifier (doi/pmid/pmcid/isbn/arxiv/issn/ads)
}
}200 OK
X-Scholar-Verify-Verdict: mismatch
X-Scholar-Verify-Confidence: high
X-Scholar-Verify-Version: 2026-05-26
{
"ok": true,
"verdict": "mismatch",
"confidence": "high",
"matched": {
"title": "Fabricated citations: an audit across 2.5 million biomedical papers",
"DOI": "10.1016/S0140-6736(26)00603-3",
"type": "article-journal"
},
"mismatches": [
{ "field": "title", "claimed": "A Novel Deep Learning Framework...", "resolved": "Fabricated citations...", "similarity": 0.12 }
],
"_provenance": { "stages_run": ["compare"], "resolved_via": "crossref" }
}curl -sS -X POST https://scholar-sidekick.com/api/verify \
-H "Content-Type: application/json" \
-d '{"claimed":{"title":"A Novel Deep Learning Framework for Real-Time Citation Verification","doi":"10.1016/S0140-6736(26)00603-3"}}'Resolves a single identifier (DOI / PMID / PMCID / arXiv / ADS bibcode) to a DOI and returns its retraction / correction / expression-of-concern status, sourced from Crossref updated-by (Retraction Watch). Takes a single id; result is null when no DOI could be resolved.
200 OK
{
"ok": true,
"doi": "10.1056/nejmoa2033700",
"result": {
"isRetracted": false,
"hasCorrections": false,
"hasConcern": false,
"notices": [],
"title": "Efficacy and Safety of the mRNA-1273 SARS-CoV-2 Vaccine"
}
}curl -sS -X POST https://scholar-sidekick.com/api/retraction-check \
-H "Content-Type: application/json" \
-d '{"id":"10.1056/nejmoa2033700"}'Resolves a single identifier to a DOI and returns its open-access status, sourced from Unpaywall - OA status (gold/green/hybrid/bronze/closed), the best legal landing / PDF URL, license, and version when available.
200 OK
{
"ok": true,
"doi": "10.1038/s41586-020-2649-2",
"result": {
"isOa": true,
"oaStatus": "hybrid",
"title": "Array programming with NumPy",
"bestLocation": {
"url": "https://www.nature.com/articles/s41586-020-2649-2.pdf",
"hostType": "publisher",
"license": "cc-by",
"version": "publishedVersion"
},
"locations": []
}
}curl -sS -X POST https://scholar-sidekick.com/api/oa-check \
-H "Content-Type: application/json" \
-d '{"id":"10.1038/s41586-020-2649-2"}'X-Scholar-Cache: BYPASS or ENABLEDX-RateLimit-* + Retry-After (HTTP 429 on excess)./api/format/stream; exporter returns appropriate Content-Type + Content-Disposition.Anonymous calls work without a key at the lowest rate-limit tier. For higher limits, create a free first-party API key at /account and send it as Authorization: Bearer ssk_…. For a monthly quota and paid/managed tiers, Scholar Sidekick is also on RapidAPI; the BASIC tier there is free.
| Tier | Price | Requests / month | Then |
|---|---|---|---|
| BASIC | Free ($0 / mo) | 500 | $0.001 each |
| PRO | $9 / mo | 10,000 | $0.001 each |
| ULTRA | $49 / mo | 100,000 | $0.0008 each |
| MEGA | $199 / mo | 500,000 | $0.0005 each |
All tiers include 10,240 MB/month of bandwidth, then $0.001/MB. A call to any endpoint counts as one request.
Per-IP burst protection runs alongside the monthly quota and scales with tier (BASIC base, PRO ×2, ULTRA ×4, MEGA ×8). Each response carries IETF RateLimit-* and legacy X-RateLimit-* headers plus Retry-After on 429 so you can pace from the client.
Yes. The Scholar Sidekick citation API is free for light, anonymous use with no key. A free first-party key raises the rate limit, and paid tiers add a higher monthly quota; every tier has the full feature set.
POST the DOI to /api/format with a style, and the API returns a formatted citation. The same endpoint resolves PMID, PMCID, ISBN, ISSN, arXiv ID, and ADS bibcode — it detects and normalises the identifier type automatically.
Yes. Scholar Sidekick is a REST API and an open-source MCP (Model Context Protocol) server, so Claude, ChatGPT, Cursor, and custom agents can call it directly. Output is deterministic and version-pinned, so identical input returns identical bytes.
Anonymous access works with no key at the lowest sliding-window tier. For higher limits, create a free key (prefixed ssk_) at /account and send it as an Authorization: Bearer header. Paid/managed tiers are available via RapidAPI. Scholar Sidekick does not use OAuth.
POST to /api/export to get BibTeX, RIS, EndNote XML, RefWorks, MEDLINE/NBIB, Zotero RDF, CSL-JSON, or CSV. You can pass raw identifiers or already-resolved CSL-JSON items.