canonical: https://jentic.com/apis/miniflux.app/miniflux

# Miniflux App Miniflux API

Jentic publishes the only available OpenAPI specification for Miniflux API, keeping it validated and agent-ready. Miniflux is a self-hosted, minimalist feed reader exposing a REST API for managing feeds, categories, entries, users, and API keys. The 50 endpoints cover the full lifecycle: discover and add feeds, browse and mark entries, organise feeds into categories, manage users on multi-tenant deployments, and export or import OPML for backup. Self-hosting means each Miniflux deployment serves its own base URL.

## For AI agents

Programmatically manage feeds, categories, and entries in a self-hosted Miniflux feed reader. Useful for automated reading queues, alerting, and content pipelines.

## Scope

Does not handle email digests, content authoring, or full-text search across the open web - use for managing a self-hosted RSS reader only.

## Capabilities

- Discover feeds for a website with POST /discover and create them via POST /feeds
- Mark all entries in a feed or category as read with PUT `/feeds/{feedId}/mark-all-as-read` and PUT `/categories/{categoryId}/mark-all-as-read`
- Bookmark or save entries individually using PUT `/entries/{entryId}/bookmark` and POST `/entries/{entryId}/save`
- Organise feeds into categories with POST /categories and move feeds between them via PUT `/feeds/{feedId}`
- Refresh feeds on demand using PUT `/feeds/{feedId}/refresh` or PUT `/feeds/refresh` for the whole account
- Export and import OPML backups through GET /export and POST /import
- Issue and revoke API keys with POST /api-keys and DELETE `/api-keys/{apiKeyId}`

## Use cases

### Automated Feed Onboarding

Discover and subscribe to feeds in one flow. POST /discover finds the available RSS or Atom URLs for a given website, then POST /feeds creates the subscription under the chosen category. Useful for tools that turn a list of domains into a curated reader without manual copy-paste.

Example prompt: POST /discover with a website URL, pick the first feed_url returned, then POST /feeds with that URL and category_id

### Read Inbox Cleanup

Reduce a backlogged reader by marking entries as read in bulk. Mark all entries in a single feed or an entire category as read with PUT `/feeds/{feedId}/mark-all-as-read` or PUT `/categories/{categoryId}/mark-all-as-read.` The complement endpoints flush history when required.

Example prompt: Iterate categories with GET /categories and call PUT `/categories/{categoryId}/mark-all-as-read` on every category whose name is not 'starred'

### Newsletter to Bookmark Pipeline

Watch entries for keywords and bookmark matches automatically. The agent polls GET /entries with status=unread, scans titles and content for a watchlist, then calls PUT `/entries/{entryId}/bookmark` to flag matches. Useful for analysts tracking specific topics across many feeds.

Example prompt: GET /entries?status=unread, filter by title regex matching the watchlist, and call PUT `/entries/{entryId}/bookmark` for each match

### Backup and Migration

Export the full subscription set with GET /export to download OPML, then re-import it on a new Miniflux instance with POST /import. Automation can run nightly exports for backup or migrate users between self-hosted servers without manual intervention.

Example prompt: GET /export to download the OPML, then POST /import to a second Miniflux base URL

### Agent-Driven Reading Pipelines

An AI agent uses Jentic to power a reading assistant: it discovers new feeds, organises them by category, and flags entries that match the user's interests. The Miniflux API key sits in Jentic's vault scoped to one base URL, so the agent never holds the credential directly.

Example prompt: Search Jentic for 'subscribe to a new RSS feed', load the Miniflux POST /feeds schema, and add five feeds discovered for the user's interest list

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/discover` | Discover feed URLs for a website |
| POST | `/feeds` | Subscribe to a new feed |
| GET | `/entries` | List entries with filtering |
| PUT | `/entries/{entryId}/bookmark` | Bookmark an entry |
| POST | `/categories` | Create a category |
| PUT | `/categories/{categoryId}/mark-all-as-read` | Mark category as read |
| GET | `/export` | Export OPML |
| POST | `/import` | Import OPML |

## Key resources

- **Feeds** — Discover, create, refresh, and delete RSS and Atom feed subscriptions
- **Entries** — List, read, bookmark, save, and re-fetch entry content
- **Categories** — Group feeds and mark whole categories as read
- **Users** — Manage self-hosted multi-user deployments
- **API Keys** — Issue and revoke per-account API keys for automation

## Why Jentic

- **Setup:** Wiring Miniflux by hand means handling either basic auth or an X-Auth-Token API key, pointing at your own self-hosted base URL, and coding the feed, entry, and category calls yourself. Through Jentic you install once, import Miniflux from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** Miniflux puts the entry and category ids in the URL path (`/entries/{entryId}/bookmark`, `/categories/{categoryId}/mark-all-as-read`), so a rule can pin your agent to one category or entry. You choose the operations it may call, so a write like importing an OPML file is not included unless you add it.
- **Credential handling:** Your Miniflux API key is stored once, encrypted, by your own Jentic One instance and injected as the X-Auth-Token header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'subscribe to a feed' or 'mark a category as read', and Jentic returns the matching Miniflux operation with its input schema so the agent calls the right endpoint regardless of the deployment's base URL.

## Related APIs

- **Feedly** — Feedly is a hosted feed reader with built-in AI summarisation and team boards
- **The Old Reader** — The Old Reader is a hosted Google-Reader-style RSS service with a long-standing API
- **Notion** — Notion stores curated entries from Miniflux into structured pages and databases

## FAQ

### Why is there no official OpenAPI spec for Miniflux API?

Miniflux does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Miniflux API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Miniflux API use?

Miniflux supports HTTP basic auth (username and password) and an API key in the `X-Auth-Token` header. The API key flow is preferred for automation. Through Jentic the key is held in the vault and injected on each call.

### Can I subscribe to a new RSS feed with the Miniflux API?

Yes. First call POST /discover with the website URL to find available feed URLs, then call POST /feeds with the chosen feed_url and category_id to create the subscription.

### How do I export and back up my Miniflux subscriptions?

Call GET /export to download an OPML file with every feed and category on the account. POST /import on another Miniflux deployment loads the same OPML to recreate the subscription tree.

### How do I bookmark entries through Jentic?

Run `pip install jentic`, search Jentic for 'bookmark a feed entry', and Jentic returns the Miniflux PUT `/entries/{entryId}/bookmark` operation. Provide the entry id and execute; the bookmark flag is toggled on.

### How does the API handle the self-hosted base URL?

Each Miniflux deployment runs at its own URL, e.g. `https://miniflux.example.org/v1`. Configure that as the base URL on the client. Jentic stores the base URL alongside the API key for the account so calls route correctly.

### Can I limit what my agent is allowed to do with the Miniflux API?

Yes. Because you run Jentic One yourself, your own rules decide which Miniflux operations and credentials the agent may call. Miniflux carries entry and category ids in the URL path, such as PUT `/entries/{entryId}/bookmark` and PUT `/categories/{categoryId}/mark-all-as-read`, so a rule can pin the agent to a single category or entry. You also choose the operation set, so a write like POST /import to load an OPML file stays unavailable unless you explicitly allow it.
