---
title: "Fetch and parse a feed"
method: GET
path: "/v1/feeds/fetch"
tags: ["feeds"]
---

# Fetch and parse a feed

`GET /v1/feeds/fetch`

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/feeds/fetch`
- Auth: none required

Fetch an RSS, Atom, or JSON feed and return its articles as normalized JSON. Results are cached for five minutes.

Needs no credential: the RSS app on the screen calls it. Limited to 120 calls a minute from one IP address.

**Notes.**
- `fetchedAt` is a top-level key beside `data`, not inside it.
- Cached for 5 minutes (`Cache-Control: public, max-age=60, s-maxage=300`).

## Query parameters

- `url` string, required
- `lang` string
- `translate` '1'
- `dt` string

## Response `200`

Success.

- object
  - `data` ParsedFeed, required
    - `source` object, required
      - `name` string, required: The feed's title.
      - `handle` string, required: The feed URL's host.
      - `link` string, nullable, required: The site link the feed gives.
    - `articles` object[], required
      - `id` string, required
      - `title` string, required
      - `description` string, required: Plain-text summary. Can be empty.
      - `body` string, required: Plain-text body; the description when the feed has only one.
      - `url` string, required: The article's link.
      - `image` string, nullable, required
      - `imageCredit` string, nullable, required
      - `author` string, required: Empty when the feed names no author.
      - `publishedAt` string, required: A relative phrase made at fetch time (`2 hours ago`, `Yesterday`).
      - `publishedIso` string, nullable, required: ISO-8601 timestamp (UTC).
      - `readTime` string, required: Reading-time estimate (`1 min read`).
      - `category` string, required: The first category, or empty.
  - `fetchedAt` string, required: When the feed was fetched. It is beside `data`, not in it.

## Other responses

- `401`: Missing, expired or revoked bearer token.
- `413`: The feed is too large.
- `422`: `url` is missing, or no feed was found at it.
- `429`: More than 120 calls in a minute from this IP address.
- `502`: The site did not answer, or answered with an error.
- `5XX`: Server error. The body carries a `requestId` to quote to support.

---

[API](https://skmtc.dev/brixsignage/apis/brix-api.md) · [All operations](https://skmtc.dev/brixsignage/apis/brix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brixsignage/apis/brix-api/revisions/02fd3665dc7d?raw)
