API Overview

The Citation Wizard API provides three main services:

  1. Citation Generation - Convert URLs, DOIs, PDFs, and other content into properly formatted citations
  2. Research Parsing - Parse academic PDFs into structured scholarly JSON with GROBID and OpenAlex enrichment
  3. Paper Search - Search academic papers across CORE, Semantic Scholar, CrossRef, and UnPaywall databases
API Key Required: 7f8a9b2c4d6e1f3a5b7c9d0e2f4a6b8c3e5f7a9b1c3d5e7f9a0b2c4d6e8f0a1b3c5
Include in header: X-API-Key or query parameter: api_key

Citation Generation API

POST /api/citation

Generate citations from URLs, DOIs, or other identifiers.

Request Body:

Parameter Type Required Description
input string Required URL, DOI, PDF URL, or other identifier
style string Optional Citation style (apa, ieee, mla, chicago, etc.). Default: apa
format string Optional Output format: html, text, json, bibtex. Default: html

Example Request:

curl -X POST https://cite.videmak.net/api/citation \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "input": "https://www.nature.com/articles/nature12373", "style": "apa", "format": "html" }'
Example Response:
{ "success": true, "style": "apa", "format": "html", "itemCount": 1, "bibtex": "@article{kucsko2013nanometre-scalethermometry,\n author = {Kucsko, G. and Maurer, P. C. and ...},\n year = {2013},\n title = {Nanometre-scale thermometry in a living cell},\n journal = {Nature},\n doi = {10.1038/nature12373},\n volume = {500},\n pages = {54--58}\n}", "inTextCitations": [ { "id": "item_0", "citation": "(Kucsko et al., 2013)" } ], "bibliography": [ "Kucsko, G., Maurer, P. C., ... (2013). Nanometre-scale thermometry..." ], "originalInput": "https://www.nature.com/articles/nature12373", "inputType": "url", "processedAt": "2026-02-16T18:40:00.000Z" }
BibTeX Always Included:

The bibtex field is included in every response regardless of the requested format. You always get BibTeX alongside the formatted citation — no need to make a separate request.

POST /api/citation/upload

Upload and process PDF, BibTeX, or RIS files for citation generation.

Form Data:

Field Type Required Description
file file Required PDF, BibTeX (.bib), RIS (.ris), or text file
style string Optional Citation style
format string Optional Output format

Example Request:

curl -X POST https://cite.videmak.net/api/citation/upload \ -H "X-API-Key: YOUR_API_KEY" \ -F "[email protected]" \ -F "style=apa"

Try Citation API

Test the citation API directly. Enter a DOI, URL, arXiv ID, or upload a PDF.

Research Parsing API

New research-focused routes powered by GROBID for structured scholarly extraction. These routes are separate from the production citation APIs and are designed for API-first academic workflows.

What You Get:

Structured metadata, section hierarchy, extracted references, and optional OpenAlex enrichment using the polite pool email [email protected].

POST /api/research/parse/upload

Upload a PDF and parse it into structured scholarly JSON using GROBID. Optionally enrich the parsed metadata with OpenAlex.

Form Data:

Field Type Required Description
file file Required Academic PDF file to parse
include_fulltext boolean Optional Include section hierarchy and references from fulltext TEI. Default: true
include_raw_tei boolean Optional Include raw TEI XML in the response. Default: false
enrich boolean Optional Enrich parsed metadata with OpenAlex. Default: true
max_related integer Optional Number of related papers to return from the matched scholarly record. Default: 5, max: 10

Example Request:

curl -X POST https://cite.videmak.net/api/research/parse/upload \ -H "X-API-Key: YOUR_API_KEY" \ -F "[email protected]" \ -F "include_fulltext=true" \ -F "enrich=true" \ -F "max_related=5"
Example Response:
{ "success": true, "fileName": "paper.pdf", "parsedMetadata": { "title": "Attention Is All You Need", "doi": null }, "enrichedMetadata": { "doi": "10.65215/r5bs2d54", "citedByCount": 6497 }, "resolvedMetadata": { "title": "Attention Is All You Need", "doi": "10.65215/r5bs2d54", "publicationYear": 2025, "type": "preprint" }, "metadata": { "title": "Attention Is All You Need", "doi": "10.65215/r5bs2d54" }, "relatedPapers": [ { "title": "Sequence to Sequence Learning with Neural Networks", "doi": "10.48550/arXiv.1409.3215" } ], "sections": [ { "heading": "Introduction", "paragraphCount": 4, "text": "..." } ], "references": [ { "index": 1, "title": "Sequence to Sequence Learning with Neural Networks", "doi": "10.48550/arXiv.1409.3215" } ], "enrichment": { "openalex": { "matched": true, "matchedBy": "doi", "work": { "citedByCount": 10000, "isOpenAccess": true } } } }
POST /api/research/references/upload

Upload a PDF and extract bibliography references only.

Example Request:

curl -X POST https://cite.videmak.net/api/research/references/upload \ -H "X-API-Key: YOUR_API_KEY" \ -F "[email protected]"
POST /api/research/enrich

Enrich a DOI or title using OpenAlex without uploading a file. Returns a resolved metadata record plus related papers.

Request Body:

Parameter Type Required Description
doi string Optional DOI to enrich
title string Optional Paper title to search when DOI is missing
authors array Optional Optional author hints for better OpenAlex title matching
max_related integer Optional Number of related papers to return. Default: 5, max: 10

Example Request:

curl -X POST https://cite.videmak.net/api/research/enrich \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "doi": "10.1038/nature12373", "max_related": 5 }'
GET /api/research/health

Check research service readiness, including GROBID and OpenAlex.

Try Research API

Test the new research parsing endpoints directly from the docs.

NEW: AI-Powered Search Quality Tiers

The Paper Search API now supports AI-powered query enhancement using Azure OpenAI. Select a quality tier to improve search relevance.

Tier Model Extra Latency Description
basic None +0s Rule-based preprocessing only (fastest)
smart GPT-4o-mini +1-3s AI query reformulation, filter extraction
intelligent GPT-4o +5-10s Deep understanding with domain expertise
comprehensive GPT-4o +15-30s Multi-strategy search + AI reranking

How AI Enhancement Works

  • Query Reformulation: Natural language queries are converted to optimal academic search terms
  • Filter Extraction: AI automatically detects year ranges, geographic focus, academic fields
  • Domain Understanding: AI identifies the academic domain and adds relevant terminology
  • Result Reranking: (comprehensive only) AI reorders results by relevance with explanations

Paper Search API

Search academic papers across multiple databases: CORE, Semantic Scholar, CrossRef, UnPaywall, and Google Scholar.

POST /api/papers/search

Search for academic papers across all providers with optional AI enhancement.

Request Body:

Parameter Type Required Description
query string Required Search terms (natural language supported)
limit integer Optional Results per page (1-100, default: 20)
page integer Optional Page number (default: 1)
year integer Optional Publication year filter
sort string Optional Sort order: relevance, citationCount, year, year_old
source string Optional Source: all, core, semantic, crossref, unpaywall, serper
quality NEW string Optional AI quality tier: basic, smart, intelligent, comprehensive (default: basic)

Example Request (Basic):

curl -X POST https://cite.videmak.net/api/papers/search \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "machine learning", "limit": 10, "sort": "citationCount", "source": "all" }'

Example Request (AI-Enhanced - Smart):

curl -X POST https://cite.videmak.net/api/papers/search \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "Impact of mobile technology on hypertensive patients in Uganda", "limit": 10, "quality": "smart" }'

Example Request (Comprehensive with Reranking):

curl -X POST https://cite.videmak.net/api/papers/search \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "Super computers and their effect on the environment", "limit": 10, "quality": "comprehensive" }'
Example Response (with AI Enhancement):
{ "status": "success", "data": { "papers": [ { "id": "paper_id", "title": "Paper Title", "authors": ["Author 1", "Author 2"], "abstract": "Paper abstract...", "year": 2023, "doi": "10.1234/example.doi", "url": "https://example.com/paper", "pdf_url": "https://example.com/paper.pdf", "citation_count": 42, "venue": "Journal Name", "source": "semantic", "is_open_access": true, "bibtex": "@article{...}", "ai_relevance_note": "Directly addresses the topic..." } ], "total": 150, "page": 1, "limit": 20, "quality": "smart", "search_metadata": { "quality_tier": "smart", "original_query": "mobile health hypertension Uganda", "reformulated_query": "mHealth hypertension management mobile health apps blood pressure monitoring telemedicine Africa", "ai_processing_time_ms": 2150, "extracted_filters": { "year_start": null, "year_end": null, "academic_field": "public health", "geographic_focus": "Uganda" }, "ai_explanation": "Added mHealth and telemedicine terms for better academic coverage", "from_cache": false } } }
Download Options in Results:

Each paper includes a download_options array with pre-configured download methods. Simply POST the request_body to the endpoint to download the PDF.

GET /api/papers/doi/{doi}

Retrieve detailed information about a specific paper using its DOI.

Example Request:

curl "https://cite.videmak.net/api/papers/doi/10.1234/example.doi" \ -H "X-API-Key: YOUR_API_KEY"
GET /api/papers/sources

Get information about available paper search sources and their capabilities.

Example Request:

curl "https://cite.videmak.net/api/papers/sources" \ -H "X-API-Key: YOUR_API_KEY"

Paper Search API (v2) - Advanced Filters

Enhanced search API with powerful filtering capabilities. Filter by open access, PDF availability, publishers, year ranges, and more.

Available Filters:
  • open_access - Filter by open access status (true/false)
  • has_pdf - Only papers with downloadable PDF
  • has_doi - Only papers with DOI
  • publishers - Filter by Elsevier, Springer, Wiley, Nature, etc.
  • year_from / year_to - Year range filter
  • min_citations - Minimum citation count
  • venues - Filter by journal name
  • authors - Filter by author name
POST /api/v2/papers/search

Search papers with advanced filtering options.

Request Body:

Parameter Type Required Description
query string Required Search query
limit integer Optional Results per page (1-100, default: 20)
page integer Optional Page number (default: 1)
source string Optional API source: all, core, semantic, crossref, unpaywall, serper (default: all)
sort string Optional Sort: relevance, citationCount, year, year_old
open_access boolean v2 Filter true = only open access, false = only non-OA, null = all
has_pdf boolean v2 Filter true = only papers with PDF, false = only without
has_doi boolean v2 Filter true = only papers with DOI
publishers array v2 Filter Filter by publishers: ["elsevier", "springer", "wiley", "nature"]
year_from integer v2 Filter Papers from this year onwards
year_to integer v2 Filter Papers up to this year
min_citations integer v2 Filter Minimum citation count
venues array v2 Filter Filter by journal names: ["nature", "lancet"]
authors array v2 Filter Filter by author names

Example Request - Open Access with PDF:

curl -X POST https://cite.videmak.net/api/v2/papers/search \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "malaria treatment", "limit": 20, "open_access": true, "has_pdf": true, "year_from": 2020, "min_citations": 10 }'

Example Request - Specific Publishers:

curl -X POST https://cite.videmak.net/api/v2/papers/search \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "machine learning", "publishers": ["nature", "springer", "elsevier"], "year_from": 2022, "sort": "citationCount" }'
Example Response:
{ "status": "success", "data": { "papers": [...], "total": 45, "total_before_filter": 120, "page": 1, "limit": 20, "source": "all" }, "filters_applied": { "open_access": true, "has_pdf": true, "year_from": 2020, "min_citations": 10 } }
GET /api/v2/papers/search

Search papers using GET parameters (simpler filters only).

curl "https://cite.videmak.net/api/v2/papers/search?q=covid+vaccine&open_access=true&has_pdf=true&min_citations=50"
GET /api/v2/papers/filters

Get documentation of all available filter options, including common publisher names.

curl "https://cite.videmak.net/api/v2/papers/filters"
Common Publisher Names for Filtering:

elsevier, springer, wiley, nature, oxford, cambridge, taylor, sage, ieee, acm, plos, bmc, mdpi, frontiers, hindawi

PDF Download API (v2)

Download academic papers using multiple methods with automatic fallback. The API tries each method in order until one succeeds.

Download Methods (in recommended order):
  1. Unpaywall - Open access papers (requires DOI)
  2. Fulltext - Elsevier, Springer, Wiley, PLOS, etc. (requires DOI)
  3. PubMed - PubMed Central articles (requires PMCID)
  4. Direct - Direct PDF URLs from search results
  5. SciDownl - Last resort fallback (requires DOI)
POST /api/v2/papers/download/smart

Smart download that automatically tries multiple methods with fallback until one succeeds.

Request Body:

Parameter Type Required Description
doi string Optional* DOI for unpaywall, fulltext, scidownl methods
pmcid string Optional* PubMed Central ID (e.g., PMC1234567) for pubmed method
pdf_url string Optional* Direct PDF URL for direct method
filename string Optional Custom filename (without extension)
methods array Optional Ordered list of methods to try: ["unpaywall", "fulltext", "pubmed", "direct", "scidownl"]
stop_on_success boolean Optional Stop after first success (default: true)

* At least one identifier (doi, pmcid, or pdf_url) is required

Example Request:

curl -X POST https://cite.videmak.net/api/v2/papers/download/smart \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "doi": "10.1371/journal.pone.0100000", "methods": ["unpaywall", "fulltext", "scidownl"] }'
Example Response:
{ "status": "success", "success": true, "message": "PDF downloaded successfully using unpaywall", "attempts": [ {"method": "unpaywall", "success": true, "message": "PDF downloaded successfully", "filename": "paper_abc123.pdf"} ], "successful_method": "unpaywall", "download_url": "/api/papers/download/paper_abc123.pdf", "filename": "paper_abc123.pdf", "file_size": 1234567 }

Individual Download Methods

You can also call each download method directly:

POST /api/v2/papers/download/unpaywall

Download via Unpaywall (open access papers). Requires: doi

curl -X POST https://cite.videmak.net/api/v2/papers/download/unpaywall \ -H "Content-Type: application/json" \ -d '{"doi": "10.1371/journal.pone.0100000"}'
POST /api/v2/papers/download/fulltext

Download via Fulltext Downloader (Elsevier, Springer, Wiley, PLOS, etc.). Requires: doi

curl -X POST https://cite.videmak.net/api/v2/papers/download/fulltext \ -H "Content-Type: application/json" \ -d '{"doi": "10.1186/1756-0500-6-435"}'
POST /api/v2/papers/download/pubmed

Download from PubMed Central. Requires: pmcid

curl -X POST https://cite.videmak.net/api/v2/papers/download/pubmed \ -H "Content-Type: application/json" \ -d '{"pmcid": "PMC3552837"}'
POST /api/v2/papers/download/direct

Download from direct PDF URL. Requires: pdf_url

curl -X POST https://cite.videmak.net/api/v2/papers/download/direct \ -H "Content-Type: application/json" \ -d '{"pdf_url": "https://core.ac.uk/download/pdf/12345.pdf"}'
POST /api/v2/papers/download/scidownl

Download via SciDownl/Sci-Hub (last resort). Requires: doi

Warning: Use responsibly. May have legal restrictions in some jurisdictions.
curl -X POST https://cite.videmak.net/api/v2/papers/download/scidownl \ -H "Content-Type: application/json" \ -d '{"doi": "10.1038/nature12373"}'
GET /api/v2/papers/download/methods

Get information about all available download methods, their requirements, and capabilities.

curl "https://cite.videmak.net/api/v2/papers/download/methods"
GET /api/papers/download/{filename}

Download a previously downloaded PDF file. The filename is returned in the download response.

curl -O "https://cite.videmak.net/api/papers/download/paper_abc123.pdf"

Paper Search Data Sources

Our paper search API aggregates results from five major academic databases:

CORE

CORE API

Coverage: 30+ million open access papers from repositories worldwide

Strengths: Open access focus, repository metadata, full-text search

Rate Limit: 10 requests/second

Semantic Scholar

Semantic Scholar

Coverage: Computer science, biomedical, and general academic papers

Strengths: Citation analysis, author information, paper relationships

Rate Limit: 100 requests/5 minutes

CrossRef

CrossRef API

Coverage: Academic publications with DOIs

Strengths: Authoritative metadata, publisher information

Rate Limit: 50 requests/second

UnPaywall

UnPaywall API

Coverage: Open access versions of paywalled papers

Strengths: Open access detection, PDF links

Rate Limit: 100,000 requests/day

Google Scholar

Google Scholar (via Serper)

Coverage: Broad academic coverage including theses, books, conference papers

Strengths: Comprehensive search, PubMed/PMC links, citation data

Rate Limit: API key required

Source ID: serper

Try the API

Test Paper Search

Try searching for academic papers using our unified API with AI enhancement:

Utility Endpoints

GET /api/health

Check system health and service availability.

GET /api/styles

Get available citation styles and their metadata.