---
title: "Get a research paper"
method: GET
path: "/v1/papers/{slug}"
tags: ["Papers"]
---

# Get a research paper

`GET /v1/papers/{slug}`

## Request

- Base URL: `https://api.gunspec.io`
- URL: `https://api.gunspec.io/v1/papers/{slug}`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Returns one published research paper, including its full body, its authors, its review status and the API calls that reproduce its figures.

Available on every plan. Requires an API key; Explorer keys receive a reduced field set.

## Path parameters

- `slug` string, required

## Response `200`

Get a research paper

- object
  - `success` boolean, required: Always true on a successful response. Every error carries `false` and an `error` object instead.
  - `data` object, required: The paper, wrapped as the blog read wraps a post.
    - `paper` object: A research paper as the public reads serve it.
      - `id` string: Paper id.
      - `slug` string: URL segment of the paper on the research site.
      - `title` string: Paper title.
      - `abstract` string, nullable: The abstract, as plain text.
      - `body` string, nullable: The paper in markdown. A `gunspec-chart` fence names a chart by the catalogue data it draws.
      - `keyFindings` string[]: The findings, one sentence each, for a reader with a minute.
      - `reportType` 'technical_report' | 'technical_note' | 'preprint' | 'white_paper': What kind of document it is.
      - `reviewStatus` 'not_reviewed' | 'submitted' | 'under_review' | 'peer_reviewed': What the research has been through. Publication on the research site is not a review; `peer_reviewed` means a venue accepted it.
      - `venue` string, nullable: Where it was submitted or published, when it was.
      - `doi` string, nullable: Its DOI as registered, never a URL.
      - `authors` object[]: Named authors, in order.
        - `name` string: Author name.
        - `affiliation` string, nullable: Author affiliation.
      - `topic` string, nullable: What the paper is about, as a slug.
      - `dataVersion` string, nullable: The catalogue data the figures were computed on.
      - `methods` string[]: The documentation Methods pages its figures are computed by, by slug.
      - `apiCalls` string[]: API calls that reproduce its figures.
      - `heroImage` string, nullable: The hero picture, as a path on the research site.
      - `heroAlt` string, nullable: What the hero shows, as alt text.
      - `status` string: Always `published` on a public read.
      - `publishedAt` string, nullable: When it went public.
      - `createdAt` string: When the record was first added, `YYYY-MM-DD HH:MM:SS` in UTC.
      - `updatedAt` string: When a field we serve last changed.

## Other responses

- `400`: Validation error
- `401`: Missing or invalid API key
- `403`: The credential is valid and the caller is not permitted. Three causes, none of which reissuing a key changes: the plan is below the endpoint's tier, the account is suspended, or the key is not attached to the thing being acted on, meaning a user account for `/v1/me` or a shop for `/v1/vendor`. Distinct from 401, which means the credential is missing, malformed or expired and a new one can work.
- `404`: Resource not found
- `429`: A limit was reached. `RATE_LIMITED` is the per-minute limit: wait `Retry-After` seconds (a minute) and retry. `DAILY_CAP_EXCEEDED` is the plan's daily limit, per key: nothing will be served until the counters return to zero at midnight UTC. `MONTHLY_CAP_EXCEEDED` is the plan's monthly allowance, for the whole account: nothing will be served until midnight UTC on the first of next month, or until the plan changes. For both, `Retry-After` is the seconds until then and `error.resetsAt` says when as an instant. Calls made after a refusal are refused too and do not spend the month, and a free key that keeps calling is paused, so stop at the first one and resume at the reset.
- `500`: Internal server error

---

[API](https://skmtc.dev/gunspec/apis/gunspec-io-api.md) · [All operations](https://skmtc.dev/gunspec/apis/gunspec-io-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gunspec/apis/gunspec-io-api/revisions/f2e974d8b05c?raw)
