> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dexi.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Published Feeds

> Read a published Dexi feed as JSON or RSS — no authentication

Dexi users can publish curated, tag-filtered feeds of their notes. Feeds shared as **public** or **link-only** are readable by anyone who has the feed's UUID — no credentials; private feeds return `404` (existence is never confirmed). These are consumption endpoints for feed readers and site embeds, not a general read API.

## RSS

```
GET https://api.dexi.net/api/v2/publisher/feeds/{feed_id}/rss
```

Returns standard RSS 2.0 (`application/rss+xml`) — point any feed reader at it. This is the URL shown on a feed's public page at `app.dexi.net/feeds/{feed_id}`.

## JSON

```
GET https://api.dexi.net/api/v2/publisher/feeds/{feed_id}/public
```

```json Example response theme={null}
{
  "id": "d6a1b8c2-4e5f-4a7b-9c3d-1e2f3a4b5c6d",
  "title": "Signals in AI Infrastructure",
  "description": "What I'm reading on the picks-and-shovels layer.",
  "author": "Julian Gay",
  "rss_url": "https://api.dexi.net/api/v2/publisher/feeds/d6a1b8c2-4e5f-4a7b-9c3d-1e2f3a4b5c6d/rss",
  "entries": [
    {
      "id": "2982e9b4-19fe-40fd-9a69-e23d45e53b13",
      "title": "Attention Is All You Need",
      "text": "Reading notes on the transformer paper — the key insight is…",
      "updated": "2026-08-02T18:40:11+00:00"
    }
  ]
}
```

Entries are the publisher's notes matching the feed's tag filter, newest first. `updated` may be `null` on rare legacy notes.

### Fields

| Field | Type | Notes |
| - | - | - |
| `id` | UUID | The feed id — the same one in the URL |
| `title` | string | Feed title as the publisher set it |
| `description` | string or `null` | Optional blurb |
| `author` | string | Publisher's display name; may be empty |
| `rss_url` | URL | The RSS 2.0 rendering of the same feed |
| `entries[].id` | UUID | Note id (stable across fetches) |
| `entries[].title` | string | `Untitled` when the note has no title |
| `entries[].text` | string | Entry body as plain text — formatting, wiki links and tags are flattened |
| `entries[].updated` | ISO 8601 or `null` | Last edit time, UTC |

## Access and visibility

A feed's publisher chooses one of three access levels in the app. **Public** and **link-only** feeds behave identically on these endpoints — the UUID is the only credential, so treat a link-only URL as a secret. **Private** feeds answer `404` to everyone but the signed-in owner, and the two routes never reveal whether an id exists. Changing a feed's access, or the tag filter behind it, takes effect on the next request; nothing is cached server-side.

## Polling

Both routes are rate-limited per IP (120 requests per minute) and return the `RateLimit-*` headers described in [Versioning](/api/versioning). Feed readers that poll every 15–60 minutes are well inside the cap. There are no conditional-request headers (`ETag`, `Last-Modified`) today — compare `entries[].updated` to detect changes, or just re-render the list.

## Embedding

The JSON route is not open to cross-origin browser requests from arbitrary sites, so fetch it from your build step or server (a static-site generator, an edge function, a cron job) and render the entries into your page. For a no-code option, hand the RSS URL to any feed-to-HTML widget or newsletter tool that accepts RSS 2.0 — that is what the public share page at `app.dexi.net/feeds/{feed_id}` links to.

## Errors

| Status | Meaning |
| - | - |
| `404` | Unknown feed id, or a private feed you don't own |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.