---
title: "Find the feed behind any address, or read a Google Sheet"
method: POST
path: "/api/rss/discover"
---

# Find the feed behind any address, or read a Google Sheet

`POST /api/rss/discover`

## Request

- Base URL: `https://postwire.io`
- URL: `https://postwire.io/api/rss/discover`
- Auth: HTTP bearer

Paste a site, a blog, a YouTube channel (by @handle, /channel/ or /user/), a Substack, Medium, WordPress or Ghost site, or a Google Sheets link. For a page: PostWire looks for its RSS or Atom link, what the page says it is (a YouTube channel id, a WordPress or Ghost generator, Substack), then /feed, /rss, /feed.xml and /index.xml — at most 6 requests, each with the same protections as a feed (8 seconds, 2 MB, private addresses refused on every hop). For a sheet: its next 5 ready rows and where each lands on the plan (to the queue, held, or the next read). Nothing is saved; add it with POST /api/rss. 20 an hour.

## Request body

- object
  - `url` string, required: yourblog.com, youtube.com/@you, a Substack or a docs.google.com/spreadsheets link.
  - `platforms` string[]: For a sheet: the networks of rows whose networks cell is empty.
  - `timezone` string: For a sheet: the timezone of times without one. Default: the brand's, else UTC.
  - `brand_id` string, uuid

## Response `200`

A feed: { ok, kind: "rss", feed_url, title, source (youtube | substack | medium | wordpress | ghost | link | guess | direct), site, items_in_feed, items: the newest 3, plan, message }. A sheet: { ok, kind: "sheet", url (its CSV), published, timezone, columns, status_col, rows_total, ready, new, already_scheduled, skipped, skipped_lines, next: [{ line, run_at, next_slot, networks, text, status, lands: queued | held | later }], will_queue, will_hold, later, note, plan, sheets_ready, message }.

## Other responses

- `400`: feed_url_blocked, bad_feed_url
- `422`: no_feed_found ("no feed found on this page …"), feed_http_error, feed_timeout, feed_too_large, feed_too_many_redirects, sheet_not_shared, bad_sheet
- `429`: rate_limited

---

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