---
title: "List External Feed"
method: GET
path: "/external_feeds"
tags: ["External Feeds"]
---

# List External Feed

`GET /external_feeds`

List all external feeds

## Query parameters

- `page` integer — The page number of the paginated response.

## Response `200`

OK

- ExternalFeedPage
  - `results` ExternalFeed[], required — The list of results for this page.
    - `id` string, required — A unique TypeID associated with the object.
    - `creation_date` string, date-time, required — The date and time at which the object was first created.
    - `last_checked_date` string, date-time, nullable — The most recent date and time this feed was checked for new items.
    - `status` 'active' | 'failing' | 'inactive' | 'deleted', required — Represents the status of the automation, and whether or not it is active. Inactive automations will not be processed. Deleted automations will not be processed.
    - `behavior` 'draft' | 'emails', required — An enumeration.
    - `cadence` 'every' | 'daily' | 'weekly' | 'monthly', required — An enumeration.
    - `cadence_metadata` object, required — Additional scheduling details for the selected cadence. `time` is required for `daily`/`weekly`/`monthly` cadences; `weekday` is required for `weekly`; `monthday` is required for `monthly`. See the [cadence metadata reference](https://docs.buttondown.com/api-external-feed-cadence-metadata) for allowed values.
    - `filters` FilterGroup, required — Buttondown's filtering schema can be used for multiple things: - Filtering [the audience of an email](/api-emails-create) to a specific subset - Creating [finely-tuned automations](/api-automation-introduction) Filters are fractal; they can be nested in groups, and groups can be nested in other groups. This is accomplished through a tree-like structure. Every "FilterGroup" has a "predicate" field, which is either "and" or "or", which determines how the filters and groups within the group are combined, a "groups" field, which is a list of "FilterGroup" objects (that's that recursive bit!), and a "filters" field, which are the leaf-level filters themselves. Let's say you want a simple filter: all subscribers who have a tag whose ID is `sub_tag_0j6hb7h40j6hb7h40j6hb7h40j`. You can do that like this: ```json { "filters": [{"field": "subscriber.tags", "operator": "contains", "value": "sub_tag_0j6hb7h40j6hb7h40j6hb7h40j"}], "groups": [], "predicate": "and" } ``` Now, let's say you want to filter for subscribers who have that tag and a tag whose ID is `sub_tag_0j6hb7h40j6hb7h40j6hb7h40k`. You can do that like this: ```json { "filters": [{"field": "subscriber.tags", "operator": "contains", "value": "sub_tag_0j6hb7h40j6hb7h40j6hb7h40j"}, {"field": "subscriber.tags", "operator": "contains", "value": "sub_tag_0j6hb7h40j6hb7h40j6hb7h40k"}], "groups": [], "predicate": "and" } ``` If you wanted to change that `and` to an `or`, you can do that like this: ```json { "filters": [{"field": "subscriber.tags", "operator": "contains", "value": "sub_tag_0j6hb7h40j6hb7h40j6hb7h40j"}, {"field": "subscriber.tags", "operator": "contains", "value": "sub_tag_0j6hb7h40j6hb7h40j6hb7h40k"}], "groups": [], "predicate": "or" } ``` Now, let's say you want to filter for subscribers who have the first tag _or_ both the second tag and a third tag whose ID is `sub_tag_0j6hb7h40j6hb7h40j6hb7h40m`. This is where the whole nested thing comes in handy. You can do that like this: ```json { "filters": [{"field": "subscriber.tags", "operator": "contains", "value": "sub_tag_0j6hb7h40j6hb7h40j6hb7h40j"}], "groups": [ { "filters": [{"field": "subscriber.tags", "operator": "contains", "value": "sub_tag_0j6hb7h40j6hb7h40j6hb7h40k"}, {"field": "subscriber.tags", "operator": "contains", "value": "sub_tag_0j6hb7h40j6hb7h40j6hb7h40m"}], "groups": [], "predicate": "and" } ], "predicate": "or" } ``` You can read more about the specific filter construction in the [Filter documentation](/api-emails-filter).
      - `filters` Filter[], required — The leaf-level filters to apply to the audience.
        - `field` string, required
        - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'is_empty' | 'is_not_empty' | 'greater_than' | 'less_than', required — An enumeration.
        - `value` string, required
      - `groups` FilterGroup[], required — The nested groups to apply to the audience.
      - `predicate` 'and' | 'or', required — The logical operator to use when combining filters (either 'and' or 'or').
    - `url` string, required — The URL of the RSS feed to poll for new items.
    - `subject` string, required — The subject line template for emails generated from this feed.
    - `body` string, required — The body template for emails generated from this feed.
    - `label` string, required — An optional internal label for this feed.
    - `metadata` object — Metadata to be passed to emails rendered by this RSS feed.
    - `skip_old_items` boolean, required — Skip items with publish date older than one day from when they're discovered
  - `next` string, nullable — The URL to the next page of results, if any.
  - `previous` string, nullable — The URL to the previous page of results, if any.
  - `count` integer, required — The total number of results across all pages.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `409` — Conflict
- `429` — Too Many Requests

---

[API](https://skmtc.net/buttondown/apis/buttondown-api.md) · [All operations](https://skmtc.net/buttondown/apis/buttondown-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/buttondown/buttondown-api/versions/3a702c095d22/schema)
