Quick reference for endpoints, parameters, examples, and headers. 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/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 for evaluation. For higher limits and a monthly quota, sign up via RapidAPI. The BASIC tier is free.
| Tier | Price | Requests / month | Then |
|---|---|---|---|
| BASIC | Free | 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.