v1

latestOpenAPI 3.1.02026-07-13143194365.4 KB
feed

Get global meta-feed

Get the global content feed across all creators, powered by the persistent creator_feed_items table.

How content enters this feed:

  • Tipped content appears automatically when any tip with a source_post_url is confirmed.
  • Discovered content (from creator YouTube, Bluesky, Reddit, Medium, Substack, GitHub feeds) enters the table only when someone visits GET /v1/feed/creators/{handle}. There is no background discovery cron — this is intentional to avoid infrastructure cost until demand is validated.

Items include tip signal overlays (tip count, total USD, unique tippers). Filter by platform, time window, and sort order.

This is a public endpoint — no authentication required.

get/v1/feed/items

Query parameters

sort'recent' | 'tipped' | 'score' | 'published' | 'live'

Sort: recent, tipped, score (grove_score), published (content date), live (last tip time).

Sort: recent, tipped, score (grove_score), published (content date), live (last tip time).

platformstring nullable

Filter by platform (youtube, reddit, bluesky, medium, substack, github, x, etc.).

Filter by platform (youtube, reddit, bluesky, medium, substack, github, x, etc.).

window'24h' | '7d' | '30d' | 'all'

Time window for discovered_at filter.

Time window for discovered_at filter.

tagsstring nullable

Comma-separated tags to filter by (e.g., 'defi,ethereum'). Items must match ALL tags.

Comma-separated tags to filter by (e.g., 'defi,ethereum'). Items must match ALL tags.

limitinteger

Items per page.

Items per page.

cursorstring nullable

Opaque pagination cursor.

Opaque pagination cursor.

Response

Feed items with optional content metadata

cursorstring nullable

Opaque cursor for fetching the next page. Null if no more results.

has_moreboolean

Whether more results exist beyond this page.

total_countinteger required

Total number of unique tipped URLs matching the filter.

Example response

{
  "items": [
    {
      "url": "https://www.youtube.com/watch?v=abc123",
      "platform": "youtube",
      "tip_count": 42,
      "total_amount_usd": "125.50",
      "unique_tippers": 18,
      "last_tipped_at": "2026-03-22T14:30:00Z",
      "content": {
        "title": "The Bull Case for Ethereum in 2026",
        "description": "Ryan and David break down why ETH could outperform...",
        "image_url": "https://i.ytimg.com/vi/abc123/hqdefault.jpg",
        "author_name": "Bankless",
        "published_at": "2026-03-22T08:15:00Z"
      },
      "enrichment_status": "cached",
      "source": "discovered",
      "creator_handle": "alice",
      "creator_avatar_url": "https://pbs.twimg.com/profile_images/abc/photo.jpg",
      "embed_id": "dQw4w9WgXcQ"
    }
  ],
  "total_count": 1234
}