Developers

Verify citations programmatically.

The CiteOrbit API lets your platform validate a paper's references, or a whole manuscript file, and link straight to the verification report. Integrate in minutes, or drop in our ready-made OJS plugin with no code at all.

REST · JSONBearer API keysReference & file checksOJS 3.3 / 3.4 / 3.5 plugin

Overview

Two ways to integrate, one API behind both.

CiteOrbit extracts, enriches and validates the bibliographic references in academic papers. You can drive it two ways:

  • Reference checks: send a list of raw citation strings (for example, the references a manuscript system already has on file) and get them verified.
  • File checks: upload a DOCX or ODT manuscript and CiteOrbit extracts and verifies the references inside it.

Every check runs asynchronously and returns a report_id you can poll or link to. Checks spend credits from the workspace the API key belongs to.

Getting started

From zero to a verified reference list in three steps.

1

Create an API key

In CiteOrbit, open Profile, then API Keys, then New key. Choose its scopes (Validate references and / or Validate files) and copy the key: it is shown once and starts with cob_live_.

2

Set the base URL and auth header

All requests go to https://app.citeorbit.com and carry your key as a bearer token.

HTTP
https://app.citeorbit.com
Authorization: Bearer cob_live_xxxxxxxxxxxxxxxx
3

Send your first check

POST a few references and you are done:

cURL
# verify three references
curl -X POST https://app.citeorbit.com/api/ojs/reference-checks \
  -H "Authorization: Bearer cob_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "article_title": "On the verification of citations",
    "citation_style": "apa-7",
    "references": [
      { "position": 1, "raw": "Smith, J. (2021). A study of things. Journal of Things, 4(2), 11-20." },
      { "position": 2, "raw": "Doe, A. (2019). Another paper. Press." }
    ]
  }'
A successful call returns { "code": "queued", "report_id": "..." }. Open /check-references/by-check/<report_id> to view the report.

Authentication & limits

Bearer keys, scopes, and the limits that protect your credits.

Authenticate every request with Authorization: Bearer <key>. Keys are workspace-scoped and carry one or both permissions:

ScopeGrants
references:writeSubmit reference-list checks (/reference-checks)
files:writeSubmit manuscript file checks (/file-checks)

Limits

  • Per-key cap: each key has a configurable daily, weekly, or monthly check limit.
  • Rate limit: bursts are throttled per workspace; throttled calls return rate_limited with a Retry-After header.
  • Expiry: keys can be given an expiry date and revoked anytime from Profile, then API Keys.
  • Max 100 references per reference check.

API reference

Three endpoints. All responses are JSON.

Check references

POST/api/ojs/reference-checksscope references:write
FieldTypeDescription
referencesarrayrequired1 to 100 items, each { position, raw, citation_id? }
article_titlestringoptionalTitle of the paper being checked
citation_stylestringoptionale.g. apa-7, vancouver, ieee (defaults to apa-7)
journal_abbreviationstringoptionalShown on the report
submission_idnumberoptionalYour system's submission id, echoed back
200 · Response
{
  "code": "queued",
  "report_id": "chk_a1b2c3",
  "message": "References sent to CiteOrbit."
}

Check a file

POST/api/ojs/file-checksscope files:write

Multipart upload. Accepts DOCX, DOC, or ODT (PDF is not supported for file checks).

cURL
curl -X POST https://app.citeorbit.com/api/ojs/file-checks \
  -H "Authorization: Bearer cob_live_xxxxxxxxxxxxxxxx" \
  -F "file=@manuscript.docx" \
  -F "citation_style=apa-7" \
  -F "journal_abbreviation=J. Things"

Get a check's result

GET/api/ojs/checks/{jobId}any valid key

Poll until status is completed.

200 · Response
{
  "status": "completed",
  "score": 92,
  "summary": {
    "total": 24,
    "verified": 22,
    "issues": 2
  }
}

Error codes

Failures return a code and a human-readable message.

CodeMeaning
invalid_api_keyKey missing, malformed, or revoked.
insufficient_scopeKey lacks the scope for this endpoint.
insufficient_creditsWorkspace is out of credits (response includes topup_url).
no_referencesNo references in the request body.
too_many_referencesMore than 100 references in one check.
unsupported_file / invalid_file_contentFile type or contents not a supported document.
file_too_largeUploaded file exceeds the size limit.
rate_limitedToo many requests, retry after the Retry-After seconds.
key_limit_reachedKey hit its daily / weekly / monthly cap.
concurrent_limitAnother check is already running for this workspace.
server_errorCiteOrbit could not process the request.

OJS plugin

No code required: validate references and files inside your editorial workflow.

Running Open Journal Systems? Install the CiteOrbit plugin and editors get one-click Validate with CiteOrbit actions on the References tab and on manuscript files: the report opens straight from OJS.

OJS 3.3

branch stable-3_3_0

OJS 3.4

branch stable-3_4_0

OJS 3.5

branch stable-3_5_0

Install

1

Download the release for your OJS version and upload it under Settings, then Website, then Plugins, then Upload a new plugin.

2

Enable CiteOrbit Reference Checking, open its settings, and paste your cob_live_ API key.

3

Open any submission, then Validate with CiteOrbit on the References tab or a manuscript file.

Support

We are happy to help you integrate.

Questions about the API or the OJS plugin? Email support@citeorbit.com or open an issue on the plugin's GitHub repository. For workspace, billing and credit questions, see your account dashboard.