---
title: "Update a feed"
method: PATCH
path: "/v1/feeds/{id}"
tags: ["Feeds"]
---

# Update a feed

`PATCH /v1/feeds/{id}`

## Request

- Base URL: `https://api.mentio.dev`
- URL: `https://api.mentio.dev/v1/feeds/{id}`
- Auth: HTTP bearer

Rename a feed (title, null clears it), or set its sign-in for a members-only forum (auth: a cookie copied from your browser, or one header such as Discourse's Api-Key). A sign-in is checked by reading the feed with it, stored encrypted, sent to the feed's own site alone and never shown again; the feed is then read for this workspace alone. auth: null removes it.

## Path parameters

- `id` string, required: Feed id (fd_...).

## Request body

- object: Omitted fields are untouched.
  - `title` string, nullable: Your name for the feed; null clears it.
  - `auth` union: Replaces the sign-in (checked by reading the feed with it first); null removes it and the feed is read signed out again.
    - object
      - `type` 'cookie', required
      - `value` string, required: The Cookie header your browser sends to the forum (devtools, Network, the feed's request, Request Headers, cookie).
    - object
      - `type` 'header', required
      - `name` string, required: The header name, e.g. Api-Key (Discourse) or Authorization.
      - `value` string, required: Its value.
    - unknown

## Response `200`

The updated feed

- Feed: An RSS or Atom feed every keyword of the workspace reads.
  - `id` string, required: Feed id (fd_...).
  - `url` string, required: The feed itself (after redirects, or the one the page advertised): what is polled.
  - `title` string, nullable, required: The feed's own title, when it has one.
  - `connectedAt` string, required: When the workspace connected it.
  - `readingSince` string, required: Nothing published before this is a live mention: the connection, or the last time its sign-in was added or removed (signed in and signed out, a post is read as two different posts, so the switch starts over rather than bill one twice).
  - `auth` object, nullable, required: The sign-in the feed is read with, or null for a public feed. PATCH { auth } replaces it, { auth: null } removes it.
    - `type` 'cookie' | 'header', required: cookie or header. The value is never shown.
  - `health` object, required: Whether the hourly read works.
    - `status` 'ok' | 'failing', required: failing: the last 3 hourly reads or more failed (a feed.failing event went out); ok otherwise.
    - `reason` 'login_required' | 'login_expired' | 'blocked' | 'not_found' | 'not_a_feed' | 'unreachable', nullable, required: Why the last read failed; null when it read well.
    - `detail` string, nullable, required: What the last failed read saw.
    - `failures` integer, required: Failed hourly reads in a row.
    - `since` string, nullable, required: While failing: since when.
  - `stats` object, required: How the hourly poll of this feed is going.
    - `lastPolledAt` string, nullable, required: When the feed was last read; null until its first poll (within the hour).
    - `emptyPolls` integer, required: Polls in a row that brought nothing new; a feed that keeps reading empty may have moved.

## Other responses

- `400`: feed_login_expired or feed_login_required: the sign-in does not read the feed; feed_unreadable: the feed cannot be read at all
- `401`: Missing or invalid API key
- `404`: No such feed in this workspace
- `429`: More than 30 feeds checked in a minute
- `503`: feed_auth_not_configured: this deployment cannot store a sign-in

---

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