---
title: "Api News Bulk"
method: GET
path: "/api/news/bulk"
tags: ["News"]
---

# Api News Bulk

`GET /api/news/bulk`

## Request

- Base URL: `https://www.oxfordledge.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.oxfordledge.com/api/news/bulk`
- Auth: none declared

Company-specific news for MANY tickers in ONE call (#load-perf 2026-07-14).

Anon-safe, same source + article shape as /api/news/ticker. Replaces the N
per-ticker /api/data?ticker= fan-out the news view fired for missing portfolio
holdings — one round-trip instead of N, and fewer total requests than the
status quo (so it also relieves the anon rate limit rather than stressing it).

## Query parameters

- `tickers` string, nullable
- `limit` integer

## Response `200`

Successful Response

- NewsBulkResponse: `GET /api/news/bulk?tickers=A,B,C` — per-ticker news for MANY tickers in ONE anon-safe call (#load-perf 2026-07-14). Replaces the N per-ticker /api/data?ticker= fan-out the news view fired for missing portfolio holdings. Both branches return {news, tickers}; `news` maps each requested ticker to its article list (same shape as NewsTickerResponse.articles), so the FE can always index news[ticker] without a null-check. Success adds count; error adds `error` (and news is still an object, never null).
  - `news` object, required
  - `tickers` string[], required
  - `count` integer, nullable
  - `error` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api.md) · [All operations](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/revisions/e832a1260f0b?raw)
