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

# RSS

> Sync RSS and Atom feed entries into a Mixpeek bucket, one object per entry.

> [!NOTE]
>
> Each feed entry becomes a bucket object. Mixpeek polls the feed URL on the interval you set.

## Overview

Point a sync at a feed URL. Mixpeek reads the feed, creates one object per entry, and skips entries it has already seen.

Both RSS and Atom are supported.

## Prerequisites

* A reachable feed URL.
* HTTP headers for the feed, if it is private.

## Configuration

### Connection-level fields

| Field | Required | Description |
| - | - | - |
| `credentials.headers` | No | HTTP headers for private feeds, for example `Authorization` |
| `user_agent` | No | Defaults to `Mixpeek RSS Sync/1.0` |
| `request_timeout` | No | Seconds, defaults to `30` |

### Sync-level fields

| Field | Required | Description |
| - | - | - |
| `source_path` | Yes | The feed URL |
| `polling_interval_seconds` | No | Defaults to `300` |
| `batch_size` | No | Defaults to `50` |

> [!TIP]
>
> A public feed needs no credentials. Create the connection with an empty `provider_config` and put the URL on the sync.

## Setup

**1. Create the storage connection**

```python Python theme={null}
from mixpeek import Mixpeek

client = Mixpeek(api_key="your-mixpeek-api-key")

connection = client.organizations.connections.create(
    name="Industry News Feeds",
    provider_type="rss",
    provider_config={},
)
print(f"Created connection: {connection['connection_id']}")
```

```javascript JavaScript theme={null}
import { Mixpeek } from 'mixpeek-sdk'

const client = new Mixpeek({ apiKey: 'your-mixpeek-api-key' })

const connection = await client.organizations.connections.create({
  name: 'Industry News Feeds',
  provider_type: 'rss',
  provider_config: {},
})
console.log('Created connection:', connection.connection_id)
```

```bash cURL theme={null}
curl -X POST https://api.mixpeek.com/v1/organizations/connections \
  -H "Authorization: Bearer YOUR_MIXPEEK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Industry News Feeds",
    "provider_type": "rss",
    "provider_config": {}
  }'
```

For a private feed, pass the headers instead:

```json theme={null}
{
  "credentials": {
    "type": "http_header",
    "headers": {"Authorization": "Bearer your-feed-token"}
  }
}
```

**2. Create a sync per feed**

One connection can serve many feeds. Create one sync per feed URL.

```python Python theme={null}
sync = client.buckets.syncs.create(
    bucket_id="bkt_your_bucket_id",
    connection_id=connection["connection_id"],
    source_path="https://example.com/blog/feed.xml",
    polling_interval_seconds=3600,
)
print(f"Sync created: {sync['sync_config_id']}")
```

```bash cURL theme={null}
curl -X POST https://api.mixpeek.com/v1/buckets/bkt_your_bucket_id/syncs \
  -H "Authorization: Bearer YOUR_MIXPEEK_API_KEY" \
  -H "X-Namespace: ns_your_namespace_id" \
  -H "Content-Type: application/json" \
  -d '{
    "connection_id": "conn_your_connection_id",
    "source_path": "https://example.com/blog/feed.xml",
    "polling_interval_seconds": 3600
  }'
```

## Related

> [card] [HTTP API](https://docs.mixpeek.com/docs/integrations/web-data/http-api.md)
>
> Sync items from any JSON REST endpoint.

> [card] [BrightData](https://docs.mixpeek.com/docs/integrations/web-data/brightdata.md)
>
> Collect web datasets and scraper results.


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