Appearance
List All Bundles
FreshGET /v1/bundles
Returns a paginated array of all bundles in your account.
Query Parameters
| Parameter | Type | Default | Max | Description |
|---|---|---|---|---|
limit | integer | 10 | 100 | Number of bundles per page |
offset | integer | 0 | — | Number of bundles to skip |
Code Example
js
const axios = require('axios');
const apiClient = axios.create({
baseURL: 'https://api.rss.app/v1',
headers: {
Authorization: 'Bearer YOUR_API_KEY:YOUR_API_SECRET',
},
});
// First page
const response = await apiClient.get('/bundles');
console.log(`Got ${response.data.length} bundles`);
// Specific page
const page2 = await apiClient.get('/bundles', {
params: { limit: 20, offset: 20 },
});Response
HTTP 200 with a JSON array of bundle objects. Returns an empty array [] when no bundles exist or the offset exceeds the total count.
json
[
{
"id": "bundle_xyz789",
"name": "Technology News",
"description": "Aggregated tech coverage",
"icon": null,
"rss_feed_url": "https://rss.app/feeds/bundle-id.xml",
"feeds": ["feed_abc123", "feed_def456"],
"items": [ ... ]
},
{
"id": "bundle_uvw456",
"name": "Science News",
"description": null,
"icon": null,
"rss_feed_url": "https://rss.app/feeds/bundle2-id.xml",
"feeds": ["feed_ghi789"],
"items": [ ... ]
}
]Retrieve All Bundles
js
async function getAllBundles() {
const allBundles = [];
const limit = 100;
let offset = 0;
while (true) {
const response = await apiClient.get('/bundles', {
params: { limit, offset },
});
const bundles = response.data;
allBundles.push(...bundles);
if (bundles.length < limit) break;
offset += limit;
}
return allBundles;
}
const bundles = await getAllBundles();
console.log(`Total bundles: ${bundles.length}`);
// Find all bundles containing a specific feed
const feedId = 'feed_abc123';
const bundlesWithFeed = bundles.filter((b) => b.feeds.includes(feedId));
console.log(`Feed is in ${bundlesWithFeed.length} bundle(s)`);Error Responses
| Status | Meaning |
|---|---|
| 401 | Authentication failed |
| 429 | Rate limit exceeded |