---
title: "Full metadata for a DOI"
method: GET
path: "/api/v1/research/crossref/works/{doi}"
tags: ["Research"]
---

# Full metadata for a DOI

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

Fetch a single scholarly work by DOI. Returns the full Crossref record including bibliographic metadata (title, authors, container, volume/issue/page, ISSN, language), dates (created, deposited, indexed, published), counts (`reference-count`, `is-referenced-by-count`), and deposited lists (references, licenses, full-text links, funder acknowledgements). DOIs contain forward slashes; pass them unencoded in the path segment. Data licensed CC0 by Crossref.

## Path parameters

- `doi` string, required — DOI of the work (e.g. `10.1038/nature12373`). Forward slashes are preserved.

## Response `200`

Full work record plus `indexed_date_time` mirroring `meta.data_time`.

- EnvelopeCrossrefWorkPayload
  - `data` CrossrefWorkPayload, required — Response payload for `/api/v1/research/crossref/works/{doi}`.
    - `work` CrossrefWork, required — Single work record as returned under `message` of `/works/{doi}`.
      - `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).
    - `indexed_date_time` string, nullable — ISO 8601 timestamp of Crossref's last re-index of this record (matches `meta.data_time`).
  - `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.
- `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/4e2740743eb4/schema)
