Skip to content

Recent Entries Leaderboard

Get the most recently published entries across all feeds on the platform.

GET/v1/leaderboards/recent-entries

Overview

Retrieve the most recently published entries across all active feeds. Useful for displaying platform-wide activity and discovering new content.

Authentication

Required: No
Payment: No

Public endpoint - no authentication needed.

Parameters

Query Parameters

ParameterTypeRequiredDescription
page_sizenumberNoNumber of results per page (default: 20, max: 100)
page_tokenstringNoPagination token for next page

Response

Status: 200 OK

{
  "data": [
    {
      "id": "string",
      "feed_id": "string",
      "title": "string",
      "description": "string",
      "mime_type": "string",
      "tags": ["string"],
      "price": "string",
      "is_free": boolean,
      "cid": "string",
      "created_at": number,
      "updated_at": number,
      "feed": {
        "id": "string",
        "name": "string",
        "description": "string",
        "wallet_id": "string"
      }
    }
  ],
  "pagination": {
    "page_size": number,
    "next_page_token": "string",
    "has_more": boolean
  }
}

Response Fields

Entry Object

FieldTypeDescription
idstringUnique entry identifier
feed_idstringFeed containing this entry
titlestringEntry title
descriptionstringEntry description
mime_typestringContent MIME type
tagsstring[]Content tags
pricestringEntry price in wei (0 for free)
is_freebooleanWhether entry is free to access
cidstringIPFS content identifier
created_atnumberCreation timestamp
updated_atnumberLast update timestamp

Embedded Feed Object

FieldTypeDescription
idstringFeed identifier
namestringFeed name
descriptionstringFeed description
wallet_idstringFeed owner wallet ID

Pagination Object

FieldTypeDescription
page_sizenumberNumber of results in current page
next_page_tokenstringToken for fetching next page (null if last page)
has_morebooleanWhether more results are available

Usage Examples

cURL
# Get latest entries
curl "https://api.grapevine.fyi/v1/leaderboards/recent-entries"
 
# Get more entries per page
curl "https://api.grapevine.fyi/v1/leaderboards/recent-entries?page_size=50"
 
# Get next page
curl "https://api.grapevine.fyi/v1/leaderboards/recent-entries?page_token=eyJ..."

Example Response

{
  "data": [
    {
      "id": "entry_123e4567-e89b-12d3-a456-426614174000",
      "feed_id": "feed_456e7890-e89b-12d3-a456-426614174111",
      "title": "Getting Started with Web3 Development",
      "description": "A comprehensive guide to building decentralized applications",
      "mime_type": "text/markdown",
      "tags": ["web3", "development", "tutorial"],
      "price": "1200000000000000000",
      "is_free": false,
      "cid": "QmX5ZQMYjKj7J8rZhG2v6KpF3mN9wQ8tL4sA7bE1cD9fR2",
      "created_at": 1704067200,
      "updated_at": 1704067200,
      "feed": {
        "id": "feed_456e7890-e89b-12d3-a456-426614174111",
        "name": "Web3 Developer Hub",
        "description": "Learn to build the decentralized web",
        "wallet_id": "wallet_789a0123-e89b-12d3-a456-426614174222"
      }
    },
    {
      "id": "entry_789a0123-e89b-12d3-a456-426614174333",
      "feed_id": "feed_012b3456-e89b-12d3-a456-426614174444", 
      "title": "Daily Market Analysis - December 30, 2024",
      "description": "Technical analysis of major cryptocurrency trends",
      "mime_type": "application/json",
      "tags": ["analysis", "crypto", "trading"],
      "price": "0",
      "is_free": true,
      "cid": "QmY6AQNYjKk8K9sAiH3w7LqG4oO0xR9uM5tB8cF2dE0gS3",
      "created_at": 1704066000,
      "updated_at": 1704066000,
      "feed": {
        "id": "feed_012b3456-e89b-12d3-a456-426614174444",
        "name": "Crypto Analytics Daily",
        "description": "Daily cryptocurrency market insights",
        "wallet_id": "wallet_345c6789-e89b-12d3-a456-426614174555"
      }
    }
  ],
  "pagination": {
    "page_size": 20,
    "next_page_token": "eyJjdXJzb3IiOiIyMDI0LTEyLTMwVDEwOjMwOjAwWiIsImlkIjoiZW50cnlfNzg5YTAxMjMifQ",
    "has_more": true
  }
}

Use Cases

1. Content Discovery

Display recently published content for users to discover.

2. Activity Feed

Show platform-wide activity in real-time feeds.

3. Homepage Content

Populate homepage with latest content across all feeds.

4. Content Curation

Identify trending and fresh content for curation.

5. Analytics Dashboard

Track content publishing velocity and patterns.

Content Types

Entries can include various content types:

  • Text Content: text/plain, text/markdown, text/html
  • Structured Data: application/json, application/xml
  • Media: image/jpeg, image/png, image/svg+xml
  • Documents: application/pdf, text/csv
  • Code: text/javascript, application/x-python-code

Filtering by Content

Free Content Only

const freeEntries = recentEntries.filter(entry => entry.is_free);
console.log(`${freeEntries.length} free entries available`);

By Content Type

const markdownEntries = recentEntries.filter(
  entry => entry.mime_type === 'text/markdown'
);

By Tags

const tutorialEntries = recentEntries.filter(
  entry => entry.tags.includes('tutorial')
);

Performance Notes

  • Ordering: Entries ordered by creation timestamp (newest first)
  • Caching: Results cached for 5 minutes for optimal performance
  • Real-time: New entries appear within 1-2 minutes of publication
  • Rate Limits: Standard rate limits apply

Error Responses

400 Bad Request

{
  "error": "Invalid page size",
  "code": "INVALID_PARAMETER",
  "details": "page_size must be between 1 and 100"
}

422 Unprocessable Entity

{
  "error": "Invalid page token",
  "code": "INVALID_PAGE_TOKEN"
}

Related Endpoints

SDK Usage

// The SDK doesn't expose leaderboards directly
// Use the client utilities for leaderboard data:
import { GrapevineClient } from '@pinata/grapevine-sdk';
 
const grapevine = new GrapevineClient({
  privateKey: process.env.PRIVATE_KEY
});
 
const response = await grapevine.client.get('/leaderboards/recent-entries');
const recentEntries = response.data;
 
console.log('Recent platform activity:');
recentEntries.data.forEach(entry => {
  console.log(`• ${entry.title} (${entry.feed.name})`);
});

External Playground

Try this endpoint interactively in Swagger UI:
https://api.grapevine.fyi/v1/docs