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" | "cse" | any CSL style id
"lang": "en-US", // optional locale; "locale" is accepted as an alias
"output": "text", // "text" | "html" | "json"
"footnote": false, // CSL styles only; builtin styles always report false
"nocache": false // optional; bypass the cache for this request
}
// Send identifiers one per line in "text", or use "lines": ["…", "…"] instead.
// Unrecognised keys are rejected — the body is validated strictly.200 OK
X-Scholar-Cache: ENABLED|BYPASS
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1736569200
{
"ok": true,
"formatter": "builtin",
"styleRequested": "vancouver",
"styleUsed": "vancouver",
"lang": "en-US",
"footnote": false,
"outputMode": "text",
"orderApplied": "input",
"itemsIn": 1,
"itemsOut": 1,
"items": [
{ "id": "doi:10.1038/nphys1170", "type": "journal-article", "title": "Measured measurement", "idx": 0, "sourceIdxs": [0] }
],
"html": "Aspelmeyer M. Measured measurement. <em>Nature Phys</em>. 2009;5(1):11-12. doi:10.1038/nphys1170.",
"text": "Aspelmeyer M. Measured measurement. Nature Phys. 2009;5(1):11-12. doi:10.1038/nphys1170.",
"warnings": [],
"meta": { "linesIn": 1, "resolved": 1, "notFound": 0, "errored": 0 }
}
The formatted citation is the whole-batch "text" (or "html") string — there is
no per-item "formatted" field. Unresolved identifiers are counted in "meta"
(notFound / errored) and described in "warnings", not returned as item errors.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.
Only style changes between these calls. Output is the text field of each response, verbatim.
POST /api/format {"text": "10.1056/NEJMoa2033700", "style": "…"}
vancouver
Libster R, Pérez Marc G, Wappner D, Coviello S, Bianchi A, Braem V, et al.
Early High-Titer Plasma Therapy to Prevent Severe Covid-19 in Older Adults.
N Engl J Med. 2021;384(7):610-618. doi:10.1056/NEJMoa2033700.
apa
Libster, R., Pérez Marc, G., Wappner, D., Coviello, S., Bianchi, A., Braem, V.,
… Polack, F. P. (2021). Early high-titer plasma therapy to prevent severe
covid-19 in older adults. New England Journal of Medicine, 384(7), 610–618.
https://doi.org/10.1056/NEJMoa2033700
ieee
R. Libster, et al., "Early High-Titer Plasma Therapy to Prevent Severe
Covid-19 in Older Adults", N Engl J Med, vol. 384, no. 7, pp. 610–618, 2021.
doi: 10.1056/NEJMoa2033700.A DOI, a bare PMID, and an arXiv ID together. Detection is automatic; order is preserved, and meta reports what resolved.
POST /api/format
{"lines": ["10.1038/nphys1170", "33301246", "arXiv:1706.03762"], "style": "vancouver"}
"text":
Aspelmeyer M. Measured measurement. Nature Phys. 2009;5(1):11-12.
doi:10.1038/nphys1170.
Polack F, Thomas S, Kitchin N, Absalon J, Gurtman A, Lockhart S, et al. Safety
and Efficacy of the BNT162b2 mRNA Covid-19 Vaccine. N Engl J Med.
2020;383(27):2603-2615. doi:10.1056/NEJMoa2034577.
Vaswani, Ashish, Shazeer, Noam, Parmar, Niki, Uszkoreit, Jakob, Jones, Llion,
Gomez, Aidan N., et al. Attention Is All You Need. 2017.
"meta":
{ "linesIn": 3, "resolved": 3, "notFound": 0, "errored": 0, "duplicates": 0 }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.
POST /api/export
Content-Type: application/json
{
"text": "10.1038/nphys1170",
"format": "ris", // "txt" | "bibtex" | "ris" | "csl-json" | "endnote-xml"
// | "endnote-refer" | "refworks" | "nbib" | "csv" | "rdf"
"style": "vancouver" // only affects format: "txt"
}200 OK Content-Type: application/x-research-info-systems; charset=utf-8 Content-Disposition: attachment; filename="citations.ris"; filename*=UTF-8''citations.ris TY - JOUR AU - Aspelmeyer, Markus TI - Measured measurement JO - Nature Physics PY - 2009 VL - 5 IS - 1 SP - 11 EP - 12 DO - 10.1038/nphys1170 UR - https://doi.org/10.1038/nphys1170 ER - Unlike the other endpoints, the body is the export file itself as a plain string — not JSON. Content-Type varies by "format", and Content-Disposition names the file, so a browser or curl -O saves it directly.
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-06-05
{
"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"}}'Audits a whole bibliography in one call — the batch counterpart to /api/verify. Each entry runs the same fabrication check plus a retraction lookup; the response carries a per-entry verdict table and a corpus summary.
POST /api/audit
Content-Type: application/json
{
"bibliography": "@article{a, title={A real title}, doi={10.1038/nphys1170}}",
"format": "bibtex", // optional: force bibtex | ris | csl-json (else auto-detect)
"options": { "checks": ["retraction"] } // default ["retraction"]; pass [] to skip
}Provide exactly one of bibliography (raw BibTeX / RIS / CSL-JSON string, auto-detected; max 128 KB), claims (array of { title, … } objects; max 25, each requiring title), or references (array of raw prose reference strings, max 25 — the .docx upload path, verified via the containment method and pinned by X-Scholar-Containment-Version). Excess bibliography entries are dropped and reported via truncated.
200 OK
X-Scholar-Verify-Version: 2026-06-05
{
"ok": true,
"format": "bibtex",
"entries": [
{
"index": 1,
"status": "ok",
"verdict": "matched",
"confidence": "high",
"matched": { "title": "...", "DOI": "10.1038/nphys1170" },
"mismatches": [],
"retraction": { "checked": true, "doi": "10.1038/nphys1170", "isRetracted": false, "hasCorrections": false, "hasConcern": false, "notices": [] }
}
],
"parseErrors": [],
"truncated": 0,
"summary": { "total": 1, "matched": 1, "mismatch": 0, "ambiguous": 0, "not_found": 0, "errored": 0, "retracted": 0 }
}Returns 200 on every produced audit. Per-entry leniency: one unresolvable entry becomes status: "error" without failing the batch; a total verification outage returns 502.
curl -sS -X POST https://scholar-sidekick.com/api/audit \
-H "Content-Type: application/json" \
-d '{"bibliography":"@article{a, title={A real title}, doi={10.1038/nphys1170}}\\n@article{b, title={An invented title}, doi={10.1016/j.neuroscience.2023.02.008}}"}'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) — see the anonymous-tier numbers in Pricing & free tier below./api/format/stream; exporter returns appropriate Content-Type + Content-Disposition.Every 4xx/5xx response is a typed envelope — { "ok": false, "code": "<CODE>", "error": "<message>" } — with the same token mirrored in the X-Error-Code response header. The full set, grouped by status:
| Status | Codes |
|---|---|
| 400 | BAD_REQUEST, VALIDATION_ERROR, UNKNOWN_STYLE, INVALID_CONTENT_TYPE, EMPTY_BODY, MALFORMED_JSON, MISSING_TITLE, LLM_SCREEN_FORBIDDEN |
| 401 | AUTH_MISSING, AUTH_INVALID |
| 403 | AUTH_DISABLED, STREAMING_DISABLED |
| 404 | NOT_FOUND |
| 405 | READ_ONLY (mutating call while READ_ONLY_MODE=1) |
| 413 | PAYLOAD_TOO_LARGE |
| 422 | IDEMPOTENCY_KEY_REUSED |
| 429 | RL_BLOCKED (not RATE_LIMITED) |
| 500 | ROUTE_ERROR |
| 502 | UPSTREAM_ERROR, UPSTREAM_RATE_LIMITED, UPSTREAM_UNAVAILABLE, UPSTREAM_NETWORK_ERROR, RESOLVE_ERROR |
| 503 | MAINTENANCE (MAINTENANCE_MODE=1) |
| 504 | UPSTREAM_TIMEOUT |
Full machine-readable definitions: the ErrorResponse schema in the OpenAPI spec.
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.
| Route family | Anonymous limit |
|---|---|
/api/format, /api/format/stream, /api/export, /api/format-items | 10 requests / 60s |
/api/retraction-check, /api/oa-check, /api/verify | 60 requests / 60s |
/api/audit | 4 requests / 30s |
Measured against production, 2026-08-05. A free ssk_ key raises this ~5×; PRO/ULTRA/MEGA scale further per the table above. These allowances are environment-tunable in production, so treat the live RateLimit-Limit / X-RateLimit-Limit response header — not this table — as authoritative for pacing a 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.