---
title: "List content sources and subscriptions"
method: GET
path: "/api/sources"
tags: ["Sources"]
---

# List content sources and subscriptions

`GET /api/sources`

## Request

- Base URL: `https://keep.md`
- URL: `https://keep.md/api/sources`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `keep.session_token`

Returns compact source status manifests by default. Use include=settings for redacted configuration and rules. Use include=sensitive only for controlled debugging because the response may contain credentials.

## Query parameters

- `include` 'settings' | 'sensitive'

## Headers

- `Keep-API-Version` string

## Response `200`

Sources

- object
  - `sources` Source[], required
    - `id` string, required
    - `type` 'rss' | 'youtube_channel' | 'x_articles' | 'email_inbox' | 'web_monitor', required
    - `name` string
    - `status` 'active' | 'paused' | 'error', required
    - `contentMode` 'posts' | 'articles' | 'both'
    - `pollEveryMin` integer
    - `nextPollAt` integer, nullable
    - `lastRunAt` integer, nullable
    - `lastSuccessAt` integer, nullable
    - `lastError` string, nullable
    - `inboxAddress` string, nullable
    - `config` object: Source configuration. Present with include=settings or include=sensitive. Secret fields and credential-like URL parameters are replaced with [redacted] unless include=sensitive was requested.
    - `cursor` object: Internal source cursor. Present only when include=sensitive was requested.
    - `createdAt` integer, required
    - `updatedAt` integer, required

## Other responses

- `400`: Invalid request
- `401`: Authentication required
- `403`: The credential lacks access or the plan does not include the feature

---

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