DOI check: exists, retracted, or fabricated (batch of 20)

$0.005 USDC per call · Agent infrastructure · POST /api/v1/doi-check · Id doi-check

Checks up to 20 DOIs in one call against Crossref (including its Retraction Watch notices), OpenAlex and the doi.org Handle registry. Per DOI: FOUND with title and year, RETRACTED, EXPRESSION_OF_CONCERN, CORRECTED, REGISTERED_NOT_INDEXED, NOT_REGISTERED (no such DOI anywhere: likely fabricated), INVALID_DOI or UNVERIFIED. For research agents and RAG pipelines that cite papers: run every DOI through it before it reaches a user. Pure code, no model.

What you get

A fabricated or retracted citation costs credibility; 20 DOIs checked for $0.005.

Call it

Send the JSON body below to https://agents.writerslogic.com/api/v1/doi-check. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.

curl -i -X POST https://agents.writerslogic.com/api/v1/doi-check \
  -H 'content-type: application/json' \
  -d '{"dois":["10.1038/nature14539","10.1016/S0140-6736(97)11096-0","https://doi.org/10.1038/fabricated-xyz-2026"]}'

Input

FieldTypeRequiredDescription
doisarray<string; length 1..300>; max 20 itemsyesBare DOIs, doi: prefixes or https://doi.org/ URLs.

Example request body

{
  "dois": [
    "10.1038/nature14539",
    "10.1016/S0140-6736(97)11096-0",
    "https://doi.org/10.1038/fabricated-xyz-2026"
  ]
}

Result

The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.

FieldTypeRequiredDescription
verdictstring; one of "FIX_REQUIRED", "REVIEW", "ALL_FOUND"noFIX_REQUIRED: a retracted, unregistered or malformed DOI. REVIEW: a notice, an unindexed DOI or a failed lookup.
countsobjectno
resultsarray<object>no
sourcesstringno
upgradeobjectnoThe full agent this micro check is a slice of, its price and what it adds.

Pay and connect

Available through: x402 (USDC on Base), MCP.

Machine-readable