. . . . .. .. .: . . .. . . .:.. .. .. .. . .. .+... . .. .::..: .. ... ..............:.+. . .. . .:..::::---=. ..:---:. . .=--=-:.-::..=:-:. . .. ..... . . .-. . .:==-----+=-:. :--:.=.-..... . .-===::---:-:::::. ..::-:--:. . .:.=.::--.. . ..... ..:-=== ===.-:: .::::..:: .:.... ..:==-=+=+=-=-=::.+.:.... .:-:::.. ...+... .:.:::-=++::.. .=.. . .. ..-...:..::+====.++=-:+::.... .::::---=::.. ..:::-=+==-+X+===-:.:-+=--::=:: ..::.:. .:..:+::=:::--=+XX+---:...::.... .. ..:.+....:--.::-:---=+X++++==-:::::......::==++--:..:==--=-=--==+X==++=---+-=+==--::. .:::: :-::::--+=--=+XXXXX++=---:=-:.:....=.... .. ..::::-=-::=++==+XX.XX+X+----==.--::.:-=+X+X+===-=X+===----== XXXX++++==++++++==-:....:::.==-=--==XXX=XXXX-X:++==-++=:::--:::::....= ...:.-::-====-.-=++:+XXXXXX+==-==++=----- =XXXXXXXXXXXXX++=---:==+X.XX.+XXXXXX+X+XX++++-:.::--=X++:X =XXXXX++.XX++X++X+++--::--:-::::.:. .-..::.-=====-=-=++:+XXXXXX+==-==++=----- =XXXXXXXXXXXXX++=---:==+X.XX.+XXXXXX+X+XX++++-:.::--=X++:X =XXXXX++.XX++X++X+++--::--:-::::.:.

Feeds

Manage your RSS feeds, categories, and subscriptions.
View
epuraı
epuraı
K
  • Introduction
  • Quickstart
  • Guides

    • Introduction
    • Quickstart
    • Authentication
    • Pagination
    • Errors
  • API Reference

    • Feeds
    • Feed Posts
    • Categories
    • AI
  • Sign in

Feeds API

Feeds are the content sources in your Repurai workspace — blogs, newsletters, YouTube channels, and more. Use these endpoints to list, inspect, delete, and refresh your subscriptions.


The feed model

  • Name
    id
    Type
    string
    Description

    Unique identifier for the feed.

  • Name
    lastFetchedAt
    Type
    timestamp
    Description

    When the feed was last checked for new posts.

  • Name
    categoryId
    Type
    string
    Description

    The category this feed is assigned to.

  • Name
    title
    Type
    string
    Description

    The title of the feed subscription.

  • Name
    userlink
    Type
    string
    Description

    The user-facing homepage URL of the feed source.

  • Name
    description
    Type
    string
    Description

    A short summary or description of the feed content.

  • Name
    favicon
    Type
    string
    Description

    URL of the feed's favicon icon asset.

  • Name
    isLocked
    Type
    boolean
    Description

    true when the feed sits beyond your plan's feed limit. Locked feeds stay in your workspace and are still listed, but their posts are not returned and they are not refreshed. Returned by GET /api/v1/feeds only.


GET/api/v1/feeds

List all feeds

Returns all feeds in your workspace.

Request

GET/api/v1/feeds
curl https://repurai.com/api/v1/feeds \
  -H "Authorization: Bearer [API_Key]"

Response

success

{
  "data": [
    {
      "id": "2b3528dc-d64b...",
      "lastFetchedAt": "2026-05-19T13:06:49.016Z",
      "categoryId": "b3c8f77e-cd66...",
      "title": "AI Engineer",
      "userlink": "https://www.youtube.com/@aiDotEngineer",
      "description": "Discover insights and updates from this source.",
      "favicon": "https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.youtube.com/@aiDotEngineer&size=256",
      "isLocked": false
    }
  ]
}

GET/api/v1/feeds/:id

Get a feed

Returns the details of a single feed.

Request

GET/api/v1/feeds/:id
curl https://repurai.com/api/v1/feeds/[feedId] \
  -H "Authorization: Bearer [API_Key]"

Response

success

{
  "id": "2b3528dc-d64b...",
  "lastFetchedAt": "2026-05-19T13:06:49.016Z",
  "categoryId": "b3c8f77e-cd66...",
  "title": "AI Engineer",
  "userlink": "https://www.youtube.com/@aiDotEngineer",
  "description": "Discover insights and updates from this source.",
  "favicon": "https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.youtube.com/@aiDotEngineer&size=256"
}

GET/api/v1/feeds/:id/posts

Get feed posts

Returns the paginated list of posts for a single feed, along with feed metadata.

Query parameters

  • Name
    page
    Type
    integer
    Description

    The page number to retrieve. Defaults to 1.

  • Name
    pageSize
    Type
    integer
    Description

    The number of items to return per page. Defaults to 20.

Request

GET/api/v1/feeds/:id/posts
curl "https://repurai.com/api/v1/feeds/[feedId]/posts?page=1&pageSize=20" \
  -H "Authorization: Bearer [API_Key]"

Response

success

{
  "feedInfo": {
    "id": "2b3528dc-d64b...",
    "lastFetchedAt": "2026-05-19T13:06:49.016Z",
    "categoryId": "b3c8f77e-cd66...",
    "title": "AI Engineer",
    "userlink": "https://www.youtube.com/@aiDotEngineer",
    "description": "Discover insights and updates from this source.",
    "favicon": "https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.youtube.com/@aiDotEngineer&size=256"
  },
  "data": [
    {
      "id": "f3c97a43-22c9...",
      "title": "Rewiring the State — Eoin Mulgrew, 10 Downing Street",
      "link": "https://www.youtube.com/watch?v=ObNKGf9YR0g",
      "smallDescription": "The cabinet office was about to spend one and a half million pounds on an outside law firm...",
      "largeDescription": "The cabinet office was about to spend one and a half million pounds on an outside law firm to analyze the UK statute book. One engineer embedded with the in-house legal team for two weeks instead...",
      "publishedDate": "2026-05-18T17:00:06.000Z",
      "thumbnailUrl": "https://i4.ytimg.com/vi/ObNKGf9YR0g/maxresdefault.jpg",
      "authoruri": "https://www.youtube.com/channel/UCLKPca3kwwd-B59HNr-_lvA",
      "authorname": "AI Engineer",
      "enclouserurl": null,
      "enclousertype": null,
      "views": 246,
      "isReadLater": false,
      "transcript": "[music]\n>> Good to go? Can people hear me okay?...",
      "summary": null,
      "createdAt": "2026-05-18T19:02:49.424Z",
      "updatedAt": "2026-05-19T16:04:18.376Z"
    }
  ],
  "page": 1,
  "pageSize": 20,
  "hasMore": false
}

POST/api/v1/feeds/:id/refresh

Refresh a feed

Fetches the source again and stores any posts you do not already have.

Each feed can be refreshed once an hour. Inside that window the call still succeeds, but reports 0 new items rather than hitting the source again.

If the source cannot be reached or parsed, the response is a 502 — the failure is at the publisher's end, not ours.

Request

POST/api/v1/feeds/:id/refresh
curl -X POST https://repurai.com/api/v1/feeds/2b3528dc-d64b/refresh \
  -H "Authorization: Bearer [API_Key]"

Response

success

{
  "success": true,
  "message": "Refreshed. 3 new item(s) found.",
  "data": { "newItems": 3 }
}

POST/api/v1/feeds/refresh

Refresh all feeds

Refreshes every feed in your workspace in one call.

On-demand full sync requires a Pro plan or higher. Lower tiers get a 403.

Feeds refreshed within the last hour are skipped. The sweep works in batches within a time budget, so a very large workspace may need a second call to finish — compare feedsRefreshed against your feed count.

Request

POST/api/v1/feeds/refresh
curl -X POST https://repurai.com/api/v1/feeds/refresh \
  -H "Authorization: Bearer [API_Key]"

Response

success

{
  "success": true,
  "message": "Sync completed: 12 new items found across 8 feeds.",
  "data": { "totalNewItems": 12, "feedsRefreshed": 8 }
}
PreviousErrors
NextFeed Posts

© Copyright 2026. All rights reserved.