Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/accuracite:accuracite-verify-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: AccuraCite Verify API
version: 1.0.0
description: Synchronous REST API for citation verification and claim-backed citation finding.
termsOfService: https://accuracite.com/terms
contact:
email: support@accuracite.com
servers:
- url: https://accuracite.com
description: Production
security:
- ApiKeyAuth: []
tags:
- name: Verify
paths:
/api/v1/verify:
post:
operationId: verifyCitation
summary: Verify one or a small batch of citations
description: 'Checks a citation against 6 academic databases (OpenAlex, Crossref, Semantic Scholar, PubMed, DBLP, arXiv) to see if it''s accurate, not found, or has mismatches. Provide exactly one of `text`, `texts`, `citation`, or `citations`. `text`/`texts` is a raw citation string (or a batch of up to 10), parsed via LLM extraction; it can be a formatted bibliographic citation or a bare URL -- a URL that isn''t in an academic database is fetched directly and its title/author text is confirmed to appear on the page, rather than matched against a bibliographic record. `citation`/`citations` instead takes already-structured bib-style fields (title/author/year/doi/journal/volume/issue/page/publisher/url/type) and skips the LLM parse entirely -- use this if you already have structured metadata (e.g. from your own .bib file). Batch items are verified in parallel, so response time is close to that of a single citation rather than growing with batch size. Rate limit: 60 requests/minute per API key.'
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/VerifySingleRequest'
- $ref: '#/components/schemas/VerifyBatchRequest'
- $ref: '#/components/schemas/VerifyCitationFieldsRequest'
- $ref: '#/components/schemas/VerifyCitationsBatchRequest'
examples:
single:
summary: Single citation (raw text)
value:
text: Vaswani, A., et al. (2017). Attention is all you need. Advances in neural information processing systems, 30.
batch:
summary: Batch of citations (raw text)
value:
texts:
- Vaswani, A., et al. (2017). Attention is all you need. Advances in neural information processing systems, 30.
- Kuhn, T. S. (1962). The Structure of Scientific Revolutions. University of Chicago Press.
structured:
summary: Single citation (structured fields, no LLM parse)
value:
citation:
title: Attention is all you need
author: Vaswani, Ashish
year: 2017
journal: Advances in Neural Information Processing Systems
volume: '30'
structured_batch:
summary: Batch of citations (structured fields)
value:
citations:
- title: Attention is all you need
author: Vaswani, Ashish
year: 2017
- title: The Structure of Scientific Revolutions
author: Kuhn, T. S.
year: 1962
responses:
'200':
description: 'Verification result. A `text` request returns a single VerifyResult object; a `texts` request returns `{"results": [...]}`, one VerifyResult per input citation, in the same order.'
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/VerifyResult'
- $ref: '#/components/schemas/VerifyBatchResponse'
examples:
verified:
summary: A real, matched paper
value:
verification_status: verified
mismatches: []
reason: null
source: Semantic Scholar
retracted: false
citation:
title: Attention is all you need
author: Vaswani A, Shazeer N, Parmar N, ...
doi: 10.48550/arXiv.1706.03762
url: https://arxiv.org/abs/1706.03762
year: '2017'
bibtex_entry_type: article
volume: null
issue: null
page: null
publisher: null
container_title: Advances in Neural Information Processing Systems
abstract: The dominant sequence transduction models...
retracted:
summary: A real, matched paper that has been retracted
value:
verification_status: verified
mismatches: []
reason: null
source: OpenAlex
retracted: true
citation:
title: 'RETRACTED: Ileal-lymphoid-nodular hyperplasia, non-specific colitis, and pervasive developmental disorder in children'
doi: 10.1016/S0140-6736(97)11096-0
year: '1998'
not_found:
summary: No confident match
value:
verification_status: not_found
mismatches: []
reason: null
source: OpenAlex
retracted: false
citation:
title: A closest-match paper title, unrelated to what you sent
batch:
summary: Batch response
value:
results:
- verification_status: verified
mismatches: []
reason: null
source: Crossref
retracted: false
citation:
title: Attention is all you need
- verification_status: verified
mismatches: []
reason: null
source: OpenAlex
retracted: false
citation:
title: The Structure of Scientific Revolutions
'400':
description: None or more than one of `text`/`texts`/`citation`/`citations` provided, a non-string item in `texts`, a missing `title` or unrecognized field name in `citation`/`citations`, or a field value over 500 characters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid X-API-Key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'413':
description: A citation exceeds 2,000 characters, or `texts`/`citations` exceeds 10 items.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limit or credit limit reached. For a batch, the whole batch is rejected atomically if the credit balance can't cover every item — nothing is charged or processed. A rate-limit response includes a `Retry-After` header and `retry_after_seconds`; a credit-limit response includes `credits_reset_at` (when the pool refills).
headers:
Retry-After:
description: 'Present only on a rate-limit rejection: seconds to wait before retrying.'
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Verify
components:
schemas:
VerifyResult:
type: object
properties:
verification_status:
type: string
enum:
- verified
- mismatch
- not_found
mismatches:
type: array
items:
type: string
description: 'Populated only when verification_status is "mismatch". Any of: title, author, year, DOI, journal, volume, issue, page.'
reason:
type:
- string
- 'null'
description: Set for some not_found results (e.g. a dead URL); otherwise null.
source:
type:
- string
- 'null'
description: 'Database that supplied `citation`: OpenAlex, Crossref, Semantic Scholar, PubMed, DBLP, arXiv, or Google Scholar. "Publisher Metadata" and "URL Direct Check" mean a URL was fetched directly instead.'
retracted:
type: boolean
description: 'Independent of verification_status: a citation can be a real, correctly-matched paper (verification_status "verified") and still be retracted. Sourced from retraction metadata already published by OpenAlex, Crossref, and PubMed; corroborated the same way the rest of verification is, so any one provider flagging it is enough. False does not mean "confirmed not retracted" -- only that none of the providers consulted flagged it.'
citation:
oneOf:
- $ref: '#/components/schemas/Citation'
- type: 'null'
description: Null only if nothing at all was found. When verification_status is not_found, this may still be populated as the closest candidate match, not a confirmed one — always branch on verification_status, never on whether citation is present.
CitationFields:
type: object
required:
- title
description: 'Already-structured bib-style fields for one citation -- skips LLM extraction entirely. A few common BibTeX spellings are accepted as aliases: `authors` for `author`, `container_title` for `journal`, `number` for `issue`, `pages` for `page`, `bibtex_entry_type` for `type`. Every value is capped at 500 characters; unrecognized field names are rejected with a 400.'
properties:
title:
type: string
maxLength: 500
author:
type: string
maxLength: 500
authors:
type: string
maxLength: 500
description: Alias for author.
year:
type:
- string
- integer
doi:
type: string
maxLength: 500
DOI:
type: string
maxLength: 500
description: Alias for doi.
url:
type: string
maxLength: 500
journal:
type: string
maxLength: 500
container_title:
type: string
maxLength: 500
description: Alias for journal.
volume:
type: string
maxLength: 500
issue:
type: string
maxLength: 500
number:
type: string
maxLength: 500
description: Alias for issue.
page:
type: string
maxLength: 500
pages:
type: string
maxLength: 500
description: Alias for page.
publisher:
type: string
maxLength: 500
type:
type: string
maxLength: 500
description: BibTeX entry type, e.g. article, book.
bibtex_entry_type:
type: string
maxLength: 500
description: Alias for type.
abstract:
type: string
maxLength: 500
additionalProperties: false
VerifyCitationFieldsRequest:
type: object
required:
- citation
properties:
citation:
$ref: '#/components/schemas/CitationFields'
additionalProperties: false
Citation:
type: object
properties:
title:
type:
- string
- 'null'
author:
type:
- string
- 'null'
doi:
type:
- string
- 'null'
url:
type:
- string
- 'null'
format: uri
year:
type:
- string
- 'null'
bibtex_entry_type:
type:
- string
- 'null'
volume:
type:
- string
- 'null'
issue:
type:
- string
- 'null'
page:
type:
- string
- 'null'
publisher:
type:
- string
- 'null'
container_title:
type:
- string
- 'null'
abstract:
type:
- string
- 'null'
Error:
type: object
properties:
error:
type: string
retry_after_seconds:
type: integer
description: Present only on a rate-limit (429) rejection.
credits_reset_at:
type:
- string
- 'null'
format: date-time
description: 'Present only on a credit-limit (429) rejection: ISO-8601 UTC timestamp of when the credit pool refills.'
VerifySingleRequest:
type: object
required:
- text
properties:
text:
type: string
maxLength: 2000
description: A single raw academic citation string, or a bare URL.
additionalProperties: false
VerifyCitationsBatchRequest:
type: object
required:
- citations
properties:
citations:
type: array
minItems: 1
maxItems: 10
items:
$ref: '#/components/schemas/CitationFields'
description: A batch of up to 10 structured citations, verified in parallel.
additionalProperties: false
VerifyBatchResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/VerifyResult'
VerifyBatchRequest:
type: object
required:
- texts
properties:
texts:
type: array
minItems: 1
maxItems: 10
items:
type: string
maxLength: 2000
description: A batch of up to 10 citation strings, verified in parallel.
additionalProperties: false
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key from any plan, including Free. Manage keys at https://accuracite.com/api-docs.
externalDocs:
description: Full API documentation with curl and Python examples
url: https://accuracite.com/api-docs