Reddit API Integration

September 17, 2025 ยท View on GitHub

Reddit platform integration module with OAuth2 authentication and complete Reddit API access functionality.

๐Ÿ”ง Authentication Setup

1. Get Reddit API Credentials

  1. Visit Reddit Apps
  2. Click "Create App" or "Create Another App"
  3. Fill in application information:
    • Name: Application name (e.g., PersonalizationMCP)
    • App type: Select "web app"
    • Description: Application description (optional)
    • About URL: About page URL (optional)
    • Redirect URI: http://localhost:8888/callback
  4. After creation, record the following information:
    • Client ID: Application ID (below the app name)
    • Client Secret: Client secret key

2. Configure Authentication

Add Reddit configuration to the config file in the project root directory:

# Reddit API Configuration
REDDIT_CLIENT_ID=your_client_id_here
REDDIT_CLIENT_SECRET=your_client_secret_here
REDDIT_REDIRECT_URI=http://localhost:8888/callback

3. OAuth2 Authentication Flow

Method 1: Using MCP Functions for Authentication

# 1. Setup OAuth2 authentication
setup_result = mcp_personalhub_setup_reddit_oauth(
    client_id="your_client_id",
    client_secret="your_client_secret"
)

# 2. Visit the returned authentication URL for authorization
# User needs to visit the auth URL in browser and authorize

# 3. Complete authentication (after getting authorization code)
complete_result = mcp_personalhub_complete_reddit_oauth(
    client_id="your_client_id",
    client_secret="your_client_secret",
    authorization_code="authorization_code_from_callback"
)

Method 2: Manual Configuration

If you already have valid access tokens, you can configure directly:

REDDIT_ACCESS_TOKEN=your_access_token
REDDIT_REFRESH_TOKEN=your_refresh_token

๐Ÿš€ Features

๐Ÿ“Š Account Information

  • User Overview: Get mixed timeline of posts and comments
  • Karma Breakdown: View karma distribution across subreddits
  • User Preferences: Get account settings and preferences
  • Trophies & Achievements: View Reddit trophies and achievements

๐Ÿ“ Content Management

  • Submitted Posts: Get all user-submitted posts
  • Comment History: View user's comment records
  • Saved Content: Get saved posts and comments
  • Hidden Posts: View hidden content
  • Voting Records: Get upvoted/downvoted content

๐Ÿ‘ฅ Community Interaction

  • Subscribed Subreddits: View followed communities
  • Moderated Communities: Get subreddits where user is moderator
  • Contributor Permissions: View subreddits with contributor access

๐Ÿ’ฌ Messaging System

  • Inbox: Get all messages
  • Unread Messages: View unread messages
  • Sent Messages: View sent message history

๐Ÿ› ๏ธ API Function List

Authentication Management

# Configuration status check
get_reddit_config()
test_reddit_credentials()

# OAuth2 authentication flow
setup_reddit_oauth(client_id, client_secret, redirect_uri?)
complete_reddit_oauth(client_id, client_secret, authorization_code, redirect_uri?)

# Token management
get_reddit_token_status()
refresh_reddit_token()
auto_refresh_reddit_token_if_needed()

User Information

# Basic information
get_user_subreddits(access_token?, limit=100)
get_user_trophies(access_token?)
get_user_preferences(access_token?)
get_user_karma_breakdown(access_token?)

# Community permissions
get_moderated_subreddits(access_token?, limit=100)
get_contributor_subreddits(access_token?, limit=100)

Content Retrieval

# Posts and comments
get_user_submitted_posts(username?, access_token?, limit=100, sort="new")
get_user_comments(username?, access_token?, limit=100, sort="new")
get_user_overview(username?, access_token?, limit=100, sort="new")

# Saved and interactions
get_saved_content(username?, access_token?, limit=100)
get_hidden_posts(username?, access_token?, limit=100)
get_upvoted_content(username?, access_token?, limit=100)
get_downvoted_content(username?, access_token?, limit=100)

Messaging System

# Message management (requires privatemessages scope)
get_inbox_messages(access_token?, limit=100)
get_unread_messages(access_token?, limit=100)
get_sent_messages(access_token?, limit=100)

๐Ÿ“‹ Usage Examples

Get User Activity Overview

# Get recent posts and comments
overview = get_user_overview(limit=20, sort="new")

# Get subscribed communities
subreddits = get_user_subreddits(limit=50)

# Get karma distribution
karma = get_user_karma_breakdown()

View Content History

# Get submitted posts
posts = get_user_submitted_posts(limit=10, sort="top")

# Get comment history
comments = get_user_comments(limit=10, sort="new")

# Get saved content
saved = get_saved_content(limit=20)

Check Messages

# Get inbox messages
inbox = get_inbox_messages(limit=10)

# Get unread messages
unread = get_unread_messages(limit=5)

๐Ÿ”’ Permission Scopes

Reddit API uses the following OAuth2 permission scopes:

  • identity: Access user basic information
  • read: Read user content and subscriptions
  • history: Access voting and hidden content history
  • privatemessages: Access private messages (optional, requires special permission)

โš ๏ธ Important Notes

API Limitations

  • Request Rate: Reddit API has strict rate limiting
  • Permission Requirements: Some features require specific OAuth permissions
  • Data Access: Can only access data for the currently authenticated user

Privacy Settings

  • User privacy settings may affect data retrieval
  • Some content may be inaccessible due to user settings
  • Private messaging functionality requires additional permission requests

Token Management

  • Access tokens are valid for 1 hour
  • Refresh tokens can be used to automatically update access tokens
  • Recommended to use auto_refresh_reddit_token_if_needed() for automatic token management

๐Ÿ” Troubleshooting

Common Issues

  1. 403 Forbidden Error

    • Check OAuth permission scopes
    • Verify token validity
    • Confirm user privacy settings
  2. Authentication Failure

    • Ensure Client ID and Secret are correct
    • Check redirect URI matches
    • Verify authorization code hasn't expired
  3. Empty Data Returns

    • May be due to user privacy setting restrictions
    • Check query parameters (username, limits, etc.)
    • Confirm user has relevant content

Debugging Tips

  • Use get_reddit_config() to check configuration status
  • Use test_reddit_credentials() to verify credentials
  • Check get_reddit_token_status() to understand token status