---
title: "Subscribe to feed"
method: POST
path: "/subscribe_to_feed"
---

# Subscribe to feed

`POST /subscribe_to_feed`

## Request

- Base URL: `https://newsmind.app/api/v1`
- URL: `https://newsmind.app/api/v1/subscribe_to_feed`
- Auth: OAuth 2 (authorization code, authorization URL `https://newsmind.app/oauth/authorize`, token URL `https://newsmind.app/oauth/token`, scopes: `mcp`)

## Request body

- object
  - `url` string, uri, required: Feed URL or the site's homepage (HTML pages are auto-discovered). Must be absolute with a scheme - http:// and https:// are both accepted; a bare domain like example.com returns reason not_a_url. Pass it as the user gave it: tracking params (utm_source, fbclid, ref, ...) and #fragments are stripped server-side.
  - `folder` string: Folder to file the new subscription under. Omit for top-level - there is no default folder. Created on demand, so reuse an existing folder's spelling exactly as get_feeds returns it (matching is case-sensitive). Ignored if already subscribed (status already_subscribed); refile with move_feed_to_folder.

## Response `200`

Success

- object
  - `feed_id` integer, nullable
  - `status` 'created' | 'already_subscribed' | 'queued'

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `402`: Subscription required (trial expired or cancelled)
- `429`: Too many calls. Either the per-account rate limit ({error: "rate_limited", message}) or the account's in-flight work ({error: <sentence>, code: "busy"}). Wait Retry-After seconds.
- `500`: Server error on our side (error: internal_error). The team has been notified.
- `503`: Temporarily unable to answer. error: timeout (the request ran too long; narrow it), server_busy or tier_unavailable (retry after Retry-After seconds when sent).

---

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