---
title: "Get aggregated tipped content feed"
method: GET
path: "/v1/feed"
tags: ["feed"]
---

# Get aggregated tipped content feed

`GET /v1/feed`

Returns aggregated tip destinations with optional content enrichment. Each item represents a unique URL that has been tipped, with tip counts, total amounts, and optionally enriched metadata (title, description, thumbnail).

## Query parameters

- `sort` 'popular' | 'new' — Sort order: 'popular' (by total USD) or 'new' (by most recent tip).
- `window` '24h' | '7d' | '30d' | 'all' — Time window: '24h', '7d', '30d', or 'all' (all time).
- `platform` string, nullable — Filter by platform (e.g., 'youtube', 'reddit', 'bluesky', 'medium'). Omit for all platforms.
- `enrich` boolean — If true, enrich items with content metadata (title, description, thumbnail).
- `limit` integer — Maximum number of items per page.
- `cursor` string, nullable — Opaque cursor for pagination. Pass the cursor from the previous response to get the next page.

## Response `200`

Successful Response

- FeedResponse — Paginated feed response with aggregated tip destinations.
  - `items` FeedItem[], required — Feed items ordered by the requested sort.
    - `url` string, required — Source URL that was tipped.
    - `platform` string, required — Platform identifier (youtube, reddit, bluesky, medium, website, x, github, etc.).
    - `tip_count` integer — Total number of tips to this URL.
    - `total_amount_usd` string — Total USD value of tips to this URL.
    - `unique_tippers` integer — Number of unique accounts that tipped this URL.
    - `last_tipped_at` string, nullable — Timestamp of the most recent tip (ISO 8601).
    - `last_tip_context` TipContextResponse — Social graph context attached to a tip (response model). This is the output version of TipContext - no validation needed since it's read from the database. All fields are optional as tips may have partial or no context.
      - `source_post_url` string, nullable
      - `sender_username` string, nullable
      - `sender_profile_url` string, nullable
      - `sender_platform` string, nullable
      - `sender_grove_handle` string, nullable
      - `recipient_username` string, nullable
      - `recipient_profile_url` string, nullable
      - `recipient_grove_handle` string, nullable
      - `campaign` string, nullable
      - `referrer` string, nullable
      - `custom_metadata` string, nullable
      - `is_discrete_giveaway_entry` boolean
      - `is_paid_message` boolean
    - `content` FeedContent — Enriched content metadata fetched from the source platform. All fields are nullable — enrichment may partially succeed (e.g., title available but no thumbnail). Consumers should handle missing fields gracefully with platform-specific fallback images.
      - `title` string, nullable — Content title (video title, post title, article headline).
      - `description` string, nullable — Content excerpt or description (truncated to 500 chars).
      - `image_url` string, nullable — Thumbnail or preview image URL. HTTPS only. Consumers should proxy via next/image or equivalent.
      - `author_name` string, nullable — Content author or channel name.
      - `published_at` string, nullable — Original publish date (ISO 8601).
    - `enrichment_status` string — Status of content enrichment: 'cached', 'pending', or 'unavailable'.
    - `source` string — How this item entered the feed: 'tipped' or 'discovered' (from creator's platform feed).
    - `creator_handle` string, nullable — Grove handle of the content creator (when known).
    - `creator_avatar_url` string, nullable — Avatar URL of the Grove creator associated with this content (when known).
    - `embed_id` string, nullable — Platform-specific embed identifier (e.g., YouTube video_id).
  - `cursor` string, nullable — Opaque cursor for fetching the next page. Null if no more results.
  - `has_more` boolean — Whether more results exist beyond this page.
  - `total_count` integer, required — Total number of unique tipped URLs matching the filter.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/grove/apis/grove-api.md) · [All operations](https://skmtc.net/grove/apis/grove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/grove/grove-api/versions/f286b48a8105/schema)
