API Reference
The Plugged.in API provides programmatic access to manage MCP servers, documents, and platform features. All API endpoints are available in both the cloud platform and self-hosted installations.
Base URLs
- Cloud Platform
- Self-Hosted
- Local Development
Authentication
See the Authentication Guide for detailed information on obtaining and managing API keys.Quick Start
Include your API key in the request headers for all API calls:Public Endpoints
Only the following endpoints are accessible without authentication:GET /api/search- Public search (with rate limiting)GET /api/servers/{uuid}- Public server information (if server is public)GET /api/users/{username}- Public user profiles
Rate Limiting
API endpoints have different rate limits based on the operation type:API Endpoints
Search & Discovery
Search MCP Servers
This endpoint is public but has stricter rate limiting for unauthenticated requests. Authenticated requests get higher rate limits.
q(string, required) - Search querysource(string) - Filter by source:registry,community,allpackage(string) - Filter by package type:npm,docker,pypirepository(string) - Filter by repository sourcesort(string) - Sort results:relevance,recent,popularlimit(integer) - Results per page (default: 20, max: 100)offset(integer) - Pagination offset
MCP Servers
Get Server Details
Retrieve detailed information about a specific MCP server.Create MCP Server
Add a new MCP server to your profile.Documents API
List Documents
Get documents from your library.profileUuid(string, required) - Profile UUIDlimit(integer) - Results per page (default: 20)offset(integer) - Pagination offsetsearch(string) - Search querysource(string) - Filter by source:upload,ai_generated,api
Upload Document
Upload a document to your library.Search Documents
Semantic search across your document library.Collections API
Get Collections
Retrieve collections for a profile.Create Collection
Create a new collection of MCP servers.Update Collection
Update an existing collection’s metadata and server list.Delete Collection
Remove a collection and its associations.Registry API
Submit to Registry
Submit an MCP server to the official registry.- Must be authenticated with GitHub
- Must have repository ownership
- Valid package.json/Dockerfile/setup.py
Get Server Statistics
Get detailed statistics for a server.Registry Health Check
Check the status of the MCP registry.Registry API
Submit to Registry
Submit an MCP server to the official registry.- Must be authenticated with GitHub
- Must have repository ownership
- Valid package.json/Dockerfile/setup.py
Get Server Statistics
Get detailed statistics for a server.OAuth API
OAuth Sessions
Get all OAuth sessions for the authenticated user.Create OAuth Session
Initiate a new OAuth session for MCP server authentication.OAuth Callback
Handle OAuth provider callback with authorization code.Get OAuth Session
Retrieve details for a specific OAuth session.Delete OAuth Session
Revoke an OAuth session and associated tokens.User Management
Check Username Availability
Check if a username is available.Get User Profile
Get public user profile information.Update User Profile
Update the authenticated user’s profile information.Notifications API
Get Notifications
Retrieve notifications for the authenticated user.unread(boolean) - Filter unread onlylimit(integer) - Results per page (default: 20, max: 100)offset(integer) - Pagination offset
Mark as Read
Mark a notification as read.Delete Notification
Delete a notification permanently.Send Custom Notification (MCP Tool)
This is typically called via MCP tools, but can also be used via API.Embedded Chat API
Create Chat Session
Initialize a new embedded chat session.Send Message
Send a message in a chat session.Error Handling
All API endpoints return consistent error responses:Common Error Codes
Webhooks
Configure webhooks to receive real-time notifications about events in your Plugged.in account.Setting Up Webhooks
Register a Webhook Endpoint
List Webhooks
Update Webhook
Delete Webhook
Webhook Security
Signature Verification
All webhook payloads include a signature in theX-Pluggedin-Signature header for verification:
Supported Events
Webhook Payload Format
Webhook Retry Policy
Failed webhook deliveries are retried with exponential backoff:- 1st retry: After 1 minute
- 2nd retry: After 5 minutes
- 3rd retry: After 30 minutes
- 4th retry: After 2 hours
- 5th retry: After 12 hours
Testing Webhooks
Test Webhook Endpoint
Send a test event to your webhook:Analytics API
Get Trending Servers
Retrieve trending MCP servers based on activity and popularity.limit(integer) - Number of results (default: 20, max: 100)timeframe(string) - Time period:day,week,month(default: week)category(string) - Filter by category
Get Service Search Statistics
Get search analytics for service discovery.q(string) - Search query to analyzetimeframe(string) - Analysis period:day,week,month
Maintenance & Cron Jobs
OAuth PKCE State Cleanup
This endpoint is designed for external cron jobs to periodically clean up expired OAuth PKCE states. The cleanup also runs automatically in-process, so external cron is optional but recommended for production.
POST /api/oauth/cleanup-pkce
Authentication: Requires CRON_SECRET in Authorization header
Recommended Schedule: Every 10-15 minutes
- GitHub Actions
- Vercel Cron
- Linux Crontab
See the Maintenance Guide for complete setup instructions and best practices.
Webhook Best Practices
Always Verify Signatures
Always Verify Signatures
Never process webhooks without verifying the signature to ensure they’re from Plugged.in.
Respond Quickly
Respond Quickly
Return a 2xx status code within 5 seconds. Process webhook data asynchronously if needed.
Handle Duplicates
Handle Duplicates
Use the event ID to handle potential duplicate deliveries:
Monitor Webhook Health
Monitor Webhook Health
Check webhook delivery status regularly:
Support
- Documentation: docs.plugged.in
- GitHub Issues: Report bugs
- Email Support: api-support@plugged.in

