---
title: "Bulk-fetch articles by ID (top-level alias)"
method: GET
path: "/api/bulk"
---

# Bulk-fetch articles by ID (top-level alias)

`GET /api/bulk`

## Request

- Base URL: `https://mcp.rrmacademy.org`
- URL: `https://mcp.rrmacademy.org/api/bulk`
- Auth: none required

Top-level alias for /api/articles/bulk. Identical behavior. Shares the 30 req/min IP budget. Exists so URL-pattern scanners recognize the batch endpoint at /api/bulk.

## Query parameters

- `ids` string, required

## Response `200`

Bulk-fetch results (BulkArticleResponse shape)

- BulkArticleResponse: Returned by GET /api/articles/bulk and GET /api/bulk. Partial-failure batch response: found IDs are returned in results[]; IDs that did not resolve to a published article are listed in not_found[] rather than failing the whole request. The batch always returns HTTP 200 when the query is well-formed, even if every ID is missing. `requested` = count of unique IDs received (deduped, max 50); `returned` = results.length. requested === returned + not_found.length.
  - `results` ArticleSummary[], required: Successfully resolved articles, in the deduped order of the requested IDs.
    - `id` string, required
    - `slug` string, required
    - `url` string, uri, required
    - `title` string, required
    - `authors` string
    - `year` integer, nullable
    - `journal` string
    - `doi` string
    - `pmid` string
    - `abstract` string
    - `topics` string[]
    - `is_open_access` boolean
    - `date_added` string, date, nullable
  - `not_found` string[], required: Requested IDs that did not resolve to a published article (partial-failure list).
  - `requested` integer, required: Count of unique IDs received (after dedupe, capped at 50).
  - `returned` integer, required: Count of articles in results[]. Equals requested minus not_found.length.

## Other responses

- `400`: Malformed `ids` query (regex mismatch).
- `429`: Rate limited (30 req/min per IP)
- `503`: Upstream library service unavailable

---

[API](https://skmtc.dev/rrmacademy/apis/rrm-academy-agent-api.md) · [All operations](https://skmtc.dev/rrmacademy/apis/rrm-academy-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rrmacademy/apis/rrm-academy-agent-api/revisions/0e3589a38b0c?raw)
