---
title: "Works citing a given DOI (best-effort)"
method: GET
path: "/api/v1/research/crossref/citations/{doi}"
tags: ["Research"]
---

# Works citing a given DOI (best-effort)

`GET /api/v1/research/crossref/citations/{doi}`

Attempt to list works that cite a given DOI by querying the Crossref /works collection with `filter=doi-from:<doi>`. Limitation: Crossref does not publish inbound citations through the main REST surface; the authoritative inbound graph is served by Crossref Event Data (`api.eventdata.crossref.org`). Results here are best-effort and often empty. For total inbound-citation count, use the `is_referenced_by_count` field on `/works/{doi}`. Data licensed CC0 by Crossref.

## Path parameters

- `doi` string, required — DOI of the cited work (e.g. `10.1038/nature12373`).

## Query parameters

- `limit` integer — Items per page (1 to 1000).
- `offset` integer — Zero-based offset into the result set (cursor pagination when >10,000).

## Response `200`

Works filed as citing the DOI (may be empty) plus a limitation `note`.

- EnvelopeCrossrefCitationsPayload
  - `data` CrossrefCitationsPayload, required — Response payload for `/api/v1/research/crossref/citations/{doi}`. Crossref does not publish inbound citations through the main REST surface; the authoritative inbound service is Crossref Event Data. This endpoint is a best-effort pass-through against `filter=doi-from:<doi>` and may return an empty list for most DOIs.
    - `doi` string, required — DOI of the cited work.
    - `items` CrossrefWork[], required — Works identified as citing the given DOI (may be empty).
      - `DOI` string, nullable — DOI of the work (canonical Crossref identifier).
      - `title` string[], nullable — Title strings (usually one-element list).
      - `subtitle` string[], nullable — Subtitle strings when deposited.
      - `short-title` string[], nullable — Abbreviated title forms when deposited.
      - `original-title` string[], nullable — Original-language title when deposited.
      - `container-title` string[], nullable — Journal / book / proceedings title (as a list).
      - `short-container-title` string[], nullable — Abbreviated container title (e.g. `Nature`).
      - `type` string, nullable — Publication type (e.g. `journal-article`, `book-chapter`; see `/types`).
      - `publisher` string, nullable — Publisher name as filed with Crossref.
      - `member` string, nullable — Crossref member ID of the publisher.
      - `prefix` string, nullable — DOI prefix (first segment of the DOI, identifies the owning publisher).
      - `volume` string, nullable — Volume label of the containing title.
      - `issue` string, nullable — Issue label of the containing title.
      - `page` string, nullable — Page range (e.g. `54-58`).
      - `article-number` string, nullable — Article or citation number inside the issue.
      - `ISSN` string[], nullable — ISSNs attached to the containing journal.
      - `issn-type` CrossrefIssnType[], nullable — Typed ISSN entries identifying print vs electronic forms.
        - `value` string, nullable — ISSN string (8 chars including hyphen).
        - `type` string, nullable — ISSN type (`print`, `electronic`, `linking`).
      - `ISBN` string[], nullable — ISBNs attached when the container is a book.
      - `language` string, nullable — BCP 47 language code of the work.
      - `subject` string[], nullable — Subject category labels assigned by Crossref.
      - `author` CrossrefAuthor[], nullable — Author list with names, ORCIDs, and affiliations.
        - `given` string, nullable — Given (first) name of the author as filed.
        - `family` string, nullable — Family (last) name of the author as filed.
        - `name` string, nullable — Single-field name used when given/family are not split.
        - `sequence` string, nullable — Author order tag (`first`, `additional`).
        - `ORCID` string, nullable — ORCID iD URL (e.g. `http://orcid.org/0000-0002-1825-0097`) when provided.
        - `authenticated-orcid` boolean, nullable — True when the ORCID iD has been authenticated by the author at deposit time.
        - `affiliation` object[], nullable — List of affiliation records each carrying a `name` and optional `id[]` block (ROR, ISNI, Wikidata).
        - `suffix` string, nullable — Name suffix (e.g. `Jr.`, `III`).
      - `editor` CrossrefAuthor[], nullable — Editor list (used for books and edited volumes).
        - `given` string, nullable — Given (first) name of the author as filed.
        - `family` string, nullable — Family (last) name of the author as filed.
        - `name` string, nullable — Single-field name used when given/family are not split.
        - `sequence` string, nullable — Author order tag (`first`, `additional`).
        - `ORCID` string, nullable — ORCID iD URL (e.g. `http://orcid.org/0000-0002-1825-0097`) when provided.
        - `authenticated-orcid` boolean, nullable — True when the ORCID iD has been authenticated by the author at deposit time.
        - `affiliation` object[], nullable — List of affiliation records each carrying a `name` and optional `id[]` block (ROR, ISNI, Wikidata).
        - `suffix` string, nullable — Name suffix (e.g. `Jr.`, `III`).
      - `chair` CrossrefAuthor[], nullable — Chair list (used for proceedings).
        - `given` string, nullable — Given (first) name of the author as filed.
        - `family` string, nullable — Family (last) name of the author as filed.
        - `name` string, nullable — Single-field name used when given/family are not split.
        - `sequence` string, nullable — Author order tag (`first`, `additional`).
        - `ORCID` string, nullable — ORCID iD URL (e.g. `http://orcid.org/0000-0002-1825-0097`) when provided.
        - `authenticated-orcid` boolean, nullable — True when the ORCID iD has been authenticated by the author at deposit time.
        - `affiliation` object[], nullable — List of affiliation records each carrying a `name` and optional `id[]` block (ROR, ISNI, Wikidata).
        - `suffix` string, nullable — Name suffix (e.g. `Jr.`, `III`).
      - `translator` CrossrefAuthor[], nullable — Translator list when deposited.
        - `given` string, nullable — Given (first) name of the author as filed.
        - `family` string, nullable — Family (last) name of the author as filed.
        - `name` string, nullable — Single-field name used when given/family are not split.
        - `sequence` string, nullable — Author order tag (`first`, `additional`).
        - `ORCID` string, nullable — ORCID iD URL (e.g. `http://orcid.org/0000-0002-1825-0097`) when provided.
        - `authenticated-orcid` boolean, nullable — True when the ORCID iD has been authenticated by the author at deposit time.
        - `affiliation` object[], nullable — List of affiliation records each carrying a `name` and optional `id[]` block (ROR, ISNI, Wikidata).
        - `suffix` string, nullable — Name suffix (e.g. `Jr.`, `III`).
      - `abstract` string, nullable — JATS-tagged abstract when deposited.
      - `published` CrossrefPartialDate — Partial-precision date as Crossref returns it (array of date parts).
        - `date-parts` array[], nullable — Nested array of `[[year, month, day]]`. Month and day may be absent for year-only precision.
          - integer[]
        - `date-time` string, nullable — ISO 8601 UTC timestamp when upstream publishes a single-point-in-time value alongside the parts.
        - `timestamp` integer, nullable — Millisecond UNIX timestamp mirror of `date-time`.
      - `published-online` CrossrefPartialDate — Partial-precision date as Crossref returns it (array of date parts).
        - `date-parts` array[], nullable — Nested array of `[[year, month, day]]`. Month and day may be absent for year-only precision.
          - integer[]
        - `date-time` string, nullable — ISO 8601 UTC timestamp when upstream publishes a single-point-in-time value alongside the parts.
        - `timestamp` integer, nullable — Millisecond UNIX timestamp mirror of `date-time`.
      - `published-print` CrossrefPartialDate — Partial-precision date as Crossref returns it (array of date parts).
        - `date-parts` array[], nullable — Nested array of `[[year, month, day]]`. Month and day may be absent for year-only precision.
          - integer[]
        - `date-time` string, nullable — ISO 8601 UTC timestamp when upstream publishes a single-point-in-time value alongside the parts.
        - `timestamp` integer, nullable — Millisecond UNIX timestamp mirror of `date-time`.
      - `issued` CrossrefPartialDate — Partial-precision date as Crossref returns it (array of date parts).
        - `date-parts` array[], nullable — Nested array of `[[year, month, day]]`. Month and day may be absent for year-only precision.
          - integer[]
        - `date-time` string, nullable — ISO 8601 UTC timestamp when upstream publishes a single-point-in-time value alongside the parts.
        - `timestamp` integer, nullable — Millisecond UNIX timestamp mirror of `date-time`.
      - `created` CrossrefPartialDate — Partial-precision date as Crossref returns it (array of date parts).
        - `date-parts` array[], nullable — Nested array of `[[year, month, day]]`. Month and day may be absent for year-only precision.
          - integer[]
        - `date-time` string, nullable — ISO 8601 UTC timestamp when upstream publishes a single-point-in-time value alongside the parts.
        - `timestamp` integer, nullable — Millisecond UNIX timestamp mirror of `date-time`.
      - `deposited` CrossrefPartialDate — Partial-precision date as Crossref returns it (array of date parts).
        - `date-parts` array[], nullable — Nested array of `[[year, month, day]]`. Month and day may be absent for year-only precision.
          - integer[]
        - `date-time` string, nullable — ISO 8601 UTC timestamp when upstream publishes a single-point-in-time value alongside the parts.
        - `timestamp` integer, nullable — Millisecond UNIX timestamp mirror of `date-time`.
      - `indexed` CrossrefPartialDate — Partial-precision date as Crossref returns it (array of date parts).
        - `date-parts` array[], nullable — Nested array of `[[year, month, day]]`. Month and day may be absent for year-only precision.
          - integer[]
        - `date-time` string, nullable — ISO 8601 UTC timestamp when upstream publishes a single-point-in-time value alongside the parts.
        - `timestamp` integer, nullable — Millisecond UNIX timestamp mirror of `date-time`.
      - `reference-count` integer, nullable — Number of references deposited by the publisher.
      - `references-count` integer, nullable — Mirror of `reference-count` (some records carry only one or the other).
      - `is-referenced-by-count` integer, nullable — Count of other Crossref works that cite this DOI (inbound citation count).
      - `reference` CrossrefReference[], nullable — Deposited reference list (outbound citations). Present only when the publisher deposited references.
        - `key` string, nullable — Publisher-assigned reference key (e.g. `ref_1`).
        - `DOI` string, nullable — DOI of the cited work when deposited.
        - `doi-asserted-by` string, nullable — Entity that asserted the DOI mapping (`publisher` or `crossref`).
        - `unstructured` string, nullable — Free-text citation when no structured DOI or metadata is available.
        - `article-title` string, nullable — Title of the cited article when structured.
        - `journal-title` string, nullable — Journal title for the cited article when structured.
        - `volume-title` string, nullable — Volume or book title when citing a chapter or edited volume.
        - `author` string, nullable — Author surname string for the cited work.
        - `year` string, nullable — Publication year string for the cited work.
        - `volume` string, nullable — Volume number of the cited work.
        - `issue` string, nullable — Issue number of the cited work.
        - `first-page` string, nullable — First page of the cited work.
        - `ISSN` string, nullable — ISSN of the cited journal.
        - `isbn-type` string, nullable — ISBN type (e.g. `print`, `electronic`).
        - `component` string, nullable — Component identifier (used when citing book chapters or data).
      - `license` CrossrefLicense[], nullable — License blocks deposited with the work.
        - `URL` string, nullable — License URL as deposited (casing is publisher-dependent).
        - `content-version` string, nullable — License applies to which version of the work (`vor` = version of record, `am` = accepted manuscript, `tdm` = text-mining access).
        - `delay-in-days` integer, nullable — Number of days between work publication and license effective date.
        - `start` CrossrefPartialDate — Partial-precision date as Crossref returns it (array of date parts).
          - `date-parts` array[], nullable — Nested array of `[[year, month, day]]`. Month and day may be absent for year-only precision.
            - integer[]
          - `date-time` string, nullable — ISO 8601 UTC timestamp when upstream publishes a single-point-in-time value alongside the parts.
          - `timestamp` integer, nullable — Millisecond UNIX timestamp mirror of `date-time`.
      - `link` CrossrefLink[], nullable — Full-text and text-mining links deposited with the work.
        - `URL` string, nullable — Full URL to the resource.
        - `content-type` string, nullable — MIME type of the linked resource (e.g. `application/pdf`, `text/html`).
        - `content-version` string, nullable — Version of the content at this URL (`vor`, `am`, `tdm`, `unspecified`).
        - `intended-application` string, nullable — What the link is for (`text-mining`, `similarity-checking`, `syndication`).
      - `funder` CrossrefFunder[], nullable — Funder acknowledgements with award identifiers.
        - `name` string, nullable — Funder name as deposited.
        - `DOI` string, nullable — Funder Registry DOI (e.g. `10.13039/100000001` for NSF).
        - `doi-asserted-by` string, nullable — Entity that asserted the funder DOI mapping (`publisher` or `crossref`).
        - `award` string[], nullable — List of award identifiers (grant numbers) associated with the funding.
      - `resource` CrossrefResource — Primary-resource pointer for a work.
        - `primary` object, nullable — Primary resource block, typically carrying `URL` pointing at the publisher landing page.
      - `URL` string, nullable — Canonical `https://doi.org/...` URL for the work.
      - `source` string, nullable — Upstream source label (always `Crossref`).
      - `score` number, nullable — Relevance score assigned by the search engine on query endpoints.
      - `update-policy` string, nullable — Update-policy DOI announcing retractions or corrections for this work.
      - `updated-by` object[], nullable — List of update events (DOIs and labels) pointing at retractions or corrections for this work.
      - `content-domain` object, nullable — Controlled vocabulary for the content domain (crossmark, domain lists).
      - `relation` object, nullable — Related-works graph (references, cites, translates, is-version-of).
      - `assertion` object[], nullable — Publisher assertions (peer-review status, competing interests) attached via the Crossmark service.
      - `alternative-id` string[], nullable — Alternative publisher identifiers for the work (internal manuscript IDs).
    - `list_meta` CrossrefListMeta, required — Pagination and totals block echoed on every list endpoint.
      - `total_results` integer, nullable — Total number of items matching the query across all pages.
      - `items_per_page` integer, nullable — Page size used for this response (`rows`).
      - `next_cursor` string, nullable — Opaque cursor for the next page when cursor pagination is in use. Null when no next page.
    - `note` string, nullable — Limitation note - Crossref's authoritative inbound-citation graph is served by Event Data; results here are best-effort.
  - `meta` SugraMeta, required — Metadata attached to every /api/v1/* response envelope.
    - `endpoint` string, required — Requested endpoint path.
    - `data_time` string, required — ISO 8601 UTC timestamp of the source data, not of the request.
    - `response_time` string, required — ISO 8601 UTC timestamp when this response was produced.
    - `provider` string, required — API name and version.
    - `source` string, nullable — Identifier of the primary upstream source used for this response.
    - `attribution` string, nullable — Human-readable attribution mandated by an upstream source (e.g. a securities regulator or self-regulatory organization). Present only on responses whose source requires the owner and source to be clearly identified. Do not remove or alter it when using the response.
    - `fallback_used` boolean, nullable — True when the primary source failed and a fallback produced the data.
    - `fallback_chain` string[], nullable — Ordered list of sources attempted, in the order they were tried.
    - `cached` boolean, nullable — True when this response was served from the internal cache.
    - `stale` boolean, nullable — True when the cached response was returned after the upstream rate-limited or errored. Clients can use this to detect degraded data.

## Other responses

- `401` — Missing or invalid `x-api-key` header. JSON body with a stable `code` distinguishing `missing_api_key` (no header sent) from `invalid_api_key` (header sent, key not accepted); any other 401 source carries the generic `unauthorized` with its detail as `reason`. Plus `hint`. `plan` is always null on 401 - an unauthenticated request has no plan; quota exhaustion is 429, not 401.
- `422` — Validation Error
- `429` — Daily rate limit exceeded. Check `X-RateLimit-Reset` for the next window.
- `503` — Upstream source is temporarily unavailable. Retry after a short delay.

---

[API](https://skmtc.net/sugra/apis/sugra-api.md) · [All operations](https://skmtc.net/sugra/apis/sugra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sugra/sugra-api/versions/4c4530760ba1/schema)
